xunxianol 发表于 2013-12-22 08:55:08

cs:ip问题 更新

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

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

更新问题:
谢谢 各位鱼you

为什么从20000H 单元开始读取数据的时候
一次读取 B8 23 01
而不是 B8 23
或者是 B8 23 01 BB
呢,读了几遍都没读懂。

小燕双飞GO 发表于 2013-12-22 09:21:08

CPU虽然笨,但它也是算数高手来的,它只要读到一个8位二进制代码就知道是一个字节,如果你的指令是由三个这样的代码组成的指令那就是三个字节了。

xunxianol 发表于 2013-12-22 10:41:56

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

就是还想问下,他怎么知道这个指令是3个字节,而不读取4个字节或者5个字节

virusx1984 发表于 2013-12-22 13:05:53

xunxianol 发表于 2013-12-22 10:41 static/image/common/back.gif
就是还想问下,他怎么知道这个指令是3个字节,而不读取4个字节或者5个字节

因為所有的東西,不管是指令還是數字,對CPU來說都是一個數字而已,因此,比如mov ax, 0123H,
mov 是B8H佔用1字節, 0123H佔用2字節,加起來就是3個字節

霸气外露 发表于 2013-12-22 14:42:20

根据机器码,

瑞恩 发表于 2013-12-22 15:21:55

好贴,绝对要支持下!!~~

xunxianol 发表于 2013-12-22 15:33:20

霸气外露 发表于 2013-12-22 14:42
根据机器码,

能在详细点么

小燕双飞GO 发表于 2013-12-22 18:30:07

内存单元2000:0处存放的是MOVAX, 0123H 指令,MOVAX的二进制代码是10111000刚好8位就要占用一个内存单元,0123H的二进制代码是100100011刚好是9位数就要占用两个内存单元的空间,一共占用三个内存单元也就是三个字节的长度正好是一条完整的指令。至于说CPU为什么不把BB也读进来这个问题是制造CPU的人要做的事,学汇编不用知道那个了,如果你知道了你不就会制造出CPU了,商业秘密来的,比如飞机是铁制成的,飞行员只学会如何加油飞起就行了,铁是如何飞上天的问题是制造者的事我们可以不用理会。

正在写代码 发表于 2013-12-22 19:54:56

汇编的高手在哪里啊

沈城 发表于 2013-12-22 20:04:09

小燕双飞GO 发表于 2013-12-22 18:30 static/image/common/back.gif
内存单元2000:0处存放的是MOVAX, 0123H 指令,MOVAX的二进制代码是10111000刚好8位就要占用一个内存单 ...

他现在就是想做飞机,而不是开飞机,懂了吗?

xunxianol 发表于 2013-12-22 20:59:23

小燕双飞GO 发表于 2013-12-22 18:30
内存单元2000:0处存放的是MOVAX, 0123H 指令,MOVAX的二进制代码是10111000刚好8位就要占用一个内存单 ...

谢谢,了解

n01boy 发表于 2013-12-23 21:38:56

参与mov 的必然有2个成员,ax和0123h   十六进制 B* (*是数字,B8=MOV AX,BA=MOV DX)表示mov 一个寄存器   然后加上后面的一个16位idata(2字节=1个字)    我是这样理解的。。

立志当学霸! 发表于 2013-12-23 21:44:54

我是这样理解的, mov ax是一个一体的指令,B8就一个字节,意思就是mov ax,而23 01 正好是16位,正好符合16位寄存器的大小,所以不会是23,也不会是23 01 BB,我也是新手,希望能一起交流。:lol:

疯狂战圣 发表于 2013-12-23 21:56:06

我也不知道,但我觉得如果你不研究编译器的话了解这个意义不大,我觉得如果想学这个的话,就去多研究下机器指令.应该是有一定规律的,只是我们不了解的人不知道而己,计算机毕竟没人那么聪明,它只是照规则来而己.

xunxianol 发表于 2013-12-23 22:17:04

立志当学霸! 发表于 2013-12-23 21:44
我是这样理解的, mov ax是一个一体的指令,B8就一个字节,意思就是mov ax,而23 01 正好是16位,正好符合1 ...

en.谢谢一起学
页: [1]
查看完整版本: cs:ip问题 更新