余力学文—槿年空间

这里,有我大学的点点滴滴

用汇编语言写一个四则运算

 

 

stack segment para stack 'stack'
   db 256 dup(00)
stack ends
data segment para stack 'data'
   a db 'error!','$'
code segment para public 'code'
assume cs:code
main proc far
   mov ax,data
   mov ds,ax
   mov dh,4
   

k7:
   call getchar
   mov bh,al
   call getchar
   mov ah,bh
   call asctohex
   mov bl,al
   call getchar
   mov cl,al
   call getchar
   mov bh,al
   call getchar
   mov ah,bh
   call asctohex
   mov bh,al
   call getchar
   mov al,bl
   mov ah,0


   cmp cl,'+'
   jz k1
   cmp cl,'-'
   jz k2
   cmp cl,'*'
   jz k3
   cmp cl,'/'
   jz k4
   lea dx,a
   mov ah,09h
   int 21h
   
  
k1:add al,bh
   jmp k5
k2:sub al,bh
   jmp k5
k3:mul bh
   jmp k5
k4:div bh

   
k5:mov ch,al
   mov al,ah
   call hextoasc
   mov dl,ah
   call dispchar
   mov dl,al
   call dispchar
   mov al,ch
   call hextoasc
   mov dl,ah
   call dispchar
   mov dl,al
   call dispchar
   mov dl,0dh
   call dispchar
   mov dl,0ah
   call dispchar


   dec dh
   cmp dh,0
   jz k6
   jmp k7

k6:mov ah,4ch
   int 21h
main endp
getchar proc near
   mov ah,01h
   int 21h
   ret
getchar endp
asctohex proc near
   cmp al,41h
   jc asc1
   sub al,07h
asc1:sub al,30h
   cmp ah,41h
   jc asc2
   sub ah,07h
asc2:sub ah,30h
   shl ah,1
   shl ah,1
   shl ah,1
   shl ah,1
   add al,ah
   ret
asctohex endp
hextoasc proc near
   mov ah,al
   and al,0fh
   cmp al,0ah
   jc hex1
   add al,07h
hex1:add al,30h
   shr ah,1
   shr ah,1
   shr ah,1
   shr ah,1
   cmp ah,0ah
   jc hex2
   add ah,07h
hex2:add ah,30h
   ret
hextoasc endp
dispchar proc near
   push ax
   mov ah,2
   int 21h
   pop ax
   ret
dispchar endp
code ends
end main

运行的结果有错误,块嵌套不匹配。

阅读更多
文章标签: 汇编 语言 hex div
个人分类: 初学汇编
想对作者说点什么? 我来说一句

汇编语言实现四则运算

2009年11月23日 7KB 下载

<em>汇编语言</em>表达式计算

2016年07月03日 0B 下载

没有更多推荐了,返回首页

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭