穷穷穷农民_7411 发表于 2012-12-18 21:55:47

74F+73F=F000?,什么情况

file:///C:/Users/Administrator/AppData/Roaming/Tencent/Users/1392987848/QQ/WinTemp/RichOle/AQSJ9~8M(DPWGXZ~3H$$OBN.jpg

haobing021 发表于 2012-12-18 21:55:48

穷穷穷农民_7411 发表于 2012-12-19 22:07 static/image/common/back.gif
但是我debug出来cs却是F000

可以用JMP指令
JMP 段地址:偏移地址
如:jmp 2AE3:3
      jmp3:0B16
功能:用指令中给出的段地址修改CS,偏移地址修改IP

穷穷穷农民_7411 发表于 2012-12-18 21:57:57

我在dosbox里写mov ax,74F   mov cs,ax   cs的默认值是73F   debug出来cs变成F000了

会飞的熊 发表于 2012-12-18 22:56:16

mov ax,74f
mov cs,ax
cs应该是74f吧,不论原来的cs是什么,都被覆盖掉了啊。

haobing021 发表于 2012-12-19 10:18:15

传送指令mov指令的格式是:mov DST,SRC
此指令把一个字节或一个字从源操作数SRC送至目的操作数DST
但是mov指令的传送有如下规定:
1.源操作数和目的操作数不能同时是段寄存器
2.代码段寄存器CS不能作为目的操作数
3.指令指针IP既不能作为源操作数也不能作为目的操作数
你的问题是违反了第2条规定,将段寄存器CS左为了目的操作数,所以会出错。
参考书籍:杨季文<<80X86汇编语言程序设计教程>>

lanmo 发表于 2012-12-19 11:35:36

四楼正解,只能mov ax,cs

SkyYA 发表于 2012-12-19 12:22:33

不能对CS进行操作 只能DS SS ES

穷穷穷农民_7411 发表于 2012-12-19 22:07:49

会飞的熊 发表于 2012-12-18 22:56 static/image/common/back.gif
mov ax,74f
mov cs,ax
cs应该是74f吧,不论原来的cs是什么,都被覆盖掉了啊。

但是我debug出来cs却是F000

穷穷穷农民_7411 发表于 2012-12-19 22:08:40

SkyYA 发表于 2012-12-19 12:22 static/image/common/back.gif
不能对CS进行操作 只能DS SS ES

为什么哦?可以修改cs啊

穷穷穷农民_7411 发表于 2012-12-19 22:11:09

haobing021 发表于 2012-12-19 10:18 static/image/common/back.gif
传送指令mov指令的格式是:mov DST,SRC
此指令把一个字节或一个字从源操作数SRC送至目的操作数DST
但是mo ...

代码段寄存器CS不能作为目的操作数--->那怎么修改cs?

纪律处分 发表于 2012-12-20 10:25:23

四楼正解。

℡.xiao敏 发表于 2012-12-20 10:46:53

哥哥能用jmp、jz、je那些吗

SkyYA 发表于 2012-12-20 23:23:21

穷穷穷农民_7411 发表于 2012-12-19 22:08 static/image/common/back.gif
为什么哦?可以修改cs啊

这个规定 CS由系统管理

在DEBUG中可以用R命令修改CS和IP的值

张国祥 发表于 2012-12-21 04:22:13

等于E8E,,如果是hex的话

会飞的熊 发表于 2012-12-21 19:44:16

的确不能用mov指令修改cs,刚查了下汇编金手指,

穷穷穷农民_7411 发表于 2012-12-21 23:14:39

会飞的熊 发表于 2012-12-21 19:44 static/image/common/back.gif
的确不能用mov指令修改cs,刚查了下汇编金手指,

谢谢啊,呵呵

落叶无痕 发表于 2013-4-24 18:07:52

路过看看呵呵
页: [1]
查看完整版本: 74F+73F=F000?,什么情况