注册 登录
编程论坛 汇编论坛

[原创]键盘输入两个数,并计算和再输出!

没事情跳楼耍 发布于 2007-06-16 15:51, 1678 次点击

主要有immediate mode illegal
symbol not defined
错误
本人是菜鸟实在不知道怎么修改了!

data segment
buf1 db 3,?,3 dup(?)
buf2 db 3,?,3 dup(?)
num1 dw 0
num2 dw 0
data ends

code segment
assume cs:code,ds:data
start:
mov ax,data
mov ds,ax
mov dx,offset buf1
mov ah,0ah
int 21h
mov ax,bx
mov num1,ax
call convert
call display
mov dx,offset buf2
mov ah,0ah
int 21h
mov ax,bx
mov num2,ax
call convert
call display
sub bl,bl
add bx,num1
add bx,num2 ;bx is the temporarily result
mov ax,bx ;bx is sended to ax
call shift
mov ah,4ch
int 21h
code ends
end start

convert proc ;convert the data of buffer to the number
mov cx,0
mov ax,0
mov bx,0
mov cl,3
return:
dec cl
mov al,[dx]
sub al,30h
jcxz adding
mul 10 ;the sum send into ax
adding:
add bx,ax ;result send into bx
jcxz end
inc dx
jmp return
end:
ret
convert endp

display proc
mov dl,13
mov ah,2
int 21h
mov dl,10
mov ah,2
int 21h
ret
display endp

shift proc ;convert the result and output
mov bx,10
push bx
dis:
cmp ax,0
jz dis0
div bx ;al is quotient,ah is residue
add ah,30h
push ah
cbw
jmp dis
dis0:
pop ah
cmp ah,10
je stop
mov ah,dl
mov ah,2
int 21h
jmp dis0
stop:
ret
shift endp

[此贴子已经被作者于2007-6-16 23:52:52编辑过]

19 回复
#2
I喜欢c2007-06-16 16:51

两个3为数相加?

#3
没事情跳楼耍2007-06-16 16:52
回复:(I喜欢c)两个3为数相加?

最多三位数!

#4
没事情跳楼耍2007-06-16 16:53
回复:(没事情跳楼耍)回复:(I喜欢c)两个3为数相...
不知道怎么改那两个错误
#5
I喜欢c2007-06-16 17:05
你把

num1 =0
num2 =0
改为

num1 dw 0
num2 dw 0

试试...

[此贴子已经被作者于2007-6-16 17:08:46编辑过]

#6
爱以走远2007-06-16 17:06
mov num1,ax
对吗
还有就是 你去看看调用子程序
#7
没事情跳楼耍2007-06-16 17:09
回复:(I喜欢c)[em03]。。。。。。。。。。[alig...

seg是取段基址
不只到怎么才能把一个寄存器中的数送到num1中去!

#8
I喜欢c2007-06-16 17:09


二弟呀....
#9
爱以走远2007-06-16 17:10
以下是引用没事情跳楼耍在2007-6-16 17:09:07的发言:

seg是取段基址
不只到怎么才能把一个寄存器中的数送到num1中去!

要加属性符的

#10
爱以走远2007-06-16 17:10
以下是引用I喜欢c在2007-6-16 17:09:32的发言:


二弟呀....

干吗

#11
没事情跳楼耍2007-06-16 17:11
回复:(爱以走远)mov num1,ax 对吗 [em13][em...
调用子程序这个程序里面有什么错误
书放学校了
能给我改一下不?
#12
爱以走远2007-06-16 20:50

才有人叫吃饭
现在才回来
不好意思哈
好象子程序好加一个属性的
你在看看嘛

#13
没事情跳楼耍2007-06-16 23:13
以下是引用爱以走远在2007-6-16 20:50:11的发言:

才有人叫吃饭
现在才回来
不好意思哈
好象子程序好加一个属性的
你在看看嘛

没的啥子!
不过能不能救救偶哦!
都花了我一天时间老,水平实在太低老!
改也没改出来!






天~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

#14
菜鸟上路2007-06-16 23:33

我看除了红字那两行错了,其他好象没错,但编译通不过,好象说是过程调用错了

#15
没事情跳楼耍2007-06-16 23:36

就是这两个地方没搞清楚,书也带在身边,网上找了好久都没改出过程调用和红字那两行错误!

#16
菜鸟上路2007-06-16 23:37
因为num1和num2已经定义为常数了,你用了'='
#17
菜鸟上路2007-06-16 23:37
5楼说的对
#18
没事情跳楼耍2007-06-16 23:46
那个问题是解决了,但是子过程的调用还是有问题!
#19
菜鸟上路2007-06-16 23:55
把过程成放在code段里面试试
#20
菜鸟上路2007-06-16 23:55
熄灯了,下了
1