微机原理

微机原理问题汇总

1、8086在最小模式下,第28引脚M/IO。当该引脚输出高电平时,表明CPU要警醒存储器的读写操,这个时候是地址总线上出现访问存储器的地址;输出低电平时,进行IO端口读写操作,这时候是低位地址总线上出现的是I/O端口地址
???为啥一个直接是地址总线,另一个要强调低位地址总线呢

2、lock信号是由指令前缀lock产生,在有lock前缀的指令执行中lock信号有效,执行完毕后,便撤销lock信号。lock信号有效时,表示CPU不希望系统中其他总线部件占用系统总线。
???然后书上有这样一句话“当一条指令有多个总线周期,在执行时不希望这些总线周期要连续完成时使用前缀lock”并没有理解这句话是什么意思
???另外,在8086的两个中断响应脉冲之间,lock信号也自动变为有效,以防止其他总线部件在中断响应过程中占有总线。那整个过程结束之后lock信号也是自动成无效的嘛?

关于指令前缀的问题

(1)指令编码(硬编码)的结构
微机原理

怎么判断是不是前缀指令呢? 前缀指令就几个,很好确定,根据指令的内容来确定

(2)前缀指令是分组的:

前缀指令最多是4个,每组一个

<1>LOCK 和REPEAT前缀指令:
LOCK F0
//锁地址总线的 在同一时刻只能有一个核的CPU来读取那条指令,这个指令在多核下才有意义
REPNE/REPNZ F2 //重复执行 当zf是0的时候执行
REP/REPZ F3 //重复执行 当zf是1的时候执行
<2>段前缀指令:
CS(2E)、SS(36)、DS(3E)、ES(26)、FS(64)、GS(65)
//存在的意义是可以改变寻址时候的段寄存器
<3>操作数宽度前缀指令:
66 //改变操作数的宽度的,如果是32位+66->16位,如果是16位+66->32位
<4>地址宽度前缀指令:
67 //改变寻址方式的 ,这个前缀指令也是双向的
(3)前缀指令最多占4个字节,最少占0个字节

每组最多一个,可以组合使用,没有顺序问题

3、最小模式的总线读周期和写周期的地址输出和数据输出中间读数据的时候有一个高阻态为下一步做准备,写周期却没有,难道和cpu与外设的数据传输方向有关?