. : : Assembly Language : : .  |  首页  |  我提出的问题  |  我参与的问题  |  我的收藏  |  消息中心   |  游客  登录  | 
刷新 | 提问 | 未解决 | 已解决 | 精华区 | 搜索 |
  《汇编语言》论坛 ->寄存器(CPU工作原理)
  管理员: assembly   [回复本贴] [收藏本贴] [管理本贴] [关闭窗口]
主题 : :  P26 第二行:内存20000H单元开始存放的机器指令 B8 23 01 通过数据总线送入CPU,疑惑,请教了。  [待解决] 回复[ 3次 ]   点击[ 590次 ]  
yky
[帖 主]   [ 发表时间:2008-10-09 16:05 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2008-04-21 21:41
看书上20000H单元内的内容是B8,我认为应该把 B8通过数据线送入CPU,因为它给的是地址 20000H,不明白为什么会把地址20001H 20002H的内存内容 23 01也一起被送入了CPU.
dan1010
[第1楼]   [ 回复时间:2008-10-11 03:16 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2008-10-11 02:38
因为那是一句啊。。占了3个单元,
masm_pig
[第2楼]   [ 回复时间:2008-10-29 08:12 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:2
注册日期:2008-07-09 23:25
呵呵,
其实计算机的数据传送并不是按我们想当然的那样做,数据线传送数据也不会一次传一字节或3字节等,数据的传送的实质就是电脉冲的传递,通常也就是按数据线位宽来进行传送的.
在16位机中,数据线一次传送2字节数据,为实现长字节的指令,8086的CPU在设计中,设计了一个6字节的指令缓存,指令序列按CS:IP标示,按位冲满指令缓存.
因此此时CPU中的指令缓存中
即不会是 B8 00 00 00 00 00,
也不会是 B8 23 01 00 00 00,
而应该是 B8 23 01 ** ** **,
**是随后的字节
至于为什么设计成6字节的,细思考一下指令的最长与最短就会知道答案.
yky
[第3楼]   [ 回复时间:2009-01-22 20:59 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2008-04-21 21:41
通过仔细思考发现  MOV  AX,0123H 这条指令所对应的机器码是 B8 23 01,而  MOV BX,0003H 的机器码是BB 03 00, 由于疏忽大意,错把B8 BB看成是同一个数据了,(8和B没有分清)从而产生一个疑问,MOV  AX,...和MOV  BX,...这两条指令的机器码怎样区分,现在明白了 MOV 机器码是“BB". AX,...的机器码是“B8" 而MOV  BX,...的机器码是“BB".
   这样看来,B8.BB 就不会被送入寄存器了,B8 03 21这3个字节只把03 21送入了寄存器AX.
需要登录后才能回帖 -->> 请单击此处登录
    Copyright © 2006-2024   ASMEDU.NET  All Rights Reserved