⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 012.asm

📁 一位计算器 有加法减法乘法和除法 不能计算两位
💻 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 + -