河北专接本微机原理知识点错题整理,助你顺利通过考试
如若文章中有误的地方还望大家指正。
知识总结+错题
8086/8088引脚信号与功能
8086/8088引脚信号与功能
CPU在执行每条指令的最后一个时钟周期会对INTR信号进行采样。
内部存储器与外设直接数据交换,纯硬件传送,不需要CPU的参与,传送数据比较快。
“准备好”信号是由所访问的存储器或者I/O设备发来的响应信号,高电平有效。
“准备好”信号有效时,表示内存或I/O设备准备就绪,马上就可以进行一次数据的传输。
CPU在每个总线周期的T3状态开始对READY信号进行采样。
如果检测到READY信号为低电平,则在T3状态之后插入等待状态Tw,
在Tw状态,CPU也对READY信号进行采样,若READY任为低电平,则继续插入Tw,
在8088中,A8~A15并不作复用,它们只用来输出地址,称为A8~A15。
作为复用引脚,在总线周期的T1状态用来输出要访问的 存储器 或 I/O 的地址。
T2~T3状态,对读周期来说,处于浮空状态。对于写周期来说,则是传输数据。
A0(低电平) 可以作为8086 偶地址存储体的选通信号。
AD15~AD0 在CPU响应中断,以及系统总线“保持响应”时,都被浮置为高阻状态。
A19/S6~A16/S3在总线周期的 T1 状态,用来输出地址的最高4位。
在总线周期的T2,T3,Tw和T4状态时,8086/8088总是使S6等于0
S5表明中断允许标志的当前设置,S5=1,决定IF=1 S5=0决定IF=0
当系统总线处于“保持响应”状态时,A19/S6 ~ A16/S3 被浮置为高阻状态。
BHE非/S7:高8位数据总线允许 / 状态复用引脚(输出)
在总线周期的 T1状态,8086在 BHE非/S7 引脚输出BHE信号,
在T2,T3,Tw 和 T4 状态,BHE非/S7 输出状态信号 S7,不过 在当下芯片S7 并没有任何的意义。
BHE非 和 A0 配合使用
在8086系统中,若要 读/写 奇地址单元开始的一个字,需要用两个总线周期。
在8088系统中,第34脚不是 BHE非 / S7,而是别的信号。
RD非 信号在 T2,T3 和 Tw状态均为低电平。
在系统总线进入“保持响应”期间, RD非 引脚 被浮置为高阻状态。
这个引脚和组态无关(和工作在最大工作模式 或者 或者最小工作模式无关)
最小工作模式
INTA非:中断响应 引脚/信号 (输出)
用于对外设的中断请求做出响应,中断响应周期要用两个总线周期。
第一个总线周期通知外设,它(外设)发出的总线请求,已经得到允许,
8086/8088提供给地址锁存器8282/8283的控制信号。
任何一个总线周期的T1状态,ALE输出有效电平,以表示当前在地址/数据复用总线上输出的是地址信息。
内部寄存器
段寄存器
CS:代码段寄存器
DS:数据段寄存器 ES:附加段寄存器
SS:堆栈段寄存器
通用寄存器
有些指令约定以AX(或AL)为 源或目的寄存器
CX在循环和串操作中充当计数器,指令执行后CX内容自动修改。
在移位指令中移位次数为1时直接给出,其他情况将移位次数写入CL
BP:基址指针寄存器
DI:目的变址寄存器
控制寄存器:
IP:指令指针寄存器
8086/8088标志位
状态标志
字节运算的结果超出了-128~+127 127 = 1111 111B(7位)
字运算的结果超出了 -32768~+32767 32767 = 1111 1111 1111 111B(15位)
减法运算时,D3往D4位有借位。 AF=1
如果AL的低4位大于9或AF=1,AL的内容加06H,并将AF置1,
如果AL的高4位大于9或CF=1,AL的内容加60H,并将CF置1。
运算结果的低8位中,所含“1”的个数为偶数时,PF=1。
控制标志
DF=0,串操作过程中的地址会不断增值
DF=1,串操作过程中的地址会不断减值
TF=1,CPU按跟踪方式执行指令。(目前为止还没有用过)
标志寄存器FR中各个标志的位置
“欧弟是一个IT男傻子APC”
字节运算的结果超出了 -128 ~ +127 负数总是要比正数多一个。
字运算的结果超出了 -32768 ~ +32767 为溢出OF=1
8位整数原码、反码、补码的数值范围
+0 和 -0的补码都是 0000 0000
-128 的补码 1000 0000
8位无符号数的取值范围:0~255
这些寄存器一般都用于什么作用?一般都有什么作用?AX、BX、CX、DX等等吧,随后看课整理。。。。
中断向量表位于8086内存的 00000H~003FFH 地址中
存放256个中断服务的入口地址 每一个地址占4个字节 总共要占用1024个字节(1KB)
中断类型号(n) n*4、n*4+1—>IP(低位的两个字节) n*4+2、n*4+3—>CS(高位的两个字节)
8086、8088要求RESET(复位信号-输入)至少维持4个时钟周期的高电平,才有效。
CS设置为 FFFFH 、其余的都设置为 0(标志寄存器、IP、DS、SS、ES、指令队列)
8086的指令队列6个字节 8088的指令队列4个字节。
READY “准备好”信号引脚–输入 高电平有效
CPU在每个总线周期的T3状态开始对READY信号进行采样
CPU在每个总线周期的T3状态的下降沿开始对READY信号进行采样
如果检测低电平,插入Tw ,在Tw状态也会对CPU进行采样,若为低电平,插入Tw,若变为高电平,进入T4状态
一个基本的总线周期,由4个时钟周期组成 分为4个状态 T1、T2、T3、T4
中断响应周期:从CPU中止现行程序转到中断服务程序这一过程。
指令周期 包含 总线周期 包含 T状态
机器周期 和 总线周期 一个说法
MOV AX , [2000H] 需要几个总线周期?
1个指令周期 但是有4 个总线周期
1、取指令周期
2、取源操作数(从存储器当中拿)
3、取目标操作数(从寄存器当中拿)
4、执行
虚拟存储器,是为了扩大内存的。 课本P69页
中断向量:用来存放中断服务程序的入口地址 或 跳转到中断服务的入口地址
8255A 没有数据收发控制器
8255A有:
A组控制部件
B组控制部件
8259A有:
8253A有:
8253、8259、8255都具有 数据总线缓冲器、读/写控制电路
OUTi 输出低电平。
CPU写入计数初值,OUTi 仍然为低电平
计数器开始减“1”计数,直到计数值为0
OUTi 输出由低电平向高电平的跳变。(可用它向CPU发出中断请求)
OUTi 输出的高电平一直持续到下次再次写入计数值为止
GATE=1 允许减“1”计数
GATE=0 禁止减“1”计数
计数值将保持GATE有效时的数值不变,待GATE重新有效后,减“1”计数继续进行。
方式0 计数器初值一次有效。
所以下面这道题目,不能是停止计数,应该为 暂停计数,因为GATE有效后还会接着原来的计数值减下去。
CPU装入计数值n后 OUTi输出高电平
GATE是高电平 或 GATE是低电平 ,都不开始 减“1”计数。
GATE由低电平向高电平跳变形成上升沿,计数过程开始。
OUTi 输出高电平向低电平跳变 形成输出单脉冲的前沿
待计数值记到“0”,OUTi 输出由低电平向高电平的跳变 形成输出单脉冲的后沿。
如果在减“1”计数过程中 GATE 由高电平跳变为低电平,这并不影响计数过程
计数值 一次有效,每输入一次计数值,只产生一个负极性单脉冲。
OUTi保持为高电平不变
待计数值减到“1”和“0”之间
OUTi 将输出宽度为一个CLKi周期的负脉冲
计数值为“0”时
OUTi 将输出一定频率的负脉冲序列,
如果在减“1”计数过程中,GATE变为无效,暂停减“1”计数
CUP可在任何时候,重新写入新的计数值,不会影响正在减“1”的计数过程
而是从下一个计数操作周期开始按照新的计数值改变输出脉冲的速率
工作方式3 被称作方波发生器 (“波”一定是连续的)
OUTi 输出低电平
立即开始减“1”计数
OUTi 保持为高电平
OUTi,跳变为低电平
一直保持到计数值为“0”
只在 计数值 n 为偶数,可输出重复周期为 n 占空比为 1:1 的方波
此时OUTi 端输出的周期为 n X CLKi周期 占空比为 1:1的方波序列
若 n 为奇数,则OUTi 端,输出周期为 n X CLKi周期 占空比为 (n+1)/2](高电平) / [(n-1)/2 的近似方波
暂停减“1”计数
GATE变为有效
重新从初值 n 开始减“1”计数
CPU可以在任何时候重新装入新的计数初值 n
OUTi输出高电平
立即开始减“1”计数
直到 计数值 减到“0”为止
OUTi 输出宽度为一个 CLKi 周期的负脉冲
===============================
停止减“1”计数
GATE再次有效
重新从初值开始减“1”计数
OUTi 输出高电平
减“1”计数并不工作
减“1”计数才会开始
待计数值记到“0”
OUTi将输出 负脉冲
=================================
当计数值计到“0”后,系统自动重新装入计数值 n
才会开始减“1”计数
GATE信号为1时有效:方式0、方式2、方式3、方式4
8253的初始化程序:
端口地址小于256(100H)时(00H~0FFH)(两位的“顶配”),可直接给出端口地址
大于等于256 时,先将端口地址送DX寄存器。
对于十进制计数:例如6000。先送低位,再送高位。送的时候要写成 0、60H(特别要注意“H”)
DMA控制方式是一种以 块 为单位进行传送数据的方式。
0C85H 和 10H,直接数值相乘就行。不用在转成10进制再去相乘了。
目的操作数只能是:寄存器、存储器、
源操作数可以是:寄存器、存储器、立即数
ADC OP目,OP源 —-> OP目 = OP目+OP源+CF
SUB OP目,OP源 —> OP目 = OP目 – OP源
SBB OP目,OP源 —> OP目 = OP目 – OP源 – CF
INC OP —>自加1
DEC OP —>自减1
ADD、ADC、AUB、ABB 都会根据最终的结果来设置标志位。
特殊:CMP指令是比较指令,将目的操作数与源操作数相减,不回送结果只根据结果设置标志位。
INC、DEC 也会根据最终的结果来设置标志位。但是除了CF标志位。
INC、DEC的OP 可以是 8位/16位通用寄存器 或 存储器 不能为 立即数!!!
MUL OP 无符号数乘法指令
IMUL OP 有符号数乘法指令
指令中给出的操作数OP是乘数,它可以是8/16位通用寄存器或者存储器
被乘数隐含在AL/AX,
如果OP是8位操作数 最后的积 存放在 AH:AL中即(AX中)
DIV OP 无符号数除法指令
IDIV OP 有符号数除法指令
被除数是除数的两倍
余数的符号与被除数相同。
TEST OP目,OP源 —> 与运算(不回送结果的与运算)
AND、OR、XOR、NOT,这些操作完了之后会将结果回送到 目标操作数。
TEST,只根据结果设置标志位,不回送结果。
E:相等
取补指令:NEG OP
操作数可以是8位/16位通用寄存器或存储器操作数,不能是立即数!
1、从右边数找到第一个“1”,它和它的右边保持不变,它左边的数字按位取反(包括最高位)。再送回OP。
将AL中的单字节数的符号扩展到AH中
看前面的符号位是"0",AH就全部为"0"。是"1",AH就全部为"1"。
AL≥80H,0FFH–>AH
字扩展指令:CWD
将AX中的数的符号扩展到DX中
AX≥8000H,则0FFFFH —>DX
操作数可以是8位/16位通用寄存器或存储器操作数,不能是立即数!
8086的求补没有正负数之分。
1、从右边数找到第一个“1”,它和它的右边保持不变,它左边的数字按位取反(包括最高位)。
2、将操作数按位取反(包括最高位)后加1。
3、OP = 0 – OP
2、清进位标志CF(6种)
4、将累加器内容(AX)除以2(不考虑余数)(5种)
1)、SAR AX,1(带符号数)
2)、CLC (无符号数)
3)、SHR AX,1(无符号数)
4)、MOV CX,2(无符号数)
5)、MOV CX,2(带符号数)