Apologize 发表于 2013-8-14 17:42:39

字的传送中 问题3.3



写入数据后 为什么 总是出现警告呢

牡丹花下死做鬼 发表于 2013-8-14 17:42:40

本帖最后由 牡丹花下死做鬼 于 2013-8-14 18:27 编辑


mov ax , 1000没问题
mov al , 1000报错
是这样 ax 是16位寄存器 而最高位是用来存放符号的(+/-)所以取值范围就是-2^15~2^15-1(这里还有一个0)最大值是 32767
也就是十六进制的 7FFF 所以是没问题的没有超出范围
但al是8位寄存器 范围是 -2^7~2^7-1 最大值为127 不用转换了明显超出范围所以报错

对于楼主mov ax , 1000
我提出一个解决方案
下载
http://yunpan.cn/QXsnCMeTPGYww (访问密码:df06)
将下载的AUTOEXEC.NT CONFIG.NT 和COMMAND.COM 复制到 C:\WINDOWS\system32
申请最佳答案啊

缌唸 发表于 2013-8-14 18:06:29

楼主,debug是默认你打上的数字是16位进制数,1000(16)=65536,超过一个寄存器限制了,ax最大为FFFF(16)=65535

monk-half 发表于 2013-8-14 18:11:30

奇了怪了 没找出原因
楼主试试 mov eax,1000看看行不行

Apologize 发表于 2013-8-14 18:11:32

缌唸 发表于 2013-8-14 18:06 static/image/common/back.gif
楼主,debug是默认你打上的数字是16位进制数,1000(16)=65536,超过一个寄存器限制了,ax最大为FFFF(16)=6 ...

嗦嘎 那么这个又是什么情况

Apologize 发表于 2013-8-14 18:14:06

monk-half 发表于 2013-8-14 18:11 static/image/common/back.gif
奇了怪了 没找出原因
楼主试试 mov eax,1000看看行不行

不行:sad

缌唸 发表于 2013-8-14 18:23:27

楼主 你看的 那张图片中的 1000h是物理地址 是段地址*16+偏移地址 =物理地址 合成得出来的,后面几章讲的有 对了你学到第几章那道题我帮你看看,还有eax你咋碰到了,我记得前几章没有啊,对于比较难的,后边再讲,不用太纠结{:1_1:}

Apologize 发表于 2013-8-14 18:24:24

牡丹花下死做鬼 发表于 2013-8-14 18:17 static/image/common/back.gif
mov ax , 1000没问题
mov al , 1000报错
是这样 ax 是16位寄存器 而最高位是用来存放符号的(+/-)所以 ...

:mad: 此资源已从地球上消 还有别的解决方案嘛

牡丹花下死做鬼 发表于 2013-8-14 18:27:32

Apologize 发表于 2013-8-14 18:24 static/image/common/back.gif
此资源已从地球上消 还有别的解决方案嘛

不好意思已修复

牡丹花下死做鬼 发表于 2013-8-14 18:30:26

缌唸 发表于 2013-8-14 18:23 static/image/common/back.gif
楼主 你看的 那张图片中的 1000h是物理地址 是段地址*16+偏移地址 =物理地址 合成得出来的,后面几章讲的有 ...

不是你说 超范围啊 所以楼主就用32位寄存器了{:5_94:}

缌唸 发表于 2013-8-14 18:34:09

牡丹花下死做鬼 发表于 2013-8-14 18:30 static/image/common/back.gif
不是你说 超范围啊 所以楼主就用32位寄存器了

就是啊王爽老师书上写了,而且debug模拟的就是8086cpu,ax就是16位啊

monk-half 发表于 2013-8-14 18:35:48

Apologize 发表于 2013-8-14 18:14 static/image/common/back.gif
不行

楼主 为啥你的基地址都是13C3试一下别的段看看
我刚才按照你的操作
先 e 1000: 0 23 11 22 66
第二步才写 mov ax, 1000
结果也出现了问题。。。

牡丹花下死做鬼 发表于 2013-8-14 18:35:54

缌唸 发表于 2013-8-14 18:34 static/image/common/back.gif
就是啊王爽老师书上写了,而且debug模拟的就是8086cpu,ax就是16位啊

你不是再说 为什么 出现 eax了吗
我说应为你告诉楼主超出范围了 ax装不下是不是
然后楼主就用32位寄存器eax来装了啊

Apologize 发表于 2013-8-14 18:38:46

牡丹花下死做鬼 发表于 2013-8-14 18:27 static/image/common/back.gif
不好意思已修复

还是警告 :sweat:

缌唸 发表于 2013-8-14 18:39:46

牡丹花下死做鬼 发表于 2013-8-14 18:35 static/image/common/back.gif
你不是再说 为什么 出现 eax了吗
我说应为你告诉楼主超出范围了 ax装不下是不是
然后楼主就用32位寄存器 ...

{:5_96:}我还没学到eax而且 我没说eax超界 我说的是eax新手才学应该没碰到...{:5_96:}

牡丹花下死做鬼 发表于 2013-8-14 18:41:12

Apologize 发表于 2013-8-14 18:38 static/image/common/back.gif
还是警告
99% 你是win7 是吧
是WIN7就不奇怪了
出现不兼容问题不是一次两次了
建议如下:
1:装虚拟机2:修改 e 的地址试试

Apologize 发表于 2013-8-14 18:48:58

monk-half 发表于 2013-8-14 18:35 static/image/common/back.gif
楼主 为啥你的基地址都是13C3试一下别的段看看
我刚才按照你的操作
先 e 1000: 0 23 11 22 66


这个也不行

Apologize 发表于 2013-8-14 18:52:02

牡丹花下死做鬼 发表于 2013-8-14 18:41 static/image/common/back.gif
99% 你是win7 是吧
是WIN7就不奇怪了
出现不兼容问题不是一次两次了


真相了 。。。 不过 建议 求解 楼主是菜鸟 不会{:5_96:}

牡丹花下死做鬼 发表于 2013-8-14 18:54:31

Apologize 发表于 2013-8-14 18:52 static/image/common/back.gif
真相了 。。。 不过 建议 求解 楼主是菜鸟 不会

你写入内存的地址 试试看换一个可能是被保护的
或者装虚拟机 安装XP

Apologize 发表于 2013-8-14 19:03:54

牡丹花下死做鬼 发表于 2013-8-14 18:54 static/image/common/back.gif
你写入内存的地址 试试看换一个可能是被保护的
或者装虚拟机 安装XP

换了 不行 估计要装虚拟机了
页: [1] 2
查看完整版本: 字的传送中 问题3.3