943566987 发表于 2014-5-20 17:38:25

用debug调试问题7.6有个问题不解

assume cs:codesg,ds:datasg
datasg segment
db '1.file'
db '2.enti   '
db '3. search '
db '4.view   '
db '5.options'
db '6.help'
datasg ends
codesg segment
start:mov ax,datasg
      mov ds,ax
   mov bx,0
   
   mov cx,6
   s:mov al,
   and al,11011111b
mov ,al
add bx,16
loop s
mov ax,4c00h
int 21h
codesg ends
end start

这到题目是这样将DATASG代码中第一个字母变成大写,于是我用DEBIUG加载了这个程序进行调试执行后我发现我标红色的那个代码时是大写的DF我很是奇怪为什么是DF然后我有将第五个数字0改为一以为应该会变成小写我才对结果还是大写而且原本的DF也改变了
我有几个疑问为什么11011111在DEBUG执行时会是DF而且我将第五个数字改为以后发现DF也改变了,我要怎么才能在DEBUG中查到代码段第一个字母是否已经改变

传说。 发表于 2014-5-20 19:32:31

楼主请把言语写通常啊。 话都没说全啊。 在debug看是否改变就查看对应内存段 右边部分。那是ASCII翻译过去的。你看变成大写就对了。

943566987 发表于 2014-5-20 22:24:10

传说。 发表于 2014-5-20 19:32 static/image/common/back.gif
楼主请把言语写通常啊。 话都没说全啊。 在debug看是否改变就查看对应内存段 右边部分。那是ASCII翻译过去的 ...

不明白你的意思我想问问这B800:0是什么意思

传说。 发表于 2014-5-20 22:29:57

b800:0 是显存。就是你往这个内存段写入代码的话就显示在屏幕上。物理地址后面是代码。
代码后面是相应代码代表的字符。第一行2D 07 64 07。。。 64 代表的就是小写的d 。后面写着看到没?我截图你别说你不会看。。
你要看自己代码那个首字母变没变就找到那个字母所在的地址。用d命令查看一下。后面是大写就是大写。是小写就是小写。
页: [1]
查看完整版本: 用debug调试问题7.6有个问题不解