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