回 帖 发 新 帖 刷新版面

主题:紧急求救,请各路高手指点指点!!!关于两个十进制数运算

编写程序输入两个十进制数据(如76,32),然后再输入任何一个四则运算符(如 “+”)请求出两个十进制的四则运算结果,并在显示屏幕上输出该10进制数结果,如76+32的和值“108”。

回复列表 (共3个回复)

沙发

我只写主程序,其它的自己添.
data segment
     x db 12
     y db 13
     result dw ?
data ends



start: mov ax,data
       mov ds,ax
       mov ah,x
       mov ah,'+'
       mov ah,dl
       int 21h
       mov al,y
       add ah,al
       mov result,ax
       下面自己写了嘛,你把它转换为AC码,然后才能输出!自己走网上找,很多的!
      以上程序,没有调试也不知道完全正确不.不过思路应该是这样的!

板凳

data segment
 string1 db 'please input the first num:$'
 string2 db 13,10,'please input the second num:$'    
 x dw ?
 y dw ?
 result dw ?
data ends
code segment
 assume ds:data,cs:code
main proc far
start: mov ax,data
       mov ds,ax
       mov dx,offset string1
       mov ah,9
       int 21h
       lea si,x
       call input
       mov dx,offset string2
       mov ah,9
       int 21h
       lea si,y
       call input
       lea si,result
       call operate
       lea si,result
       call disp
main endp
input proc far
      push ax
      push bx
      xor bx,bx
t0:   mov ah,1
      int 21h
      cmp al,0dh
      je  t1
      and ax,00ffh
      add bx,ax
      jmp t0
t1:   mov [si],bx
      pop bx
      pop ax
      ret
input endp
operate proc far
push ax
push bx
mov bx,x
mov ah,2
int 21h
cmp al,'+'
je L1
cmp al,'-'
je L2
cmp al,'*'
je L3
cmp al,'/'
je L4
L1:add bx,y
   jmp L0
L2:sub bx,y
   jmp L0
L3:mov ax,y
   mul bx
   mov ax,bx
   jmp L0
L4:mov ax,bx
   mov bx,y
   div bx
   mov bx,ax
L0:mov [si],bx
   pop ax
   pop bx
   ret
operate endp
disp proc far
mov ax,[si]
mov bx,10
xor cx,cx
again:xor dx,dx
      div bx
       push dx
       inc cx
       cmp ax,0
       je K
       jmp again
K:    pop dx
      or dx,30h
      mov ah,2
      int 21h
      loop K
    ret
disp endp
code end 
end main

3 楼

谢谢,但为什么在emu8086上运行时出现(17) cannot assemble far call.
(17) refer to  far_call-2.asm  in examples.的句子呢???指的是第十七句call input那里。

我来回复

您尚未登录,请登录后再回复。点此登录或注册