主题:紧急求救,请各路高手指点指点!!!关于两个十进制数运算
bbglovecat
[专家分:0] 发布于 2006-12-29 01:20:00
编写程序输入两个十进制数据(如76,32),然后再输入任何一个四则运算符(如 “+”)请求出两个十进制的四则运算结果,并在显示屏幕上输出该10进制数结果,如76+32的和值“108”。
最后更新于:2006-12-29 01:27:00
回复列表 (共3个回复)
沙发
wenshan123 [专家分:0] 发布于 2006-12-30 10:49:00
我只写主程序,其它的自己添.
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码,然后才能输出!自己走网上找,很多的!
以上程序,没有调试也不知道完全正确不.不过思路应该是这样的!
板凳
klainogn [专家分:270] 发布于 2006-12-30 16:24:00
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 楼
bbglovecat [专家分:0] 发布于 2007-01-05 01:26:00
谢谢,但为什么在emu8086上运行时出现(17) cannot assemble far call.
(17) refer to far_call-2.asm in examples.的句子呢???指的是第十七句call input那里。
我来回复