|
主题 : : 实验10.3_请纠错!急! [已解决] |
回复[ 3次 ]
点击[ 472次 ] | |
|
|
|
|
[帖 主]
[ 发表时间:2010-03-04 22:38 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2009-12-27 17:13 |
这是我写的程序,结果怎么也不出来,调试也没有出错,希望大家帮我看看哪里出问题了。
assume cs:code,ds:data
data segment
db 10 dup(0)
data ends
code segment
start:mov ax,12666
mov bx,data
mov ds,bx
mov si,0
call dtoc
mov si,0
mov dh,8
mov dl,3
mov cl,2
call show_str
mov ax,4c00h
int 21h
dtoc:
push bx
push ax
push cx
push dx
push si
K:mov cx,ax;将ax的值赋给cx,最终来判断ax时候为零
jcxz s0;若为零则跳到s0
mov dx,0
mov cx,10
div cx;让ax除以10,余数放在dx中,商放在ax中
add dx,30h;ascii码变换
push dx;保存dx值
inc bx;bx最终用来确定循环次数
jmp short K
s0:
mov cx,bx;经过计算,bx等于5
mov si,0
s1:pop ax
mov [si],al
inc si
loop s1
okey:pop si
pop dx
pop cx
pop ax
pop bx
ret
show_str:
push bx;这个show_str子程序是没有错误的
push cx
push si
mov al,0A0h
dec dh
mul dh
mov bx,ax
mov al,2
mul dl
sub ax,2
add bx,ax
mov ax,0B800h
mov es,ax
mov di,0
mov al,cl
mov ch,0
s: mov cl,ds:[si]
jcxz ok
mov es:[bx+di],cl
mov es:[bx+di+1],al
inc si
add di,2
jmp short s
ok: pop si
pop cx
pop bx
ret
code ends
end start | | |
|
|
|
|
[第1楼]
[ 回复时间:2010-03-04 23:16 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2009-12-27 17:13 |
自己又重新调试了一遍,发现这次才叫调试,一步一步的执行程序,并分析每步之后的程序,这次终于出来结果了
修改之后,正确程序如下
assume cs:code,ds:data
data segment
db 10 dup(0)
data ends
code segment
start:mov ax,12666
mov bx,data
mov ds,bx
mov si,0
mov bx,0
call dtoc
mov si,0
mov dh,8
mov dl,3
mov cl,2
call show_str
mov ax,4c00h
int 21h
dtoc:
push bx
push ax
push cx
push dx
push si
K:mov cx,ax;跳到这里而非原来的dtoc,如果直接跳到dtoc则push dx一点用都没有
jcxz s0
mov dx,0
mov cx,10
div cx
add dx,30h
push dx
inc bx
jmp K
s0:
mov cx,bx
mov si,0
s1:pop ax
mov [si],al
inc si
loop s1
okey:pop si
pop dx
pop cx
pop ax
pop bx
ret
show_str:
push bx
push cx
push si
mov al,0A0h
dec dh
mul dh
mov bx,ax
mov al,2
mul dl
sub ax,2
add bx,ax
mov ax,0B800h
mov es,ax
mov di,0
mov al,cl
mov ch,0
s: mov cl,ds:[si]
jcxz ok
mov es:[bx+di],cl
mov es:[bx+di+1],al
inc si
add di,2
jmp short s
ok: pop si
pop cx
pop bx
ret
code ends
end start | | |
|
|
|
|
[第2楼]
[ 回复时间:2010-03-14 00:13 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2010-02-18 19:15 |
一步一步调试很累人的,特别是大一点的程序,现在我一般是直接分析程序 | | |
|
|
|
|
[第3楼]
[ 回复时间:2010-03-17 15:12 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2009-12-27 17:13 |
此贴由 贴主 于 [ 2010-03-17 15:12 ] 结贴。 结贴原因:问题已解决 | | |
|