圣光玉宇 发表于 2012-12-15 16:11:58

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

王爽老师的《汇编语言》中”2.10   CS和IP“中的”图2.10-图2.17“,CS中为2000,IP中为0000,经地址加法器合为一个20位的数20000,经地址总线传入内存,CPU只给了一个20位数20000,所以应该只有20000地址中的"B8"送到指令缓存器,CPU并没有给内存中传入20001和20002呀,为何20001地址,20002地址中的”2301“也一起传入了?

昊旭 发表于 2012-12-16 17:22:13

CS中为2000,IP中为0000   读取指令 mov ax,0123h这条指令占用三个字节   所以是b80123

骑驴看代码 发表于 2012-12-17 22:53:22

楼主跟我一样疑问!    在网上未找到答案。   楼主找到答案告诉我一下    ,,,,谢谢

骑驴看代码 发表于 2012-12-17 23:00:08

本帖最后由 骑驴看代码 于 2012-12-17 23:05 编辑

昊旭 发表于 2012-12-16 17:22 static/image/common/back.gif
CS中为2000,IP中为0000   读取指令 mov ax,0123h这条指令占用三个字节   所以是b80123
这不是机器的思维。 对机器来说这些指令知识二进制,问题是CPU是靠什么判断只读取b8 01 23(mov ax,0123h这3个字节,像add ax,1h 就只有两个字节)呢?   因为后面还有数据,所以给出了cs:ip 这是读取的起始位置,那结束在哪?也就是读取长度如何确定?
   比如add ax,   ;   读取的数据在ds:bx中,因为是ax=ax+1   ,而 ax(16位),所以读取两个字节的数据
页: [1]
查看完整版本: 《汇编语言》读取指令的方式