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

如何判断二元一次方程是否有根

lllyw 发布于 2007-06-23 20:44, 3185 次点击


这是我写的判断二元一次方程是否有根,但是有些问题,就是老是输出tag=0.就是没有根。麻烦各位帮看一下是那里出问题了。先谢谢了。


.model small
.stack
.data
_a db ?
_b db ?
_c db ?
tag db ?
msg1 db'please input a=' , '$'
msg2 db'please input b=', '$'
msg3 db'please input c=', '$' ;10
msg4 db'tag=1, this formulia has root', '$'
msg5 db'tag=0, this formulia has not root', '$'
.code
.startup
mov dx,offset msg1
mov ah,9
int 21h
mov ah,0h
int 16h
mov _a,al ;21
mov dl,al
mov ah,2
int 21h
call dpcrlf
mov dx,offset msg2
mov ah,9
int 21h
mov ah,0h
int 16h ;30
mov _b,al ;
mov dl,al
mov ah,2
int 21h
call dpcrlf
mov dx,offset msg3
mov ah,9
int 21h
mov ah,0h
int 16h ;40
mov _c,al
mov dl,al
mov ah,2
int 21h
call dpcrlf
;start0:mov ah,9
; int 21h
; xor ax,ax
; mov ah,0
; int 16h
; mov dx,ax
;mov ah,2
;int 21h
start1:mov al,_b ;33
imul al
mov bx,ax
mov al,_a
imul _c
mov cx,4 ;37
imul cx
xor dx,dx
mov dx,ax
cmp bx,dx
jae yes
jmp done
yes: mov tag,1
mov dx,offset msg4
mov ah,09h
int 21h
.exit 0
done: mov tag,0
mov dx,offset msg5
mov ah,09h
int 21h
.exit 0
dpcrlf proc
push ax
push dx
mov dl,0dh
mov ah,2
int 21h
mov dl,0ah
mov ah,2
int 21h
pop dx
pop ax
ret
dpcrlf endp
end

13 回复
#2
superstar5202007-06-23 20:46
你学的是什么语言
#3
herbert_19872007-06-23 21:29

给 _a _b _c 赋值的地方改一下:
.model small
.stack
.data
_a db ?
_b db ?
_c db ?
tag db ?
msg1 db'please input a=' , '$'
msg2 db'please input b=', '$'
msg3 db'please input c=', '$' ;10
msg4 db'tag=1, this formulia has root', '$'
msg5 db'tag=0, this formulia has not root', '$'
.code
.startup
mov dx,offset msg1
mov ah,9
int 21h
mov ah,0h
int 16h
mov cl, al
sub cl, 30h
mov _a,cl ;21
mov dl,al
mov ah,2
int 21h
call dpcrlf
mov dx,offset msg2
mov ah,9
int 21h
mov ah,0h
int 16h ;30
mov cl, al
sub cl, 30h
mov _b, cl;
mov dl,al
mov ah,2
int 21h
call dpcrlf
mov dx,offset msg3
mov ah,9
int 21h
mov ah,0h
int 16h ;40
mov cl, al
sub cl, 30h
mov _c,cl
mov dl,al
mov ah,2
int 21h
call dpcrlf
;start0:mov ah,9
; int 21h
; xor ax,ax
; mov ah,0
; int 16h
; mov dx,ax
;mov ah,2
;int 21h
start1:mov al,_b ;33
imul al
mov bx,ax
mov al,_a
imul _c
mov cx,4 ;37
imul cx
xor dx,dx
mov dx,ax
cmp bx,dx
jae yes
jmp done
yes: mov tag,1
mov dx,offset msg4
mov ah,09h
int 21h
.exit 0
done: mov tag,0
mov dx,offset msg5
mov ah,09h
int 21h
.exit 0
dpcrlf proc
push ax
push dx
mov dl,0dh
mov ah,2
int 21h
mov dl,0ah
mov ah,2
int 21h
pop dx
pop ax
ret
dpcrlf endp
end

#4
herbert_19872007-06-23 21:32
输入的 数字字符 要转为 数字
不过这里只能处理 个位数的数字字符
#5
lllyw2007-06-23 21:32

我去试验一下,先谢了

#6
herbert_19872007-06-23 21:36
还是有问题....
#7
herbert_19872007-06-23 21:46
可以了吗?
#8
lllyw2007-06-23 22:02

可以了。。嘻嘻。。

谢谢你 了

#9
lllyw2007-06-23 22:03
再次感谢了
#10
herbert_19872007-06-23 22:16
呵呵~ 不必客气.
不过还有问题是: 只能处理单个字符的.
#11
lllyw2007-06-23 22:35

是啊 1到9 而已

#12
herbert_19872007-06-23 22:40
以下是引用lllyw在2007-6-23 22:35:45的发言:

是啊 1到9 而已


相信你知道怎么解决了吧...

#13
爱以走远2007-06-24 02:07
好久没来拉
呵呵
输入的时候
用一个循环
#14
herbert_19872007-06-24 02:50
爱以同志回来啦.
1