浮点数相加的问题 输出居然是乱码 求助
DATA SEGMENTBUF1 DD 240744BAH
BUF2 DD 8462C4C5H
S1 DB 0
S2 DB 0
E1 DW 0
E2 DW 0
BUF3 DD ?
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START:MOV AX,DATA
MOV DS,AX
MOV SI,WORD PTR BUF1
MOV BX,WORD PTR BUF1+2
MOV DI,WORD PTR BUF2
MOV DX,WORD PTR BUF2+2
;以下分离被加数符号、阶码、尾数
SHL SI,1
ADC BYTE PTR S1,0
MOV CL,8
ROL SI,CL
AND SI,0FFH
SUB SI,127
MOV E1,SI
MOV AX,SI
MOV SI,WORD PTR BUF1
AND SI,07FH
OR SI,80H
;以下分离加数符号,阶码,尾数
SHL DI,1
ADC BYTE PTR S2,0
MOV CL,8
ROL DI,CL
AND DI,0FFH
SUB DI,127
MOV E2,DI
MOV CX,DI
MOV DI,WORD PTR BUF2
AND DI,07FH
OR DI,80H
;以下对阶,将阶码小者尾数右移至阶码相同
CMP AX,CX
JZ FADD4
JNC FADD2
SUB CX,AX
FADD1:SHR SI,1
RCR BX,1
LOOP FADD1
JMP FADD4
FADD2:SUB AX,CX
MOV CX,AX
FADD3:SHR DI,1
RCR DX,1
LOOP FADD3
;阶码相同情况下判断有无有一个数为0的情况
FADD4:PUSH SI
OR SI,BX
POP SI
JZ FADD5
PUSH DI
OR DI,DX
POP DI
JAE FADD6
MOV AX,WORD PTR BUF1
MOV BX,WORD PTR BUF1+2
JMP EXIT1
FADD5:MOV AX,WORD PTR BUF2
MOV BX,WORD PTR BUF2+2
JMP EXIT1
;进行符号分析
FADD6:MOV AL,S1
CMP AL,S2
JZ FADD14
CMP SI,DI
JZ FADD13
JAE FADD10
FADD7: SUB DI,SI
SBB DX,BX
MOV BX,DX
MOV AX,WORD PTR BUF2
AND AX,0FF80H
FADD8:TEST DI,80H
JNZ FADD9
MOV CX,23
SHL BX,1
RCL DI,1
SUB AX,80H
LOOP FADD8
FADD9:AND DI,07FH
ADD AX,DI
JMP EXIT1
;被加数大时的处理
FADD10:SUB SI,DI
SBB BX,DX
MOV AX,WORD PTR BUF1
AND AX,0FF80H
FADD11:TEST SI,80H
JNZ FADD12
MOV CX,23
SHL BX,1
RCL SI,1
SUB AX,80H
LOOP FADD11
FADD12:AND SI,7FH
ADD AX,SI
JMP EXIT1
FADD13:CMP BX,DX
JAE FADD7
JNZ FADD10
MOV AX,0
MOV BX,0
JMP EXIT1
;处理符号相同的情况
FADD14:ADD BX,DX
ADC SI,DI
MOV AX,WORD PTR BUF1
AND AX,0FF80H
TEST SI,80H
JZ FADD15
SHR SI,1
RCR BX,1
ADD AX,80H
FADD15:AND SI,7FH
ADD AX,SI
EXIT1:MOV WORD PTR BUF3,AX
MOV WORD PTR BUF3+2,BX
LEA DX,OFFSET WORD PTR BUF3
MOV AH,09
INT 21H
MOV AH,4CH
INT 21H
CODE ENDS
END START