微机原理与接口技术(第二版)
清华大学出版社
CODE
ENDS START
END
9. 内存中以 FIRST 和 SECOND 开始的单元中分别存放着两个 制 (BCD 码)数,低位在前。编程序求这两个数的组合的十进制和 开始的单元。 答:
16 位组合的十进 ,并存到以 THIRD
DATA SEGMENT
FIRST DD
34341212H
SECOND
DD DB
78785656H ?,?,?,?
THIRD
DATA CODE
ENDS
SEGMENT
CS:CODE,DS:DATA MOV MOV LEA LEA LEA MOV CLC MOV MOV ADC DAA MOV INC INC INC LOOP JC AA
SI DI BX
AGAIN
ASSUME START:
AX,DATA DS,AX SI,FIRST DI,SECOND BX,THIRD CX,4
AGAIN:
AL,BYTE PTR[SI] DL,BYTE PTR[DI] AL,DL
BYTE PTR[BX],AL
21
微机原理与接口技术(第二版)
清华大学出版社
MOV
BYTE PTR[BX],0 EXIT
JMP
AA: MOV BYTE PTR[BX],1
EXIT:MOV AH,4CH INT
21H
CODE END
ENDS START
10. 编写一段程序,接收从键盘输入的 10 个数,输入回车符表示结束,然后将这些数加密后存于 BUFF 缓冲区中。加密表如下 :
输入数字 : 0,1,2,3,4,5,6,7,8,9; 密码数字 : 7,5,9,1,3,6,8,0,
2,4。
答:
DATA
SEGMENT MITAB CONT
DB EQU
DB
'7591368024'
$-MITAB
BUFF
10 DUP (?),'$' DB 10 DUP (?),'$'
YUANWEN
DATA
ENDS
SEGMENT
CODE
ASSUME CS∶ CODE, DS∶ DATA
START: MOV
AX ,DATA
DS,AX SI,0
CX ,CONT AH ,1 21H
AL ,13
MOV MOV MOV
INPUT:
MOV INT CMP
JZ EXIT AND MOV
AL ,0FH
YUANWEN[SI] ,AL
22
微机原理与接口技术(第二版)
清华大学出版社
INC
SI LOOP
INPUT
EXIT : LEA
BX ,MITAB
MOV CX,SI MOV SI,0
JIAMI: MOV
AL ,YUANWEN[SI]
XLAT
MITAB
MOV
BUFF[SI] ,AL
INC
SI
LOOP JIAMI MOV
AH,
4CH
INT
21H
CODE
ENDS
END
START
11. 试编程序,统计由 40000H开始的 16K个单元中所存放的字符“ A”的个数,
并将结果存放在 DX中。
答:
DATA
SEGMENT DA1
DB
'A'
BUFF DB
4000H DUP(?)
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA START:
MOV AX,4000H MOV DS,AX MOV BX,0
MOV
CX,4000H FIND:
MOV AL,[BX]
MOV
BL,DA1
23
微机原理与接口技术(第二版)
清华大学出版社
CMP
AL,BL NEXT DX
SI
JNZ
INC
NEXT:
INC
LOOP MOV
FIND AH,4CH
INT 21H
CODE
ENDS START
END
12. 在当前数据段 (DS),偏移地址为 DATAB 开始的顺序 80 个单元中,存放着 某班 80 个同学某门考试成绩。按如下要求编写程序
:
(1) 编写程序统计≥ 90 分 ; 80 分~ 89 分 ; 70 分~ 79 分 ; 60 分~ 69 分,< 60 分的
人数各为多少,并将结果放在同一数据段、偏移地址为 BTRX 开始的顺序单元中。
(2) 试编程序,求该班这门课的平均成绩为多少, 并放在该数据段的 AVER 单元中。 答:
DATA SEGMENT
BUFF DW 80 DUP(?) DA9 DB 0
DA8 DB 0 DA7 DB 0 DA6 DB 0 DA5 DB 0 AVER DB 0
DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA
START:
MOV AX,DATA
MOV DS,AX
24