📄 float.asm
字号:
DATA SEGMENT
X dw 0
Y dw 0
FLOAT1 db ' INPUT FIRST FLOAT with sign:','$'
FLOAT2 db 0ah,0dh,' INPUT SECOND FLOAT with sign:','$'
result1 db 0ah,0dh,'FLOAT1+FLOAT2: ','$'
result2 db 0ah,0dh,'FLOAT1-FLOAT2: ','$'
num db 6 dup(0),'$'
DATA ENDS
CODE SEGMENT
ASSUME DS:DATA,CS:CODE
START: mov AX,DATA
mov DS,AX
lea dx,FLOAT1
mov ah,09
int 21h
call DISBOX
mov X,bx
lea dx,FLOAT2
mov ah,09
int 21h
call DISBOX
mov Y,BX
lea dx,result1
mov ah,09h
int 21h
mov AX,X
add AX,Y
mov bx,ax
call DISPBX
lea dx,result2
mov ah,09h
int 21h
mov AX,X
SUB AX,Y
mov bx,ax
call DISPBX
mov ax,4c00h
int 21h
DISBOX PROC FAR
mov di,1
push AX
mov ah,01
int 21h
xor ah,ah
push ax
mov AX,0
LOOP1: push AX
LOOP2:
mov AH,01H
int 21H
cmp al,'.'
jz LOOP4
mov DX,0
mov DL,AL
pop AX
cmp DL,30H
jb exit1
cmp DL,39H
ja exit1
sub DL,30H
mov BX,0
mov BL,DL
mov CL,10
mul CL
add AX,BX
jmp Loop1
LooP3: push ax
inc di
Loop4: mov AH,01H
int 21H
mov DX,0
mov DL,AL
pop AX
cmp DL,30H
jb exit1
cmp DL,39H
ja exit1
sub DL,30H
mov BX,0
mov BL,DL
mov CL,10
mul CL
add AX,BX
jmp LOOP3
exit1: mov BX,AX
pop ax
cmp al,'-'
jne exit2
neg bx
exit2:
POP AX
ret
DISBOX ENDP
DISPBX PROC FAR
mov cx,di
test bx,8000h
jz next
mov dl,'-'
mov ah,02
int 21h
neg bx
next:
mov ax,bx
mov si,5
mov bx,10
lp1:
xor dx,dx
div bx
add dl,'0'
mov num[si],dl
dec si
dec cx
cmp cx,1
jnz lp2
mov dl,'.'
mov num[si],dl
dec si
lp2:
cmp si,0
jnz lp1
lp3: lea dx,num
mov ah,09
int 21h
ret
DISPBX ENDP
code ends
end start
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -