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

📄 yfh.asm

📁 此为c语言的加减乘除算法
💻 ASM
字号:
dat segment
    a db 10 dup(0)
    b db 10 dup(0)
  
    y db 10 dup(0) 
    x db 11 dup(0) 
    z db 20 dup(0) 
    c db 20 dup(0)
    d db ?
    e db "shu ru 10 weiyi nei de  si ze yun suan: ",0ah,0dh,"$"
    f db "shu ru cuo wu, qing cong xin$"
    g db "hai yao ji xu yun suan ma(y/n)[n]?$"
dat ends
cod segment
    assume cs:cod,ds:dat
start:
    mov ax,dat
    mov ds,ax                     
begin:   
    mov ah,9                    
    lea dx,e
    int 21h                        
    mov cx,10
    mov bx,0
ql:
    mov a[bx],0
    mov b[bx],0
    mov y[bx],0
    mov x[bx],0
    mov [z+10][bx],0
    mov [c+10][bx],0
    inc bx
    loop ql
    mov x+10,0
    mov cx,10
    mov bx,0
 ql2:
    mov z[bx],0
    mov c[bx],0
    inc bx
    loop ql2                            ;qingling
   
    mov cx,10                   
    mov bx,0
    mov ah,1
ina:
    int 21h
    cmp al,"+"
    jne l1
    mov d,al
    jmp movea
 l1:
    cmp al,"-"
    jne l2
    mov d,al
    jmp movea
 l2:
    cmp al,"*"
    jne l3
    mov d,al
    jmp movea
 l3:
    cmp al,"/"                  
    jne l4
    mov d,al                    
    jmp movea                   
l4: 
    cmp al,30h                
    jb err                 
    cmp al,39h
    ja err
    and al,0fh                
    mov a[bx],al
    inc bx                      
    loop ina                    
    int 21h                     
    cmp al,"+" 
    jne l5
    mov d,al
    jmp inb 
 l5:cmp al,"-"
    jne l6
    mov d,al
    jmp inb
 l6:cmp al,"*"
    jne l7
    mov d,al
    jmp inb
 l7:cmp al,"/"         
    jne err                  
    mov d,al                   
    jmp inb                   
err:
    mov dl,0ah
    mov ah,2
    int 21h
    mov dl,0dh
    int 21h
    mov ah,9
    lea dx,f
    int 21h
    jmp begin                 
movea:
    mov si,cx
    mov cx,bx
    dec bx
mova:
    mov al,a[bx]
    mov a[bx][si],al
    mov a[bx],0
    dec bx
    loop mova                 
inb:                          
    mov cx,10
    mov bx,0
    mov ah,1
l8:
    int 21h
    cmp al,"="               
    jne l9
    jmp moveb             
l9:
    cmp al,30h                
    jb err                    
    cmp al,39h
    ja err
    and al,0fh                
    mov b[bx],al
    inc bx                     
    loop l8               
    int 21h                   
    cmp al,"="                 
    jne  err                   
    jmp cmpd             
moveb:                         
    mov dx,10
    sub dx,cx
    mov si,cx
    mov cx,dx
    dec bx
movb:
    mov al,b[bx]
    mov b[bx][si],al
    mov byte ptr b[bx],0
    dec bx
    loop movb
cmpd:
    cmp d,"+"
    jne h1
    jmp j_add
 h1:
    cmp d,"-"
    jne h2
    jmp j_sub
 h2:
    cmp d,"*"
    jne h3
    jmp c_mul
 h3: jmp c_div

j_add:
    mov cx,10
    mov bx,9
    clc
j_ad:
    mov al,a[bx]
    adc al,b[bx]
    aaa
    mov [x+1][bx],al
    dec bx
    loop j_ad
    adc x,0  
    mov cx,11
    mov bx,10
 h4:   
    mov al,x[bx]
    mov [c+9][bx],al
    dec bx
    loop h4  
    jmp out_c      

j_sub:                         
    mov cx,10
    mov bx,0
 bj:
    mov al,a[bx]
    cmp al,b[bx]
    ja  j_sub1
    jb  j_sub2
   
    inc bx
    loop bj
j_sub1:
    mov cx,10
    mov bx,9
    clc
j_su1:
    mov al,a[bx]
    sbb al,b[bx]
    aas
    mov y[bx],al
    dec bx
    loop j_su1
    mov cx,10
    mov bx,9
 h5:
    mov al,y[bx]
    mov [c+10][bx],al
    dec bx
    loop h5
    jmp out_c                                         
j_sub2:   
    mov ah,2
    mov dl,2dh
    int 21h               
    mov cx,10
    mov bx,9
    clc
j_su2:
    mov al,b[bx]
    sbb al,a[bx]
    aas
    mov y[bx],al
    dec bx
    loop j_su2 
    mov cx,10                
    mov bx,9
 h6:
    mov al,y[bx]
    mov [c+10][bx],al
    dec bx
    loop h6
    jmp out_c

c_mul:                       
    mov bx,9
 h7:
    
    mov si,9
    mov [x+1][si],0
    mov cx,10
 h8:
    mov al,a[si]
    mul b[bx]
    aam
    add al,[x+1][si]
    aaa
    mov [x+1][si],al
    mov x[si],ah
    dec si
    loop h8                        
    mov cx,11
    mov di,10
    clc
 h9:
    mov al,z[di][bx]
    adc al,x[di]
    aaa
    mov z[di][bx],al               
    dec di
    loop h9
    cmp bx,0                             
    je m1              
    dec bx
    jmp h7                    
 m1:mov cx,20
    mov bx,0
 m2:mov al,z[bx]                  
    mov c[bx],al
    inc bx
    loop  m2                
    jmp out_c

 c_div:
    mov cx,10
    mov bx,0
 m3:
    mov al,a[bx]
    cmp al,b[bx]            
    ja  jian                  
    jb  outc                   
    inc bx
    loop m3
    mov cx,10
    mov bx,0
 m4:
    mov al,a[bx]
    cmp al,0
    jne jian
    inc bx
    loop m4
    jmp outc
jian:
    mov cx,10
    mov bx,9
    clc
 m5:
    mov al,a[bx]
    sbb al,b[bx]
    aas
    mov a[bx],al
    dec bx
    loop m5
jadd:
    mov bx,9
    clc
    mov al,y[bx]
    adc al,1
    aaa
    mov y[bx],al              
    dec bx
    mov cx,9
 m6:
    mov al,y[bx]
    adc al,0
    aaa
    mov y[bx],al
    dec bx
    loop m6
    jmp c_div
outc:
    mov cx,10
    mov bx,0
    mov ah,2
 m7:
    mov al,y[bx]
    cmp al,0
    jne m8
    inc bx
    loop m7
    mov dl,30h
    int 21h                           
    jmp sys             
 m8:
    mov dl,y[bx]
    or  dl,30h
    int 21h
    inc bx
    loop m8                        
sys:
    mov cx,10
    mov bx,0
 k1:
    mov al,a[bx]
    cmp al,0
    jne k2
    inc bx
    loop k1
    jmp ts
 k2:
    push cx
    mov cx,1
 k3:
    mov dl,"!"
    int 21h                         
    pop cx
 k4:
    mov dl,a[bx]
    or  dl,30h
    int 21h
    inc bx
    loop k4                        
            
out_c:
    mov cx,20            
    mov ah,2
    mov bx,0
cmp0:mov al,c[bx]
    cmp al,0               
    jne out_c1
    inc bx
    loop cmp0
    mov dl,30h
    int 21h
    jmp ts
out_c1:
    mov dl,c[bx]
    or dl,30h
    int 21h                 
    inc bx
    loop out_c1
    mov dl,0ah
    int 21h
    mov dl,0dh
    int 21h
ts:
    mov ah,9                
    lea dx,g
    int 21h
    mov ah,7             
    int 21h
    cmp al,"y"         
    jne cmpy
    jmp hc
cmpy:
    cmp al,"Y"
    jne exit_dos           
hc:
    mov ah,2
    mov dl,0ah
    int 21h
    mov dl,0dh
    int 21h
    jmp begin                  

exit_dos:
    mov ah,4ch
    int 21h                  

cod ends
    end start

⌨️ 快捷键说明

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