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

📄 runian.asm

📁 用汇编编的
💻 ASM
字号:
fuhao macro
      local cufuhao
      cmp al,'*'
      jz cunfuhao
      cmp al,'/'
      jz cunfuhao
      cmp al,'+'
      jz cunfuhao
      cmp al,'-'
      jz cunfuhao
      sub al,al
cunfuhao:
      
      mov op2,al
    ENDM

STACK SEGMENT PARA STACK 'STACK'
        DW 128 DUP(?)
STACK ENDS
;**************************************************************

EXTRA SEGMENT PARA 'EXTRA'

EXTRA ENDS
;**************************************************************

DATA SEGMENT PARA 'DATA'
op1    dw 0
op2    db 0

ten    db 10
wten   dw 10
Str    db 13,10,'error!',13,10,'$'
DATA ENDS
;**************************************************************

CODE SEGMENT PARA 'CODE'
    ASSUME CS:CODE,DS:DATA,SS:STACK,ES:EXTRA
MAIN PROC FAR
START:
        MOV AX,DATA
        MOV DS,AX  ;Let DS register have data segment address
        MOV AX,EXTRA
        MOV ES,AX  ;Let ES register have extra segment address
;**************************************************************

   get1:sub bx,bx
        sub cx,cx 
        sub dx,dx
        mov ah,01
        int 21H
        cmp al,1bH
        JZ quit2
        cmp al,30H
        JB error
        cmp al,39H
        JA error
   ;get2:
        sub al,30H
        sub ah,ah
        mov bx,ax
    get2:
        mov ah,01
        int 21H
        cmp al,30H
        JB yusuanfu
        cmp al,39H
        JA yusuanfu
        sub al,30H
        mov cl,al
        mov ax,bx
        mul wten
        mov bx,ax
        sub ch,ch
        add bx,cx
        jmp get2
yusuanfu:
        mov op1,bx
        fuhao
        cmp al,0
        jz  error
        sub bx,bx 
   get3:
        mov ah,01
        int 21H
        cmp al,'='
        jz yusuan
        cmp al,30H
        JB error
        cmp al,39H
        JA error
        sub al,30H
        mov cl,al
        mov ax,bx
        mul wten
        mov bx,ax
        sub ch,ch
        add bx,cx
        jmp get3
 yusuan: 
         mov ax,op1                
         mov cl,op2
         cmp cl,'+'
         jnz jian
         add ax,bx
         jmp quit
    jian:
         cmp cl,'-'
         jnz cheng
         sub ax,bx
         jmp quit
    cheng:
         cmp cl,'*'
         ;mov ax,bx
         jnz chu
         mul bx
         jmp quit
    chu:
         cmp cl,'/'
         ;mov bx,ax        
         sub dx,dx
         div bx
         jmp quit
   error:
         lea dx,Str
         mov ah,09
         int 21H 
         JMP get1
   quit: 
         mov bx,ax
         sub dx,dx
         div wten
         mov cl,dl;个位数
         
         div ten;
         mov ch,ah;十位数
         sub ah,ah
         div ten;ah 百位数,al千位数
         mov bh,al
         mov bl,ah
         mov dl,bh
         add dl,30H
         mov ah,02
         int 21h
         mov dl,bl
         add dl,30H
         int 21h
         mov dl,ch
         add dl,30H
         int 21H
         mov dl,cl
         add dl,30H
         int 21H
         mov dl,13
         int 21H
         mov dl,10
         int 21H
         jmp get1
   quit2:
         mov ax,4c00H
         int 21H
     MAIN endp
     CODE ends
     end START

         
             
                                   

⌨️ 快捷键说明

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