mov传送的数据莫名其妙的被改变了,新手求助
源代码如下:assume cs:code,ds:data
data segment
db 'i love lkp'
data ends
code segment
start: mov ax,data
mov ds,ax
mov ax,0b800h
mov es,ax
mov di,0h
mov si,70h
mov cx,10h
s: mov dl,ds:
mov es:,dl ;执行这里的时候,传送进去的值不是dl 的值而是20h
mov byte ptr es:,0ah ;这里传送进去的也是07h 不是0ah
add si,2h
inc di
loop s
mov ax,4c00h
int 21h
code ends
end start
求各位大佬帮忙看看 等语句执行完了后看一下es指向的内存看看里面是 0x69 还是 0x20。
我记得后面显示的值是当前这块地址的值,而且你还没 t,也就是说这条 mov 指令还没执行,那这块内存也只能显示 0x20,而不是你要放进去的值 丶忘却的年少o 发表于 2018-11-22 12:57
等语句执行完了后看一下es指向的内存看看里面是 0x69 还是 0x20。
我记得后面显示的值是当前这块地址的值 ...
额,我看了下内存都是20,执行完之后也是,就是dl的值好像传到内存里就都变20了。 lkp1115 发表于 2018-11-22 15:39
额,我看了下内存都是20,执行完之后也是,就是dl的值好像传到内存里就都变20了。
直接运行起来能显示出字符嘛?不单步调试。
记得单步会影响内存中的值的 丶忘却的年少o 发表于 2018-11-22 18:53
直接运行起来能显示出字符嘛?不单步调试。
记得单步会影响内存中的值的
额,好像都没显示。好奇怪! 测试了下,不单步直接运行的话是能正常显示的,如下图
如果debug单步执行就看不到。我想是这样的,字符本来是刚写进去了的,但立刻被debug单步T的输出滚屏覆盖了显示缓冲区,就看不到了。 superbe 发表于 2018-11-23 11:10
测试了下,不单步直接运行的话是能正常显示的,如下图
如果debug单步执行就看不到。我想是这样的,字符本 ...
清屏后就可以显示了,然后用dir命令填满屏幕,再执行看到了显示了一瞬间然后马上消失,我想应该就是您说的那样,谢谢! 也谢谢2楼的回答!
页:
[1]