微机原理与接口技术(第二版) 清华大学出版社
MOV AH,55H NEXT1: MOV byte ptr[BX],AH INC BX LOOP NEXT1
MOV BX,0000H MOV CX,0C000H MOV AL,81H NEXT2: MOV AH, [BX] CMP AH,55H JNZ EXIT INC BX LOOP NEXT2 MOV AL,7EH EXIT: MOV AH,4CH INT 21H CODE ENDS END START
6. 在当前数据段4000H开始的128个单元中存放一组数据,试编程序将它们顺序搬移到A000H开始的顺序128个单元中,并将两个数据块逐个单元进行比较; 若有错将BL置00H; 全对则将BL置FFH,试编程序。 答:
DATA SEGMENT ORG 400H
DA1 DB 128 DUP(?) ORG 0A00H
DA2 DB 128 DUP(?) DATA ENDS CODE SEGMENT
ASSUME CS:CODE,DS:DATA,ES:DATA START: MOV AX,DATA MOV DS,AX
17
微机原理与接口技术(第二版) 清华大学出版社
LEA SI,DA1 LEA DI,DA2 MOV CX,128 AGAIN: MOV AL,[SI] INC SI INC DI LOOP AGAIN LEA SI, DA1 LEA DI, DA2 MOV CX,128 NEXT: MOV AL,[SI] MOV BL,[DI] CMP AL,BL JNZ ERROR INC SI INC DI MOV BL,0FFH LOOP NEXT JMP EXIT ERROR: MOV BL,00H EXIT: MOV AH,4CH INT 21H CODE ENDS END START
7. 设变量单元A、B、C存放有3个数,若3个数都不为零,则求3个数的和,存放在D中; 若有一个为零,则将其余两个也清零,试编写程序。 答:
DATA SEGMENT A DB ? B DB ?
18
微机原理与接口技术(第二版) 清华大学出版社
C DB ? DATA ENDS CODE SEGMENT
ASSUME CS:CODE,DS:DATA START: MOV AX,DATA MOV DS,AX CMP A,00H JNZ LP1 MOV B,0 MOV C,0 JMP LP4 LP1: CMP B,00H JNZ LP2 MOV A,0 MOV C,0 JMP LP4 LP2: CMP C,00H JNZ LP3 MOV A,0 MOV B,0 JMP LP4 LP3: MOV AL,A ADD AL,B ADD AL,C MOV AH,4CH LP4: INT 21H CODE ENDS END START
8. 有一个100个字节的数据表,表内元素已按从大到小的顺序排列好,现给定一元素,试编程序在表内查找,若表内已有此元素,则结束; 否则,按顺序将此元素插入表中适当的位置,并修改表长。
19
微机原理与接口技术(第二版) 清华大学出版社
答:
DATA SEGMENT
BUFF DB 100 DUP(?) DA1 DB (?) LENGTH DB 0 DATA ENDS CODE SEGMENT
ASSUME CS:CODE,DS:DATA START: MOV AX,DATA MOV DS,AX MOV SI,0 MOV AL,DA1 MOV CX,100 FIND0: CMP BUFF[SI],AL JZ EXIT INC SI LOOP FIND0 MOV DI,99 MOV SI,0
COMPARE: CMP BUFF[DI],AL JG INSERT MOV BL,BUFF[DI] MOV BUFF[DI+1],BL DEC DI CMP DI,SI JNL COMPARE JMP EXIT INSERT:
MOV BUFF[DI+1],AL MOV LENGTH , 101
EXIT: MOV AH,4CH
INT 21H
20