📄 012.asm
字号:
;
datarea segment
number1 db '0123456789z-'
number2 db '+-*/'
flower db 'The number of divisor you have put couldnot be zero.',13,10,'$'
input db ?
input1 db ?
input2 db ?
input3 db ?
input4 db ?
enter db 13,10,'$'
high_div db ?
low_div db ?
symbol db ' '
datarea ends
;
code segment
assume cs:code,ds:datarea
;
main proc far
start:
push ds
sub ax,ax
push ax
mov ax,datarea
mov ds,ax
mov es,ax
mess:
call far ptr buffer
mov cx,12d
lea di,number1
cld
repnz scasb
jnz mess
cmp al,7ah
jz finish1
mov dl,al
mov ah,02h
int 21h
cmp al,2Dh
jz data1
sub al,30h
mov input1,al
jmp mess1
data1:
call far ptr buffer
mov cx,11d
lea di,number1
cld
repnz scasb
jnz data1
cmp al,7ah
jz finish1
mov dl,al
mov ah,02h
int 21h
sub al,30h
neg al
mov input1,al
jmp mess1
finish1:
jmp finish
mess1:
call far ptr buffer
cmp al,7ah
jz finish1
mov cx,4d
lea di,number2
cld
repnz scasb
jnz mess1
mov input2,al
mov dl,al
mov ah,02h
int 21h
mess2:
call far ptr buffer
cmp al,7ah
jz finish1
cmp al,28h
jz data2
lea di,number1
mov cx,10d
cld
repnz scasb
jnz mess2
mov dl,al
mov ah,02h
int 21h
sub al,30h
mov input3,al
jmp mess4
data2:
mov dl,al
mov ah,02h
int 21h
mess3:
call far ptr buffer
cmp al,7ah
jz finish1
cmp al,2dh
jnz mess3
mov dl,al
mov ah,02h
int 21h
mess31:
call far ptr buffer
cmp al,7ah
jz finish1
mov cx,10d
lea di,number1
cld
repnz scasb
jnz mess31
mov dl,al
mov ah,02h
int 21h
sub al,30h
neg al
mov input3,al
jmp mess4
finish:
ret
mess4:
call far ptr buffer
cmp al,7ah
jz finish
cmp al,29h
jz data4
cmp al,3dh
jnz mess4
mov dl,al
mov ah,02h
int 21h
jmp mess5
data4:
mov dl,al
mov ah,02h
int 21h
mess41:
call far ptr buffer
cmp al,7ah
jz finish
cmp al,3dh
jnz mess41
mov dl,al
mov ah,02h
int 21h
mess5:
mov al,input2
cmp al,2dh
jz dec001
cmp al,2ah
jz plus1
cmp al,2fh
jz dec1
mov al,input1
add al,input3
mov bl,al
cmp bl,0
jge together4
mov dl,2dh
mov ah,02h
int 21h
neg bl
jmp together
dec001:
mov al,input1
sub al,input3
mov bl,al
jmp plus11
plus1:
mov al,input1
mov bl,input3
imul bl
mov bl,al
cmp bl,0
jge together3
neg bl
mov dl,2Dh
mov ah,02h
int 21h
jmp together
plus11:
cmp bl,0
jge together3
neg bl
mov dl,2Dh
mov ah,02h
int 21h
jmp together
dec1:
mov al,input3
cmp al,0h
jz flower1
mov al,input1
cbw
mov bl,input3
idiv bl
mov cl,ah
mov bl,al
cmp bl,0h
jge dec12
neg bl
mov dl,'-'
mov ah,02h
int 21h
jmp dec12
together4:
jmp together3
dec12:
add bl,30h
mov dl,bl
mov ah,02h
int 21h
mov dl,20h
mov ah,02h
int 21h
cmp cl,0h
jge dec13
neg cl
mov dl,2Dh
mov ah,02h
int 21h
jmp dec14
together3:
jmp together
dec13:
cmp cl,0h
jz miss10
dec14:
add cl,30h
mov dl,cl
mov ah,02h
int 21h
lea dx,enter
mov ah,09h
int 21h
jmp near ptr mess
flower1:
lea dx,enter
mov ah,09h
int 21h
lea dx,flower
mov ah,09h
int 21h
lea dx,enter
mov ah,09h
int 21h
jmp near ptr mess
together:
mov ah,0
mov al,bl
mov bl,10d
div bl
mov high_div,al
mov low_div,ah
cmp al,1
jl together1
add al,30h
mov dl,al
mov ah,02h
int 21h
together1:
mov al,low_div
add al,30h
mov dl,al
mov ah,02h
int 21h
miss10:
lea dx,enter
mov ah,09h
int 21h
jmp near ptr mess
main endp
;
buffer proc far
mov ah,07h
int 21h
ret
buffer endp
;
code ends
end start
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -