鱼C论坛

 找回密码
 立即注册
查看: 1561|回复: 14

cs:ip问题 更新

[复制链接]
发表于 2013-12-22 08:55:08 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 xunxianol 于 2013-12-22 15:48 编辑

ip=ip+所读取指令的长度
这个所读取指令的长度,cpu是怎么知道的这个指令是3b也太,那个指令是2byet的

更新问题:
谢谢 各位鱼you
119.jpg
为什么从20000H 单元开始读取数据的时候
一次读取 B8 23 01
而不是 B8 23
或者是 B8 23 01 BB
呢,读了几遍都没读懂。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2013-12-22 09:21:08 | 显示全部楼层
CPU虽然笨,但它也是算数高手来的,它只要读到一个8位二进制代码就知道是一个字节,如果你的指令是由三个这样的代码组成的指令那就是三个字节了。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-12-22 10:41:56 From FishC Mobile | 显示全部楼层
小燕双飞GO 发表于 2013-12-22 09:21
CPU虽然笨,但它也是算数高手来的,它只要读到一个8位二进制代码就知道是一个字节,如果你的指令是由三个这 ...

就是还想问下,他怎么知道这个指令是3个字节,而不读取4个字节或者5个字节
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2013-12-22 13:05:53 | 显示全部楼层

因為所有的東西,不管是指令還是數字,對CPU來說都是一個數字而已,因此,比如mov ax, 0123H,
mov 是B8H佔用1字節, 0123H佔用2字節,加起來就是3個字節
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2013-12-22 14:42:20 | 显示全部楼层
根据机器码,
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2013-12-22 15:21:55 | 显示全部楼层
好贴,绝对要支持下!!~~
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-12-22 15:33:20 From FishC Mobile | 显示全部楼层
霸气外露 发表于 2013-12-22 14:42
根据机器码,

能在详细点么
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2013-12-22 18:30:07 | 显示全部楼层
内存单元2000:0处存放的是MOV  AX, 0123H 指令,MOV  AX的二进制代码是10111000刚好8位就要占用一个内存单元,0123H的二进制代码是100100011刚好是9位数就要占用两个内存单元的空间,一共占用三个内存单元也就是三个字节的长度正好是一条完整的指令。至于说CPU为什么不把BB也读进来这个问题是制造CPU的人要做的事,学汇编不用知道那个了,如果你知道了你不就会制造出CPU了,商业秘密来的,比如飞机是铁制成的,飞行员只学会如何加油飞起就行了,铁是如何飞上天的问题是制造者的事我们可以不用理会。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2013-12-22 19:54:56 | 显示全部楼层
汇编的高手在哪里啊
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2013-12-22 20:04:09 | 显示全部楼层
小燕双飞GO 发表于 2013-12-22 18:30
内存单元2000:0处存放的是MOV  AX, 0123H 指令,MOV  AX的二进制代码是10111000刚好8位就要占用一个内存单 ...

他现在就是想做飞机,而不是开飞机,懂了吗?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-12-22 20:59:23 From FishC Mobile | 显示全部楼层
小燕双飞GO 发表于 2013-12-22 18:30
内存单元2000:0处存放的是MOV  AX, 0123H 指令,MOV  AX的二进制代码是10111000刚好8位就要占用一个内存单 ...

谢谢,了解
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2013-12-23 21:38:56 | 显示全部楼层
参与mov 的必然有2个成员,ax和0123h   十六进制 B* (*是数字,B8=MOV AX,BA=MOV DX)表示mov 一个寄存器   然后加上后面的一个16位idata(2字节=1个字)    我是这样理解的。。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2013-12-23 21:44:54 | 显示全部楼层
我是这样理解的, mov ax是一个一体的指令,B8就一个字节,意思就是mov ax,而23 01 正好是16位,正好符合16位寄存器的大小,所以不会是23,也不会是23 01 BB,我也是新手,希望能一起交流。:lol:
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2013-12-23 21:56:06 | 显示全部楼层
我也不知道,但我觉得如果你不研究编译器的话了解这个意义不大,我觉得如果想学这个的话,就去多研究下机器指令.应该是有一定规律的,只是我们不了解的人不知道而己,计算机毕竟没人那么聪明,它只是照规则来而己.
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-12-23 22:17:04 From FishC Mobile | 显示全部楼层
立志当学霸! 发表于 2013-12-23 21:44
我是这样理解的, mov ax是一个一体的指令,B8就一个字节,意思就是mov ax,而23 01 正好是16位,正好符合1 ...

en.谢谢一起学
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-9-28 13:15

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表