河北-专接本期间整理的 部分微机原理知识点+错题,希望对大家有帮助 如若发现文章当中有误的地方,还望大家指正。
知识总结+错题 8086/8088引脚信号与功能 INTR:可屏蔽中断请求信号引脚(输入) CPU在执行每条指令的最后一个时钟周期会对INTR信号进行采样。 NMI:非屏蔽中断引脚(输入) 非屏蔽中断是一个由低到高的上升沿(不重要) RESET:复位信号引脚(输入) 复位信号至少维持4个时钟周期的高电平才有效 复位信号来到后,CPU便结束当前操作 并对处理器标志寄存器、IP、DS、SS、ES及指令队列清零 将CS设置为FFFFH 当复位信号变为低电平时,CPU从FFFF0H开始执行程序 HOLD:总线保持请求信号(输入) 对于工作在DMA方式下的请求信号 HLDA:总线保持响应信号(输出) 内部存储器与外设直接数据交换,纯硬件传送,不需要CPU的参与,传送数据比较快。 READY:“准备好”信号引脚(输入) “准备好”信号是由所访问的存储器或者I/O设备发来的响应信号,高电平有效。 “准备好”信号有效时,表示内存或I/O设备准备就绪,马上就可以进行一次数据的传输。 CPU在每个总线周期的T3状态开始对READY信号进行采样。 如果检测到READY信号为低电平,则在T3状态之后插入等待状态Tw, 在Tw状态,CPU也对READY信号进行采样,若READY任为低电平,则继续插入Tw, 所以Tw可以插入1个或者多个。 直到READY变为高电平,才进入T4状态,完成数据传送。 从而结束当前总线周期。 AD15~AD0:地址/数据复用引脚(双向工作) 在8088中,A8~A15并不作复用,它们只用来输出地址,称为A8~A15。 作为复用引脚,在总线周期的T1状态用来输出要访问的 存储器 或 I/O 的地址。 T2~T3状态,对读周期来说,处于浮空状态。对于写周期来说,则是传输数据。 A0(低电平) 可以作为8086 偶地址存储体的选通信号。 AD15~AD0 在CPU响应中断,以及系统总线“保持响应”时,都被浮置为高阻状态。 A19/S6~A16/S3:地址/状态复用引脚(输出) A19/S6~A16/S3在总线周期的 T1 状态,用来输出地址的最高4位。 在总线周期的T2,T3,Tw和T4状态时,8086/8088总是使S6等于0 以表示8086/8088当前连在总线上。 S5表明中断允许标志的当前设置,S5=1,决定IF=1 S5=0决定IF=0 S4,S3 合起来指出 当前正在使用那个段寄存器 0 0 ES 0 1 SS 1 0 CS,或者未用任何段寄存器 1 1 DS 当系统总线处于“保持响应”状态时,A19/S6 ~ A16/S3 被浮置为高阻状态。 BHE非/S7:高8位数据总线允许 / 状态复用引脚(输出) 在总线周期的 T1状态,8086在 BHE非/S7 引脚输出BHE信号, 表示 高8位 数据总线 D15~D8 上的数据有效 在T2,T3,Tw 和 T4 状态,BHE非/S7 输出状态信号 S7,不过 在当下芯片S7 并没有任何的意义。 BHE非 和 A0 配合使用
在8086系统中,若要 读/写 奇地址单开始的一个字,需要用两个总线周期。 在8088系统中,第34脚不是 BHE非 / S7,而是别的信号。 RD非:读信号引脚(输出) 此信号指出将要执行一个对内存或I/O端口的读操作。 读取内存或者 I/O端口中的数据,取决于 M/IO非 信号 在一个执行读操作的总线周期中 RD非 信号在 T2,T3 和 Tw状态均为低电平。 在系统总线进入“保持响应”期间, RD非 引脚 被浮置为高阻状态。 这个引脚和组态无关(和工作在最大工作模式 或者 或者最小工作模式无关) 最小工作模式 INTA非:中断响应 引脚/信号 (输出) 用于对外设的中断请求做出响应,中断响应周期要用两个总线周期。 第一个总线周期通知外设,它(外设)发出的总线请求,已经得到允许, 第二个总线周期通知外设,往数据总线上放中断类型码。 (不够严谨,但是也够用) ALE:地址锁存允许信号(输出) 8086/8088提供给地址锁存器8282/8283的控制信号。 任何一个总线周期的T1状态,ALE输出有效电平,以表示当前在地址/数据复用总线上输出的是地址信息。 地址锁存器将ALE作为锁存信号,对地址进行锁存。 注意ALE端不能被浮空。 内部寄存器 段寄存器 CS:代码段寄存器 DS:数据段寄存器 ES:附加段寄存器 SS:堆栈段寄存器 通用寄存器 数据寄存器: AX(AH、AL):累加器 有些指令约定以AX(或AL)为 源或目的寄存器 例如:IN 累加器,端口 OUT 端口,累加器 这里的累加器只能是(AX 或 AL) BX(BH、BL):基址寄存器 BX可以用作间接寻址的地址寄存器或基地址寄存器 BH、BL可以用作8位通用寄存器 CX(CH、CL):计数寄存器 CX在循环和串操作中充当计数器,指令执行后CX内容自动修改。 在移位指令中移位次数为1时直接给出,其他情况将移位次数写入CL DX(DH、DL):数据寄存器 DX除了用作通用寄存器外, 在I/O指令中,可用作端口地址, 乘除法指令中用作辅助累加器。 指针和变址寄存器: BP:基址指针寄存器 SP:堆栈指针寄存器 堆栈操作中用来指定栈顶。 SI:源变址寄存器 DI:目的变址寄存器 Tip1:只有BP、BX、SI、DI 可以加上中括号作为偏移地址来使用。SS段寄存器用来指定堆栈的段地址 SP用于指定堆栈的栈顶。在我的印象里面,AH、AL、BH、BL、CH、CL、DH、DL,都可以用作寄存器寻址或者立即数寻址。SI、DI,这两个在地址变化的时候要用到,但是区别不大,一般情况下用 SI 比较多,BX也可以用于地址变化的情况。
控制寄存器: IP:指令指针寄存器 和CS配合, CS:IP,代表下一条指令的地址 FLAG:标志寄存器 Tip2:EU:AX、BX、CX、DX、SP、BP、SI、DIBIU:IP、FLAG(PSW)、CS、SS、DS、ES基址寄存器:BP、BX变址寄存器:SI、DIBP 默认的段地址是SSBX、SI、DI 默认的段地址是DSCS:IPSS:SP BP(如果有1个空就填SP)DS:BX SI DI 8086/8088标志位 状态标志 CF:进位标志 加法运算时,最高位产生进位,或 减法运算时,最高位产生借位 的时候 CF=1ZF:零标志 运算结果为0的时候,ZF=1, 运算结果非0的时候,ZF=0OF:溢出标志 字节运算的结果超出了-128~+127 127 = 1111 111B(7位) 字运算的结果超出了 -32768~+32767 32767 = 1111 1111 1111 111B(15位)
AF:辅助进位标志 加法运算时,D3往D4位有进位, 减法运算时,D3往D4位有借位。 AF=1DAA指令: 如果AL的低4位大于9或AF=1,AL的内容加06H,并将AF置1, 如果AL的高4位大于9或CF=1,AL的内容加60H,并将CF置1。 如果两个都不满足则将AF、CF清零。SF:符号标志 与运算结果的最高位相同。PF:奇偶标志 运算结果的低8位中,所含“1”的个数为偶数时,PF=1。 控制标志 IF:中断标志 IF=1,CPU可以接受,可屏蔽中断请求。 IF=0,CPU不能接受,可屏蔽中断请求。DF:方向标志 控制串操作用指令用的标志 DF=0,串操作过程中的地址会不断增值 DF=1,串操作过程中的地址会不断减值TF:跟踪标志 TF=1,CPU按跟踪方式执行指令。(目前为止还没有用过) 标志寄存器FR中各个标志的位置 ODITSZ A P C “欧弟是一个IT男傻子APC” 字节运算的结果超出了 -128 ~ +127 负数总是要比正数多一个。 字运算的结果超出了 -32768 ~ +32767 为溢出OF=1 8位整数原码、反码、补码的数值范围 原码:+127 ~ -127 反码:+127 ~ -127 补码:+127 ~ -128 +0 和 -0的补码都是 0000 0000 -128 的补码 1000 0000 8位无符号数的取值范围:0~255 这些寄存器一般都用于什么作用?一般都有什么作用?AX、BX、CX、DX等等吧,随后看课整理。。。。 寻址方式有 7 种立即数寻址:MOV AX,080AH寄存器寻址:MOV AX,BX存储器寻址直接寻址:MOV AX,[2000H] 默认的段地址 DS段寄存器 MOV AX,ES:[2000H] 段超越前缀改变寄存器间接寻址:MOV AX,[SI] BX、SI、DI 默认段地址DS BP 默认段地址 SS 寄存器相对寻址:MOV AX,COUNT[SI] 、MOV AX,[COUNT+SI] BX、SI、DI 默认段地址DS BP默认的段地址是SS 偏移量为 8位 或者16位有符号 位移量基址变址寻址:MOV AX,[BX+SI] 基址寄存器(BX、BP)+ 变址寄存器(SI、DI)BX对应DS段寄存器 BP对应SS相对基址变址寻址:MOV AX,[BX+SI+250H] (BX、BP)+ (SI、DI)+ (8位、16位偏移量) BX对应DS BP对应SS 21 = 2 22 = 4 23 = 8 24 = 16 25 = 32 26 = 64 27 = 128 28 = 256 29 = 512 210 =1024 A B C D E F 10 11 12 13 14 15 10–1010 11–1011 12–1100 13–1101 14–1110 15–1111 中断向量表位于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、指令队列) 当复位信号无效时 CPU从 FFFF0H 开始执行程序 8086的指令队列6个字节 8088的指令队列4个字节。 在计算机系统中,和CPU传送信息最多的部件是(内存)
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、执行 T1 T2 T3 T4 给地址 发读命令 准备数据 结束
这里面寄存器的运算速度最快 虚拟存储器,是为了扩大内存的。 课本P69页 中断优先级由高到低 内部中断(除法中断、溢出中断、指令中断) 不可屏蔽中断 NMI 可屏蔽中断 INTR 单步中断 分母为0 的中断(INT 0)是优先级最高的内部中断。 单步中断 INT 1 溢出中断 INT 4 断点中断 INT 3 指令中断 INT N 中断向量:用来存放中断服务程序的入口地址 或 跳转到中断服务的入口地址 非屏蔽中断NMI(输入)的中断类型号为2
8255A 没有数据收发控制器 8255A有: 数据总线缓冲器 读/写控制部件 数据端口A、B、C A组控制部件 B组控制部件 8259A有: 数据总线缓冲器 读/写控制电路 (。。。) 8253A有: 数据总线缓冲器 读/写控制电路 控制字寄存器 通道0、1、2 8253、8259、8255都具有 数据总线缓冲器、读/写控制电路 8253芯片的工作方式:工作方式0: 工作方式0被称作计数结束中断方式。 OUTi 输出低电平。 若GATE信号为高电平 CPU写入计数初值,OUTi 仍然为低电平 计数器开始减“1”计数,直到计数值为0 OUTi 输出由低电平向高电平的跳变。(可用它向CPU发出中断请求) OUTi 输出的高电平一直持续到下次再次写入计数值为止 ================= GATE=1 允许减“1”计数 GATE=0 禁止减“1”计数 计数值将保持GATE有效时的数值不变,待GATE重新有效后,减“1”计数继续进行。 方式0 计数器初值一次有效。 所以下面这道题目,不能是停止计数,应该为 暂停计数,因为GATE有效后还会接着原来的计数值减下去。
工作方式1 工作方式1 被称作可编程单脉冲发生器 CPU装入计数值n后 OUTi输出高电平 GATE是高电平 或 GATE是低电平 ,都不开始 减“1”计数。 GATE由低电平向高电平跳变形成上升沿,计数过程开始。 OUTi 输出高电平向低电平跳变 形成输出单脉冲的前沿 待计数值记到“0”,OUTi 输出由低电平向高电平的跳变 形成输出单脉冲的后沿。 ================= 方式1 所能输出的单脉冲的宽度为CLKi 周期的 n倍 如果在减“1”计数过程中 GATE 由高电平跳变为低电平,这并不影响计数过程 若重新遇到GATE的上升沿,则从初值开始重新计数 效果上会使输出的单脉冲加宽 计数值 一次有效,每输入一次计数值,只产生一个负极性单脉冲。工作方式2 工作方式2被称作速率波发生器 进入这种工作方式 OUTi 输出高电平 装入计数值 n 后 如果GATE为高电平,则立即开始计数 OUTi保持为高电平不变 待计数值减到“1”和“0”之间 OUTi 将输出宽度为一个CLKi周期的负脉冲 计数值为“0”时 自动重新装入 计数初值n,实现循环计数 ==================== OUTi 将输出一定频率的负脉冲序列, 脉冲宽度 固定为 一个CLKi 周期 重复周期为 CLKi 周期的 n倍。 如果在减“1”计数过程中,GATE变为无效,暂停减“1”计数 待GATE恢复有效后,从初值n开始重新计数 CUP可在任何时候,重新写入新的计数值,不会影响正在减“1”的计数过程 而是从下一个计数操作周期开始按照新的计数值改变输出脉冲的速率工作方式3 工作方式3 被称作方波发生器 (“波”一定是连续的) OUTi 输出低电平 装入计数值 n 之后,OUTi 立即跳变为 高电平 如果GATE为高电平 立即开始减“1”计数 OUTi 保持为高电平 若 n 为偶数 ,则当计数值 减到 n/2 时 OUTi,跳变为低电平 一直保持到计数值为“0” 系统重新置入计数值 n,实现循环计数 ======================== 只在 计数值 n 为偶数,可输出重复周期为 n 占空比为 1:1 的方波 此时OUTi 端输出的周期为 n X CLKi周期 占空比为 1:1的方波序列 若 n 为奇数,则OUTi 端,输出周期为 n X CLKi周期 占空比为 (n+1)/2](高电平) / [(n-1)/2 的近似方波 若 GATE 变为无效 暂停减“1”计数 GATE变为有效 重新从初值 n 开始减“1”计数 若要改变输出方波的速率 CPU可以在任何时候重新装入新的计数初值 n 从下一个计数操作周期开始改变输出方波的速率工作方式4 工作方式4 被称作,软件触发方式 OUTi输出高电平 装入计数值n后 如果GATE为高电平 立即开始减“1”计数 直到 计数值 减到“0”为止 OUTi 输出宽度为一个 CLKi 周期的负脉冲 =============================== 由软件装入的计数值只一次有效 如果要继续操作,必须重新置入计数初值 n 操作过程中,若 GATE 变为无效 停止减“1”计数 GATE再次有效 重新从初值开始减“1”计数 工作方式5 工作方式5 被称作 硬件触发方式 OUTi 输出高电平 硬件触发信号由 GATE 端引入 因此,开始时 GATE应输入为 0 装入计数初值 n 后 减“1”计数并不工作 硬件触发信号由GATE端引入一个正阶跃信号 减“1”计数才会开始 待计数值记到“0” OUTi将输出 负脉冲 宽度为1个CLKi周期 ================================= 当计数值计到“0”后,系统自动重新装入计数值 n 但并不开始计数 等到 GATE端引入正跳跃 才会开始减“1”计数 GATE信号为1时有效:方式0、方式2、方式3、方式4 GATE信号为正沿有效:方式1、方式5 暂停,接着之前的数字减:方式0、 暂停、重新计数:方式1、方式2、方式3、方式4 循环计数:方式2、方式3、方式5(正跃阶时,才计数) 一次有效:方式0、方式1、方式4 8253的初始化程序: 一般情况下: 先送控制字 MOV DX,XXX MOV AL,XXX OUT DX,AL 再送计数初值 MOV DX,XXX MOV AL,XXX OUT DX,AL 一般来说就是3行, 第一行,把端口号给了DX 第二行,把控制字/计数初值给了AL 第三行,把AL给了DX 送数据的时候只能一次送8位 累加器:AL、AX OUT 端口号,累加器 IN 累加器,端口号 端口地址小于256(100H)时(00H~0FFH)(两位的“顶配”),可直接给出端口地址 大于等于256 时,先将端口地址送DX寄存器。 对于十进制计数:例如6000。先送低位,再送高位。送的时候要写成 0、60H(特别要注意“H”) 8255的初始化程序: MOV DX,控制端口号 MOV AL,控制字 OUT DX,AL 初始化程序: DATA SEGMENT ……….. DATA ENDS CODE SEGMENT ASSUME CS:CODE , DS:DATA START: MOV AX,DATA MOV DS,AX …………. …………. MOV AH,4CH INT 21H CODE ENDS END START DMA控制方式是一种以 块 为单位进行传送数据的方式。
0C85H 和 10H,直接数值相乘就行。不用在转成10进制再去相乘了。 加减运算指令: 目的操作数只能是:寄存器、存储器、 源操作数可以是:寄存器、存储器、立即数 ADD OP目,OP源 —-> OP目 = OP目+OP源 ADC OP目,OP源 —-> OP目 = OP目+OP源+CF SUB OP目,OP源 —> OP目 = OP目 – OP源 SBB OP目,OP源 —> OP目 = OP目 – OP源 – CF CMP OP目,OP源 —> OP目 – OP源 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, 乘积存放在,AH:AL 或者 DX:AX 如果OP是8位操作数 最后的积 存放在 AH:AL中即(AX中) 如果OP是16位操作数 最后的积 存放在 DX:AX中 除法指令: 被除数 / 除数 = 商 DIV OP 无符号数除法指令 IDIV OP 有符号数除法指令 操作过程: 字节除法: AX/OP —>AL(商) AX MOD OP —>AH (余数) 字除法: (DX、AX)/ OP —> AX (商) (DX、AX)MOD OP —> DX (余数) 只有 AX 与 DX:AX 商在低位,余数在高位 被除数是除数的两倍 指令中的操作数是除数,可以是8/16位通用寄存器及存储器 被除数隐含在AX(字节除)或者 DX:AX(字除法)中。 商的符号根据代数规则确定 余数的符号与被除数相同。 有符号除法中字节相除时 最大的商为+127 (7FH) 最小的商为-128 (80H) 有符号除法中字相除时 最大的商为+32767(7FFFH) 最小的商为-32768 (8000H) 如果商超出这个范围,将产生一个类型为0的中断。 在除法中 被除数是除数的两倍关系 逻辑指令: AND OP目,OP源 —> 与 OR OP目,OP源 —> 或 XOR OP目,OP源 —> 异或 NOT OP —> 按位取反 TEST OP目,OP源 —> 与运算(不回送结果的与运算) AND、OR、XOR、NOT,这些操作完了之后会将结果回送到 目标操作数。 TEST,只根据结果设置标志位,不回送结果。 移位指令: SHL/SAL OP目,计数值 SHR OP目,计数值 移出的那一位给了CF,留下空缺的位置补0 SAR OP目,计数值 移出的那一位给了CF, 最高位的值不变 ROL OP目,计数值 ROR OP目,计数值 移出的那一位给了CF,和空缺的哪一位 RCL OP目,计数值 RCR OP目,计数值 移出的那一位给了CF,CF中的那一位,给了空缺的那一位 每左移动1位,相当于乘以2 每右移动1位,相当于除以2 一般这是相对于SAR、SAL来说的。 移位次数为1时,直接给出 其他情况,要将移位次数写入CL一般移位指令逻辑移位指令:SHL、SHR算数移位指令:SAL、SAR循环移位指令循环移位指令:ROL、ROR带进位的循环移位指令:RCL、RCR 一看见 S 了那一定是,一般移位指令 一看见 R了那一定是,循环移位指令 转移指令:
无符号数:A:高于B:低于有符号数:G:大于L:小于 N:不 E:相等 简明: 取补指令:NEG OP 操作数可以是8位/16位通用寄存器或存储器操作数,不能是立即数! 1、从右边数找到第一个“1”,它和它的右边保持不变,它左边的数字按位取反(包括最高位)。再送回OP。 字节扩展指令:CBW 将AL中的单字节数的符号扩展到AH中 看前面的符号位是”0″,AH就全部为”0″。是”1″,AH就全部为”1″。 或者,AL<80H, 00H–>AH AL≥80H,0FFH–>AH 字扩展指令:CWD 将AX中的数的符号扩展到DX中 或者,AX<8000H,则 0000H—> DX AX≥8000H,则0FFFFH —>DX 详细: NEG OP 将操作数取补后,送回原操作数 操作数可以是8位/16位通用寄存器或存储器操作数,不能是立即数! 8086的求补没有正负数之分。 求这个数相反数的补码(可以这么理解) 算法: 1、从右边数找到第一个“1”,它和它的右边保持不变,它左边的数字按位取反(包括最高位)。 2、将操作数按位取反(包括最高位)后加1。 3、OP = 0 – OP 设置标志位的这些东西(待定)。 1、清累加器AX的方式(4种) MOV AX,0 XOR AX,AX AND AX,0 SUB AX,AX 2、清进位标志CF(6种) SUB AX,AX AND AX,AX OR AX,AX XOR AX,AX TEST AX,AX CLC 3、将累加器内容(AX)乘以2(不考虑溢出)(5种) 1)、MOV CX,2 MUL CX 2)、SAL AX,1 3)、SHL AX,1 4)、CLC RCL AX,1 5)、ADD AX,AX 4、将累加器内容(AX)除以2(不考虑余数)(5种) 1)、SAR AX,1(带符号数) 2)、CLC (无符号数) RCR AX,1 3)、SHR AX,1(无符号数) 4)、MOV CX,2(无符号数) DIV CX 5)、MOV CX,2(带符号数) IDIV CX
2024最新激活全家桶教程,稳定运行到2099年,请移步至置顶文章:https://sigusoft.com/99576.html
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。 文章由激活谷谷主-小谷整理,转载请注明出处:https://sigusoft.com/78975.html