第9章程序设计的一些编程技巧 LOPI:MOⅤAL,[BX MOV[BX],AH;表中插入位置后的元素后移 INCBⅩ MOV AH, BX MOV BX, AL INC BX DEC CX DEC CX JNZ LOPI JUST: INC LTH ;修改表长 SOP: RET STR ENDP CODE ENDS END START
第9章 程序设计的一些编程技巧 LOPI:MOV AL,[BX] MOV [BX],AH ;表中插入位置后的元素后移 INC BX MOV AH,[BX] MOV [BX],AL INC BX DEC CX DEC CX JNZ LOPI JUST: INC LTH ;修改表长 SOP: RET STR ENDP CODE ENDS END START
第9章程序设计的一些编程技巧 例9-4顺序查找法。 如果要査找的内容与表之间没有什么规律可循,则只好从 表首开始逐个比较、查找,即采用顺序查找( Sequential Search 的方法。顺序查找的查找过程为:从表中第n个记录开始,逐个 进行记录的关键字和给定值的比较,若某个记录的关键字和给 定值比较相等,则査找成功,找到所查记录;反之,若直至第 一个记录,其关键字和给定值都不等,则表明表中没有所查记 录,查找不成功
第9章 程序设计的一些编程技巧 例9-4 顺序查找法。 如果要查找的内容与表之间没有什么规律可循,则只好从 表首开始逐个比较、查找,即采用顺序查找(Sequential Search) 的方法。顺序查找的查找过程为:从表中第n个记录开始,逐个 进行记录的关键字和给定值的比较,若某个记录的关键字和给 定值比较相等,则查找成功,找到所查记录;反之,若直至第 一个记录,其关键字和给定值都不等,则表明表中没有所查记 录,查找不成功
第9章程序设计的一些编程技巧 设一组数据存放在内存以SSEG为首址的连续单元甲,用 DB定义,可描述如下: SSEG DB 40H, 79H, 24H, 30H, 33H, IAH, OEH 根据上述顺序查找的基本思想,可写出如下的程序: SEQ DATA SEGMENT SSeg DB 40H, 79H, 24h, 30h, 33H, IAH, OEH, 6DH,87H,9BH;定义数据表 XX DB ;设定待查找的元素 SEQ DATA ENDS
第9章 程序设计的一些编程技巧 设一组数据存放在内存以SSEG为首址的连续单元中,用 DB定义,可描述如下: SSEG DB 40H,79H,24H,30H,33H,1AH,0EH 根据上述顺序查找的基本思想,可写出如下的程序: SEQ_DATA SEGMENT SSEG DB 40H,79H,24H,30H,33H,1AH,0EH, 6DH,87H,9BH ;定义数据表 XX DB ? ;设定待查找的元素 SEQ_DATA ENDS
第9章程序设计的一些编程技巧 STACK SEGMENT PARA STACKSTACK DB 100 DUP(?) STACK ENDS SEQ CODE SEGMENT ASSUME CS: SEQ CODE, DS: SEQ DATA ASSUME ES: SEQ DATA, SS: STACK SEARCH PROC FAR START PUSH DS MOV AX, 0 PUSH AX MOv AX, SEQ DATA MOV DS, AX
第9章 程序设计的一些编程技巧 STACK SEGMENT PARA STACK 'STACK' DB 100 DUP(?) STACK ENDS SEQ_CODE SEGMENT ASSUME CS: SEQ_CODE,DS: SEQ_DATA ASSUME ES: SEQ_DATA,SS:STACK SEARCH PROC FAR START: PUSH DS MOV AX,0 PUSH AX MOV AX,SEQ_DATA MOV DS,AX
第9章程序设计的一些编程技巧 MOV ES, AX MOV AL, XX 设任给的数据元素在XX单元中 MOV CX, 10H ;取表长 MOV BX, OFFSET SSEG;BX指向表的首地址 MOV AH, 0 LOPI: CMP AL, BXI JE AT INC AH INCBⅩ LOOP LOP1 MOV AL,OFFH;若查找不到,OFFH送AI RET
第9章 程序设计的一些编程技巧 MOV ES,AX MOV AL,XX ;设任给的数据元素在XX单元中 MOV CX,10H ;取表长 MOV BX,OFFSET SSEG ;BX指向表的首地址 MOV AH,0 LOP1:CMP AL,[BX] JE AT INC AH INC BX L00P L0P1 MOV AL,0FFH ;若查找不到,0FFH送AL RET