微机原理与接口技术(第二版) 清华大学出版社
CODE ENDS END START
9. 内存中以FIRST和SECOND开始的单元中分别存放着两个16位组合的十进制(BCD码)数,低位在前。编程序求这两个数的组合的十进制和,并存到以THIRD开始的单元。 答:
DATA SEGMENT
FIRST DD 34341212H SECOND DD 78785656H THIRD DB ?,?,?,?
DATA ENDS CODE SEGMENT
ASSUME CS:CODE,DS:DATA START:
MOV AX,DATA
MOV DS,AX LEA SI,FIRST LEA DI,SECOND LEA BX,THIRD MOV CX,4 CLC AGAIN:
MOV AL,BYTE PTR[SI]
MOV DL,BYTE PTR[DI] ADC AL,DL DAA
MOV BYTE PTR[BX],AL INC SI INC DI INC BX
LOOP AGAIN
JC AA
21
微机原理与接口技术(第二版) 清华大学出版社
MOV BYTE PTR[BX],0 JMP EXIT AA: EXIT:
MOV BYTE PTR[BX],1 MOV AH,4CH INT 21H
CODE ENDS END 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 DB '7591368024' CONT EQU $-MITAB BUFF DB 10 DUP (?),'$' YUANWEN DB 10 DUP (?),'$' DATA ENDS
CODE SEGMENT
ASSUME CS∶CODE,DS∶DATA START: MOV AX,DATA MOV DS,AX MOV SI,0 MOV CX,CONT INPUT: MOV
AH,1
INT 21H CMP AL,13 JZ EXIT
AND AL,0FH
MOV 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 JNZ NEXT INC DX NEXT:
INC SI
LOOP FIND MOV AH,4CH INT 21H CODE ENDS END START
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