《汇编语言》读取指令的方式
王爽老师的《汇编语言》中”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“也一起传入了? CS中为2000,IP中为0000 读取指令 mov ax,0123h这条指令占用三个字节 所以是b80123 楼主跟我一样疑问! 在网上未找到答案。 楼主找到答案告诉我一下 ,,,,谢谢 本帖最后由 骑驴看代码 于 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]