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

📄 jisuanqi.asm

📁 计算器 可实现+-*/等功能 支持负数操作
💻 ASM
字号:
include C:\fen.mac
DATAS SEGMENT
   opr1 dw ?
   opr2 dw ?
   sum  dw ?
   sum2 dw ?
   fuhao  db ?
   lap db ?
   tap db ?
   tap2 db ?
   biaoji db ?
   messg1 db 'Please input the expression:',13,10,'$'
   messg2 db 13,10,'Input error!',13,10,'$'
DATAS ENDS
CODES SEGMENT
    ASSUME CS:CODES,DS:DATAS
START:
    MOV AX,DATAS
    MOV DS,AX
here:lea dx,messg1
    mov ah,9
    int 21h
    mov si,0
    mov di,0
    mov cx,10
    mov bl,0
input:mov ah,1
      int 21h
      cmp al,'+'
      jz store
      cmp al,'-'
      jnz jixu
      inc bl
      mov tap,bl
      cmp biaoji,1   ;换?
      jz store
      cmp bl,1
      jz input
jixu: push bx
      cmp al,'*'
      jz store
      cmp al,'/'
      jz store
      cmp al,30h
      jl exit1
      cmp al,39h
      jg exit1
      mov bl,1
      mov biaoji,bl
      sub al,30h
      mov ah,0
      mov bx,sum
      mov opr1,bx
      add opr1,ax   
      mov ax,opr1
      mul cx
      mov sum,ax
      pop bx
      jmp input
store:mov fuhao,al
       mov bl,0
input2:mov ah,1
       int 21h
       cmp al,'-'
       jnz jixu2
       inc bl
       mov tap2,1
       cmp bl,1
       jz input2
jixu2: cmp al,'='
       jz jisuan
       cmp al,30h
       jl exit
       cmp al,39h
       jg exit
       sub al,30h
       mov ah,0
       mov bx,sum2
       mov opr2,bx
       add opr2,ax   
       mov ax,opr2
       mul cx
       mov sum2,ax
       jmp input2 
jisuan:mov bl,fuhao
       cmp bl,'+'
       jz jiafa
       cmp bl,'-'
       jz jianfa
       cmp bl,'*'
       jz chengfa
       cmp bl,'/'
       jz chufa  
 jiafa:mov ax,opr1
       mov bx,opr2
       mov cl,tap
       mov ch,tap2
       add cl,ch
       cmp cl,2
       jz jiafa1
       cmp cl,1
       jz jiafa2
       add ax,bx
       fen ax
       jmp exit
jiafa1:add ax,bx
       push ax
       mov ah,02
       mov dl,'-'
       int 21h
       pop ax
       fen ax    
       jmp exit
jiafa2:mov cl,tap
       cmp cl,1
       jnz jiafa4
jiafa3:cmp ax,bx
       ja opr1dayuopr2
       xchg ax,bx
       sub ax,bx 
       fen ax
       jmp exit
 opr1dayuopr2:push ax
              mov ah,02
              mov dl,'-'
              int 21h
              pop ax
              sub ax,bx
              fen ax
              jmp exit
jiafa4:cmp ax,bx
       ja x1
       xchg ax,bx
       push ax
       mov ah,02
       mov dl,'-'
       int 21h
       pop ax
       sub ax,bx
       fen ax
       jmp exit  
   x1:  sub ax,bx
       fen ax
       jmp exit                    
jianfa:mov ax,opr1
       mov bx,opr2
       mov cl,tap
       mov ch,tap2
       add cl,ch
       cmp cl,3
       jz jianfa1
       cmp cl,2
       jz jianfa2
       cmp cl,1
       jz jianfa3
       cmp ax,bx
       ja x3
       xchg ax,bx
       push ax
       mov ah,02
       mov dl,'-'
       int 21h
       pop ax
 x3:   sub ax,bx
       fen ax
       jmp exit
jianfa1:cmp ax,bx
        ja x2
        xchg ax,bx
        sub ax,bx
        fen ax
        jmp exit
     x2:push ax
        mov ah,02
        mov dl,'-'
        int 21h
        pop ax
        sub ax,bx
        fen ax
        jmp exit
jianfa2:mov cl,tap2
        cmp cl,1
        jnz x6
        add ax,bx
        fen ax
        jmp exit
  x6:   add ax,bx
        push ax
        mov ah,02
        mov dl,'-'
        int 21h
        pop ax
        fen ax
        jmp exit
jianfa3:mov cl,tap
        cmp cl,1
        jz x4
        add ax,bx
        fen ax
        jmp exit 
     x4:cmp ax,bx
        ja x5
        xchg ax,bx
        sub ax,bx
        push ax
        mov ah,02
        mov dl,'-'
        int 21h
        pop ax
        fen ax
        jmp exit
     x5:sub ax,bx
        fen ax  
        jmp exit                                    
chengfa:mov cl,tap
        mov ch,tap2
        add cl,ch
        cmp cl,0
        jz x7
        cmp cl,2
        jz x7
        mov ah,02
        mov dl,'-'
        int 21h
   x7:  mov ax,opr1
        mov cx,opr2
        mul cx
        fen ax
        jmp exit
 chufa: mov cl,tap
        mov ch,tap2
        add cl,ch
        cmp cl,0
        jz x8
        cmp cl,2
        jz x8
        mov ah,02
        mov dl,'-'
        int 21h
  x8:  mov dx,0
       mov ax,opr1
       mov cx,opr2
       div cx
       push dx
       fen ax
       pop dx
       cmp dx,0
       jz exit
       push dx
       mov ah,02
       mov dl,'.'
       int 21h
       pop dx
       mov cx,5
 lop:  mov ax,dx
       mov bx,10
       mul bx
       mov bx,opr2
       div bx
       push dx
       add al,30h
       mov ah,02
       mov dl,al
       int 21h
       pop dx
       loop lop
       jmp exit  
exit1: lea dx,messg2
       mov ah,9
       int 21h
       jmp here                                           
exit: MOV AH,4CH
      INT 21H
CODES ENDS
    END START

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -