鱼C论坛

 找回密码
 立即注册
查看: 1808|回复: 3

《汇编语言》读取指令的方式

[复制链接]
发表于 2012-12-15 16:11:58 | 显示全部楼层 |阅读模式

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

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

x
王爽老师的《汇编语言》中”2.10     CS和IP“中的”图2.10-图2.17“,CS中为2000,IP中为0000,经地址加法器合为一个20位的数20000,经地址总线传入内存,CPU只给了一个20位数20000,所以应该只有20000地址中的"B8"送到指令缓存器,CPU并没有给内存中传入20001和20002呀,为何20001地址,20002地址中的”23  01“也一起传入了?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2012-12-16 17:22:13 | 显示全部楼层
CS中为2000,IP中为0000   读取指令 mov ax,0123h  这条指令占用三个字节   所以是b8  01  23
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2012-12-17 22:53:22 | 显示全部楼层
  楼主跟我一样疑问!    在网上未找到答案。   楼主找到答案告诉我一下    ,,,,  谢谢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2012-12-17 23:00:08 | 显示全部楼层
本帖最后由 骑驴看代码 于 2012-12-17 23:05 编辑

这不是机器的思维。 对机器来说这些指令知识二进制,  问题是CPU是靠什么判断只读取b8 01 23(mov ax,0123h  这3个字节,像add ax,1h 就只有两个字节)呢?   因为后面还有数据,所以给出了cs:ip 这是读取的起始位置,那结束在哪?也就是读取长度如何确定?
   比如add ax,[bx]   ;   读取的数据在ds:bx中,因为是ax=ax+1     ,而 ax  (16位),所以读取两个字节的数据
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2024-10-8 00:34

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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