1.要求:从键盘输入两个一位十进制数,计算这两个数之和,并将结果在屏幕上显示出来。
DATA SEGMENT
INFOR1 DB "Please Input the First Data(<10):$"
INFOR2 DB 0AH,0DH,"Please Input the Second Data(<10):$"
INFOR3 DB 0AH,0DH,"The Result is:$"
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START:
MOV AX,DATA
MOV DS,AX
MOV DX,OFFSET INFOR1
MOV AH,9
INT 21H
MOV AH,1
INT 21H
SUB AL,30H
MOV BL,AL
MOV DX,OFFSET INFOR2
MOV AH,9
INT 21H
MOV AH,1
INT 21H
SUB AL,30H
MOV CL,AL
XOR AH,AH
ADD AL,BL
AAA
PUSH AX
MOV DX,OFFSET INFOR3
MOV AH,9
INT 21H
ADD BL,30H
MOV DL,BL
MOV AH,2
INT 21H
MOV DL,'+'
;MOV AH,2
INT 21H
ADD CL,30H
MOV DL,CL
;MOV AH,2
INT 21H
MOV DL,'='
;MOV AH,2
INT 21H
POP AX
MOV DL,AH
ADD DL,30H
PUSH AX
MOV AH,2
INT 21H
POP AX
MOV DL,AL
ADD DL,30H
MOV AH,2
INT 21H
MOV AH,4CH
INT 21H
CODE ENDS
END START
2. 设a,b,c,d为四个压缩型BCD数,它们被存放在内存dbcd开始的4个存储单元中,计算a+b+c+d,并将结果在屏幕上显示出来(注意压缩型BCD数的表示方法:十进制数38表示成压缩型BCD数时应写成38H)。程序编写完成并运行正确后,打开源程序,改变a,b,c,d的内容,然后重新进行汇编、连接并运行程序,检查程序运行结果与手工计算结果是否相符。下面给出几组实验用数据:
(1) a=11, b=23, c=25, d=31
(2) a=10, b=20, c=30, d=40
(3) a=45, b=45, c=45, c=45
(4) a=88, b=99, c=77, d=66
(注意压缩型BCD数的表示方法:十进制数38表示成压缩型BCD数时应写成38H)
CODE SEGMENT
ASSUME CS:CODE
START:
MOV AX,0DBCDH
MOV DS,AX
; MOV DS:[0],BYTE PTR 11H
; MOV DS:[1],BYTE PTR 23H
; MOV DS:[2],BYTE PTR 25H
; MOV DS:[3],BYTE PTR 31H
MOV DS:[0],BYTE PTR 10H
MOV DS:[1],BYTE PTR 20H
MOV DS:[2],BYTE PTR 30H
MOV DS:[3],BYTE PTR 40H
; MOV DS:[0],BYTE PTR 45H
; MOV DS:[1],BYTE PTR 45H
; MOV DS:[2],BYTE PTR 45H
; MOV DS:[3],BYTE PTR 45H
; MOV DS:[0],BYTE PTR 88H
; MOV DS:[1],BYTE PTR 99H
; MOV DS:[2],BYTE PTR 77H
; MOV DS:[3],BYTE PTR 66H
MOV DH,0
MOV CX,4
MOV BX,0
MOV AL,0
A: ADD AL,[BX]
DAA
INC BX
JC S
LOOP A
JNC B ;USE S TO JMP->B
S:
INC DH
OR DH,DH ;CF=0
LOOP A
B: PUSH AX
ADD DH,30H
MOV DL,DH
MOV AH,2
INT 21H
POP AX
PUSH AX
SAR AL,1
SAR AL,1
SAR AL,1
SAR AL,1
AND AL,0FH
ADD AL,30H
MOV DL,AL
MOV AH,2
INT 21H
POP AX
AND AL,0FH
ADD AL,30H
MOV DL,AL
MOV AH,2
INT 21H
MOV AH,4CH
INT 21H
CODE ENDS
END START
3.要求:从键盘输入两个一位十进制数,计算这两个数之积,并将结果在屏幕上显示出来。
DATA SEGMENT
INFOR1 DB "Please Input the First Data(<10):$"
INFOR2 DB 0AH,0DH,"Please Input the Second Data(<10):$"
INFOR3 DB 0AH,0DH,"The Result is:$"
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START:
MOV AX,DATA
MOV DS,AX
MOV DX,OFFSET INFOR1
MOV AH,9
INT 21H
MOV AH,1
INT 21H
SUB AL,30H
MOV BL,AL
MOV DX,OFFSET INFOR2
MOV AH,9
INT 21H
MOV AH,1
INT 21H
SUB AL,30H
MOV CL,AL
XOR AH,AH
MUL BL
AAM
PUSH AX
MOV DX,OFFSET INFOR3
MOV AH,9
INT 21H
ADD BL,30H
MOV DL,BL
MOV AH,2
INT 21H
MOV DL,'*'
;MOV AH,2
INT 21H
ADD CL,30H
MOV DL,CL
;MOV AH,2
INT 21H
MOV DL,'='
;MOV AH,2
INT 21H
POP AX
MOV DL,AH
ADD DL,30H
PUSH AX
MOV AH,2
INT 21H
POP AX
MOV DL,AL
ADD DL,30H
MOV AH,2
INT 21H
MOV AH,4CH
INT 21H
CODE ENDS
END START