汇编 32位无符号加法计算器
data segment
Num1L dw 0
Num1H dw 0
Num2L dw 0
Num2H dw 0
ANSL dw 0
ANSH dw 0
table db 30h,31h,32h,33h,34h,35h,36h,37h,38h,39h,41h,42h,43h,44h,45h,46h
Num dw 0
data ends
stack segment stack
dw 50 dup()
top label word
stack ends
code segment
main proc far
assume cs:code,ds:data,ss:stack
start:
mov ax,stack
mov ss,ax
mov sp,offset top
push ds
push 0
mov ax,data
mov ds,ax
call InputA
mov ah,02H
mov dl,10
int 21h
call InputB
mov bx,Num1L
mov ANSL,bx
mov bx,Num2L
mov cx,Num1H
mov ANSH,cx
mov cx,Num2H
add ANSL,bx
adc ANSH,cx
mov ah,02H
mov dl,10
int 21h
mov ax,ANSH
mov Num,ax
call Print
mov ax,ANSL
mov Num,ax
call Print
mov ah,02H
mov dl,10
int 21h
ret
main endp
InputA proc near
A:
mov ah,01h
int 21h
cmp al,0DH
jz endA
shl Num1H,4
mov bx,Num1L
and bx,0F000H
shr bx,12
add Num1H,bx
shl Num1L,4
mov ah,0
call deal
add Num1L,ax
jmp A
endA:
ret
InputA endp
InputB proc near
B:
mov ah,01h
int 21h
cmp al,0DH
jz endB
shl Num2H,4
mov bx,Num2L
and bx,0F000H
shr bx,12
add Num2H,bx
shl Num2L,4
mov ah,0
call deal
add Num2L,ax
jmp B
endB:
ret
InputB endp
deal proc near
cmp al,'9'
jbe Digt
jmp Word
Digt:
sub al,'0'
jmp ASCII
Word:
sub al,'A'-10
jmp ASCII
ASCII:
ret
deal endp
Print proc near
mov cx,4
NEW:
mov bx,Num
and bx,0F000H
shr bx,12
mov dl,table[bx]
mov ah,02H
int 21h
shl Num,4
loop NEW
ret
Print endp
code ends
end start
By-Round Moon