Intel 8086架构下POP指令机器周期数及测试存疑咨询
关于8086架构下
pop %BX的机器周期分析 你的理解有误,教授的题目没问题。8086是16位架构,pop %BX是对16位寄存器的操作,完整执行流程包含3个机器周期:
- 第1个机器周期(取指周期):地址线上的数值是
CS:IP指向的指令地址,用于读取pop bx的操作码(0x5B)。 - 第2个机器周期:地址线上的数值是
SS:SP当前指向的内存地址,此时从该地址读取8位数据写入BL寄存器,读取完成后SP自动加1。 - 第3个机器周期:地址线上的数值是
SS:(SP+1)(上一步SP已自增),此时从该地址读取8位数据写入BH寄存器,读取完成后SP再次加1。
你误以为读取一次内存就完成,是忽略了16位操作需要分两次读取内存(低字节和高字节)的细节——8086的外部数据总线是16位,但栈操作按字(16位)处理时,实际会通过两个独立的内存访问(对应你说的机器周期)完成16位数据的读取,再分别写入寄存器的高低字节。
内容的提问来源于stack exchange,提问作者Jan Intelkor
相关产品推荐
相关产品推荐

