一个汇编程序调试时发现的问题
本帖最后由 ♂我是上帝♂ 于 2014-5-15 14:13 编辑代码 1.asm
data segment
string1 db 'Move the cursor backward. '
string2 db 'Move the cursor backward. '
mess1 db 'Match.',13,10,'$'
mess2 db 'No Match!',13,10,'$'
data ends
prog segment
assume cs:prog, ds:data, es:data
start:
mov ax,data
mov ds,ax
mov es,ax
lea si,string1
lea di,string2
mov cx,26d
cld
begin:
cmpsb
jneoutmess2
loop begin
jcxz outmess1
outmess1:
lea dx,mess1
mov ah,09h
int 21h
;mov ah,0ah
;int 21h
jmp close
outmess2:
lea dx,mess2
mov ah,09h
int 21h
;mov ah,0ah
;int 21h
close: mov ah,4ch
int 21h
prog ends
end start
--------------------------------------------------------------
现象
当我编译 链接完成这个程序后,直接在dos里运行程序,没有输出字符串"match"。但是当我进入debug后用g命令调试该程序,得到输出,并用q命令退出后,再直接运行该程序后,就可得到输出。
直接运行
无输出字符串
debug调试后再退出,直接运行
我的问题是:
为什么会这样?进入debug再退出后改变了什么吗?使得程序能够输出。
求诸位大神不吝赐教。
过来看看!,,,,,,,,
我来拿奖励的:lol::lol: 还没学习到这里,来看看。
页:
[1]