1.二进制双精度加法运算
本实验要求计算 X+Y=Z,将结果 Z 输出到屏幕,其中 X=001565A0H, Y=0021B79EH。
实验利用累加器 AX,先求低十六位和,并存入低址存储单元,后求高 16 位和,再存入高址存储单元。由于低位和可能向高位有进位,因而高位字相加语 句需用 ADC 指令,则低位相加有进位时,CF=1,高位字相加时,同时加上 CF 中的 1。在 80386 以上微机中可以直接使用 32 位寄存器和 32 位加法指令完成本 实验的功能。请画出程序流程图,根据流程图编写实验程序。
DATA SEGMENT
MES DB ' X+Y=$'
XL DW 65A0H
XH DW 0015H
YL DW 0B79EH
YH DW 0021H
DATA ENDS
CODE SEGMENT
ASSUME CS: CODE, DS:DATA
START: MOV АX, DATA
MOV DS, AX
MOV DX, OFFSET MES
MOV AH, 09H
INT 21H
MOV AX,XL
ADD AX,YL
MOV BX,AX
MOV AX,XH
ADC AX, YH
MOV CX,A
PUSH BX
PUSH CX
MOV DH,CH
CALL SHOW
POP CX
MOV DH, CL
CALL SHOW
pop cx
MOV DH, BH
CALL SHOW
PОP BX
MOV DH, BL
CALL SHOW
MOV AX, 4C00H
INT 21H
SHOW PROC NEAR
PUSH DX
MOV AL, DH
AND AL, OFOH
MOV CL,4
SHR AL, C
CMP AL, 0AH
JB C2
ADD AL, 07H
C2: ADD AL, 30H
MOV DL, AL
MOV AH, 02H
INT 21H
MOV AL, DH
AND AL, OFH
CMP AL, 0AH
JB C3
ADD AL, 07H
C3: ADD AL, 30H
MOV DL, AL
MOV AH, 02H
INT 21H
POP DX
RET
SHOW ENDP
CODE ENDS
END START
输出结果:x+y=00371D3E