微机实验 2.4运算类编程实验

问题描述:
二进制双精度加法运算
本实验要求计算X+Y=Z,将结果Z输出到屏幕,其中X=001565A0H,Y=0021B79EH
实验利用累加器AX,先求低十六位和,并存入低址存储单元,后求高16位和,再存入高址存储单元。由于低位和可能向高位有进位,因而高位字相加语句需要ADC 指令,则低位相加有进位时,CF=1,高位字相加时,同时加上CF中的1。在80386以上微机中可以直接使用32位寄存器和32位加法指令完成本实验的功能。
代码如下:
STACK1 SEGMENT STACK
DW 20 DUP(?)
STACK1 ENDS
DATA SEGMENT
XL DW 65A0H
XH DW 0015H
YL DW 0B79EH
YH DW 0021H
ZL DW ?
ZH DW ?
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START:MOV AX,DATA
MOV DS,AX
MOV AX,XL
ADD AX,YL ;X低位加Y低位
MOV ZL,AX ;低位和存到Z的低位
MOV CL,8
ROL AX,CL
MOV AX,XH
ADC AX,YH ;X高位加Y高位,带进位加
MOV ZH,AX ;存高位结果到Z的高位
MOV AX,ZH
CALL DISP4
MOV AX,ZL
CALL DISP4
INT 20H
DISP4 PROC NEAR
PUSH BX
PUSH CX
PUSH DX
PUSH AX
MOV AL,AH
CALL DISP2
POP AX
CALL DISP2
POP DX
POP CX
POP BX
RET
DISP4 ENDP
DISP2 PROC NEAR
MOV BL,AL
MOV DL,AL
MOV CL,4
ROL DL,CL
AND DL,0FH
CALL DISP1
MOV DL,BL
AND DL,0FH
CALL DISP1
RET
DISP2 ENDP
DISP1 PROC
OR DL,30H
CMP DL,3AH
JB DDD
ADD DL,07H
DDD: MOV AH,2
INT 21H
RET
DISP1 ENDP
CODE ENDS
END START

猜你喜欢

转载自blog.csdn.net/weixin_51063573/article/details/109151510