微机原理与接口技术总结太原理工自动化

微机原理与接口技术总结
张柏珵
第1章 微型计算机概述

  1. 计算机经历了 电子管计算机、晶体管计算机、集成电路计算机、大规模集成电路计算机 4个发展阶段。
  2. 微型计算机经历了 低档8位、中档8位、16位、32位、64位高档微处理器和微型计算机5个发展阶段。
  3. 微处理器包括 CPU、总线、寄存器、、I/O接口
  4. 最高位为符号位时,可利用双高位判别法。
    Eg1. 50D+84D=[50]原+[84]原==[00110010]补+[01010100]补码=
    50D=0 0 1 1 0 0 1 0 B 84D=0 1 0 1 0 1 0 0 B
    0 64 32 16 8 4 2 1 0 64 32 16 8 4 2 1
    [00110010]
    [01010100]
    OF=Cs⊕Cp=0⊕1=1,有溢出,为正溢出,结果为错。
    注意:1.相加的俩个数符号位相同时才会存在溢出。符号位同0为正溢出,符号位同1为负溢出。
    2.OF使用双高位判别法时,Cs指的最高位(即符号位)对更高位是否发生进位和Cp指的是次高位(即数值最高位)对符号位是否发生进位。
    3.二级制的加法只能在补码时运行(正数的原码=反码=补码,负数的原码=反码+1,负数的反码=符号位不变,原码基础上其余各位按位取反)

5. 8421BCD码与十进制数的转化

  1. 10进制与k进制的转化
    整数部分/k取余,小数部分*k取整
    2B、16H、8O、10D
  2. 十六进制数的ASCII码

1357H=31 33 35 37H, ABCDH=41 42 43 44H ,3FH=33 46H
8. (定义)微处理器:Micro Processor /CPU ,是指一片或几片大规模集成电路组成的具有运算和控制功能的中央处理单元。主要包括算术逻辑部件ALU(运算器)、寄存器及控制器CU。是微型计算机的主要组成部分。
9. (定义)微型计算机:Micro Computer或μC,以微处理器CPU为核心,再配上一定容量的存储器(RAM、ROM)、输入/输出接口电路、这三部分通过外部总线连接起来。(微型计算机=cpu+存储器+I/O接口+系统总线)
10. (定义)微型计算机系统MCS或μCS,以微型计算机为核心+外设、辅助电路、电源及智慧计算机工作的软件,便构成完整的一个系统。
11. 微型计算机的结构框图。
注:地址总线AB是单向的,DB和CB都是双向的

(CPU)CPU由运算器和控制器两部分组成,运算器完成对数据的运算,包括逻辑/算术运算。控制器为指挥控制中心,控制计算机的一切操作。
(存储器)存储器一个记忆装置,用来存储数据、程序、运算的中间结果和最后结果,包括随机存取存储器RAM和只读存储器ROM
(I/O接口电路电路)微型计算机与外部设备联系的桥梁。信息传递的接口,对信息加以合理匹配、缓冲。
(数据总线DB)CPU与外界传递数据的信号线。DB可以双向传递数据序号,是一组双向三态总线。
(地址总线AB)由微处理器输出的一组地址线,用来指定CPU所访问的存储器和外部设备地址。地址总线的条数决定了直接访问的地址空间,是三态输出方式。
(控制总线CB)用来处理CPU和外部电路的工作同步。通过联络线对其它部件发出一系列命令,其它部件可以奖工作状态发送给CPU。
12. 衡量微机系统的主要性能指标:
字节;存储器容量;计算机的运算速度;控制能力;软硬件配置
历年考题:
13. 阐述时钟周期、总线周期和指令周期的概念
时钟周期也称为T状态,是CPU处理动作的最小时间单位。时钟周期值的大小由系统时钟(晶振频率)确定,两者关系是。8086的主频为5MHZ,时钟周期为200ns。
执行一条指令所需的时间称为指令周期。但是8086/8088中不同指令的指令周期是不等长的。首先,指令就是不等长的,最短的指令只需要1个字节,大部分指令是2个字节,最长的指令可能要6个字节。指令的最短执行时间是两个时钟周期,一般的加、减、比较、逻辑操作是几十个时钟周期,最长的为16位数的乘除法指令约要200个时钟周期。
总线周期由若干个时钟周期组成,也称机器周期(machine cycle),指CPU对内存储器或输入/输出端口完成一次读/写操作所需的时间。基本的总线周期有存储器读/写周期、输入/输出端口的读/写周期和中断响应周期。
14. 外部设备为什么要通过接口电路和主机系统相连?
外部设备的功能是多种多样的。有些外设作为输入设备,有些外设作为输出设备,也有些外设既作为输入设备又作为输出设备,还有一些外设作为检测设备或控制设备,而每一类设备本身可能又包括了多种工作原理不同的具体设备。对于一个具体设备来说,它所使用的信息可能是数字式的,也可能是模拟式的,而非数字式信号必须经过转换,使其成为对应的数字信号才能送到计算机总线。这种将模拟信号变为数字信号、或者反过来将数字信号变为模拟信号的功能是A/D、D/A接口来完成的。外设的工作速度通常比CPU的速度低得多,而且各种外设的工作速度互不相同,这就要求接口电路对输入/输出过程能起一个缓冲和联络的作用。 输入/输出接口电路是为了解决计算机和外部设备之间的信息变换问下题而提出来的,输入/输出接口是计算机和外设之间传送信息的部件,每个外设都要通过接口和主机系统相连。
15. 存储器需要接口电路和总线相连吗?
不需要,因为所有存储器都是用来保存信息的,功能单一;传送方式也单一,一次必定是传送1个字节或者1个字;品种很有限,只有只读类型和可读/可写类型。此外,存储器的存取速度基本上可以和CPU的工作速度匹配。这些决定了存储器可以通过总线和CPU相连。

第2章 微处理器及其结构
https://blog.youkuaiyun.com/m0_56510407/article/details/124080334
1.8086微处理器(16bit)

2.80486微处理器(32bit)

3.8086微处理器内部结构及功能
8086微处理器 = 执行单元EU + 总线接口部件BIU
执行单元EU=算术逻辑单元+标志寄存器+通用寄存器(AX、BX、CX、DX)+指针寄存器(SP、BP)+间址寄存器(SI、DI)+指令译码器+控制电路
总线接口部件BIU=地址加法器+16bit段寄存器,16bit指令指针IP、6word的指令队列缓冲器以及总线控制电路
总线接口部件BIU 负责8086与存储器和外设间的信息传送。(简言之就是负责从1内存的指定区域取指令/操作数,交给指令队列/BU进行排队/执行)
执行单元EU 负责指令的执行。
4.80486微处理器=总线接口部件+指令预取部件+指令译码部件+控制和保护测试单元部件+整数执行部件+分段部件+分页部件+浮点运算部件+高速缓存(Cache)管理部件
总线接口部件BIU与外部总线连接,用于管理访问外出存储器、I/O端口地址、数据总线和控制总线。

4.8086处理器的寄存器
通用寄存器:累加器AX;基址寄存器 BX;计数寄存器 CX;数据寄存器 DX
指针和变址寄存器:堆栈指针SP;基址指针 BP;源变址 SI;目标变址 DI
段寄存器:代码段CS;数据段 DS;堆栈段 SS;附加段 ES
标志寄存器:FR

5.80486的寄存器
通用寄存器:EAX~EDX,EBP、ESP、EDI、ESI;
指针寄存器:EIP
段寄存器:CS DS ES SS FS GS
标志寄存器:EFLAGS
系统地址寄存器:GDTR LDTR IDTR TR
控制寄存器:CR0——CR3
调试和测试寄存器:DR0——DR7,TR0——TR7
浮点寄存器
6.标志寄存器FR包含标志位及其作用

F = Flag
状态:
CF carry 进位,本次加分/减法,最高位(D7或者D15)产生进位或者借位的请客。 1 有进位/借味情况,0则无。
PF parity 奇偶,1 表示有偶数个1,0表示有奇数个1
AF auxiliary carry 辅助进位 D3到D4产生进位或借位的情况。AF=1有进位,0进位
ZF:zero 表示当前运算结果是否为0。1则结果为0
SF:symbol 运算结果的正负情况 ,1为负
OF:溢出情况,1表示补码运算有溢出
控制:
DF direction ,1串操作过程中的地址会自动递减1;反之+1
IF interrupt , 1开中断,CPU可以接受可屏蔽中断请求,反之不可接受
TF Trap ,1,CPU处于单步工作模式,执行一条指令自动产生一次内部中断
7.存储器为什么要分段?实地址模式存储器如何分段?
8086有20条地址线,可直接寻址1MB(220bit)存储空间。但寄存器都是16位的,可寻址216=64KB的存储空间。寄存器不能直接寻址1MB的存储空间。采用分段结构,16位段寄存器提供段基址(4位),由不同的寻址方式或寄存器提供16位偏移地址。共同形成20位的物理地址。
实地址模式下,1MB的存储器划分为 代码C、数据D、堆栈S、附加E。每段包含64KB单元,并且每个段的首地址是一个可以被16整除的数(段的起始地址的最低4位为0)
8. 逻辑地址=段基址(存放在段寄存器中)+偏移地址(由寻址方式提供)
都是无符号的16位二级制数,逻辑地址是用户进行重新设计时采用的地址
物理地址是1MB内存空间中每个存储单元的唯一地址。
20位物理地址的计算公式:
物理地址=段基址*16 + 偏移地址

9阐述时钟周期、总线周期和指令周期的概念
时钟周期:微处理器执行指令的最小时间单元,T状态。与微机的主频有关。
总线周期:CPU对存储器或I/O端口完成一次读/写操作所需的时间。
指令周期:CPU执行一条指令所需的时间。
10.80486的实地址工作模式下物理地址空间位1MB;保护模式下物理地址空间为4GB,程序可用的虚拟存储空间为64TB。分页功能:80486的4GB中创建虚拟8086的1MB空间。
11.总线状态码

M/#IO ,#相当于横线,该等于1则代表高电平有效,此处则为M,若等于0,则代表低电平有效,带——的有效,则为I/O

• 每个数据寄存器可分别拆分为两个8位寄存器:AH、AL、BH、BL、CH、CL、DH、DL

• 数据寄存器特有的习惯用法:
• AX:累加器
• 所有I/O指令都通过AX与接口传送信息,中间运算结果也多放于AX中;
• BX:基址寄存器
• 在间接寻址中用于存放基地址;
• CX:计数寄存器
• 用于在循环或串操作指令中存放计数值;
• DX:数据寄存器。
• 在间接寻址的I/O指令中存放I/O端口地址;在32位乘除法运算时,存放高16位数。
• SP:堆栈指针寄存器,其内容为栈顶的偏移地址
• BP:基址指针寄存器,常用于在访问内存时存放内存单元的偏移地址。
BX与BP在应用上的区别:
• 作为通用寄存器,二者均可用于存放数据;
• 作为基址寄存器,用BX表示所寻找的数据在数据段;用BP则表示数据在堆栈段。
• SI:源变址寄存器
• DI:目标变址寄存器
• 变址寄存器在指令中常用于存放数据在内存中的地址。

第3章 指令系统
1.寻址方式

2.操作码 操作数,操作数
一条指令应包含的三点信息:
o 运算数据的来源——源操作数
o 运算结果的去向——目标操作数
o 执行的操作——操作码
操作码[操作数],[操作数]
• 操作码:执行何种操作
• 操作数(地址码):指令执行的对象
o []:表示可选项,可以为空
o 第一个操作数:目标操作数
o 第二个操作数:源操作数
o 操作数表示了参加操作的数据或数据存放的地址
• 零操作数指令:操作码
o 操作对象是隐式的
• 单操作数指令:操作码 操作数
• 双操作数指令:操作码 [操作数] , [操作数]
• 多操作数指令:三操作数及以上
• 立即数:
o 由指令直接给出,是常数性质
o 无地址含义,只表示运算的数据,不能作为目标操作数
• 寄存器操作数
o 表示运算的数据存放在寄存器中
o 多数情况下,寄存器操作数指通用寄存器
o 在三类操作数中所需运行时间最短
• 存储器操作数
o 表示运算的数据存放在内存
o 指令中[ ]里是数据所在单元的偏移地址
o 在三类操作数中所需运行时间最长。
8086是16位CPU,指令操作数可以是8位或16位

MOV SI,100
MOV操作码 SI目标操作数 ,100源操作数
• 两个操作数必须是同样的大小。
• 两个操作数不能同时为内存操作数。
• 指令指针寄存器(IP、EIP 或 RIP)不能作为目标操作数。
存储器操作数:

• 存储器操作数传输单元个数取决于另一个操作数的大小
• 图中第一条指令的目标操作数是AL,是一个8位寄存器,所以传输一个内存,将内存单元1200H中数据22H存入8位寄存器AL中
• 图中第二条指令的目标操作数是AX,是一个16位寄存器,所以传输两个内存,单元将内存单元1200H中数据22H存入16位寄存器的低8位,将内存单元1201H中数据11H存入16位寄存器的高8位
3.寻址方式
寻址方式:寻找操作数所在地址的方法
• 源操作数
o 运算数据的来源
• 目标操作数
o 运算结果的去向
o 另一个运算数据
操作数可能的来源或运算结果可能的去处:
• 由指令直接给出
• 寄存器
• 内存单元
立即寻址

寄存器寻址

直接寻址

直接寻址默认操作数在DS;允许重设。
寄存器间接寻址

寄存器间址中 绝大部分DS、当BP时是SS,也支持重设

寄存器相对寻址
相对寻址主要用于一维数组的操作
常将位移量作为“表头”地址,间址寄存器的值作为表内相对地址
基址、变址寻址

隐含寻址

总结:
寻址方式表示指令运算对象的来源和运算结果的去向
立即寻址仅争对源操作数
寄存器寻址表示指令运算的数据在寄存器中
存储器寻址表示指令运算的对象在内存中,数据在内存中的偏移地址在[ ]中,段地址可以默认或重设
存储器寻址和寄存器寻址均可用于源或目标操作数

  1. 8086CPU的指令集
    一般数据传送指令MOV
    • 格式:MOV dest, src
    • 操作:src → dest
    • 两操作数字长必须相同;
    • 两操作数不允许同时为存储器操作数;
    • 两操作数不允许同时为段寄存器;
    • 在源操作数是立即数时,目标操作数不能是段寄存器;
    • IP和CS不作为目标操作数,FLAGS一般也不作为操作数在指令 中出现。

堆栈操作指令PUSH POP
堆栈操作的原则
• 先进后出
• 以字为单位:16位机中,字长是16位
压栈指令PUSH
• 格式:PUSH OPRD
• 说明:OPRD:16位寄存器或存储器的两个单元

• 执行过程:
• 栈顶指针SP - 2 → SP
• 操作数高字节 → SP+1
• 操作数低字节 → SP

出栈指令POP
• 格式: POP OPRD
• 执行过程:
o 操作数低字节 → SP
o 操作数高字节 → SP + 1
o SP + 2 → SP

• 堆栈中栈底是高地址,栈顶是低地址。
• 指令的操作数必须是16位;
• 操作数可以是寄存器或存储器两单元,但不能是立即数;
• 不能从栈顶弹出一个字给CS;
• PUSH和POP指令在程序中一般成对出现;
• PUSH指令的操作方向是从高地址向低地址,而POP指令的操作正好相反。
交换指令XCHG Exchange Registers
• 格式:
o XCHG REG,MEM/REG
• 注:
o 两操作数必须有一个是寄存器操作数
o 不允许使用段寄存器。
• 例:
o XCHG AX,BX
o XCHG [2000],C
查表转换指令XLAT Translate
• 格式:
o XLAT
• 说明:
o 用BX的内容代表表格首地址,AL内容为表内位移量,BX+AL得 到要查找元素的偏移地址
• 操作:
o 将BX+AL所指单元的内容送AL
字位扩展指令CBW、CWD
将符号数的符号位扩展到高位;
指令为零操作数指令,采用隐含寻址,隐含的操作数为 AX及AX,DX
无符号数的扩展规则为在高位补0

字节到字的扩展指令
• 格式:
o CBW
• 操作:
o 将AL内容扩展到AX
• 规则:
o 若最高位=1,则执行后AH=FFH
o 若最高位=0,则执行后AH=00H
字到双字的扩展指令
• 格式:
o CWD
• 操作:
o 将AX内容扩展到DX AX
• 规则:
o 若最高位=1,则执行后DX=FFFFH
o 若最高位=0,则执行后DX=0000H
输入输出指令IN、OUT
• I/O端口:I/O接口中用于存储数据、可以直接被CPU访问的寄存器。
• 计算机输入输出系统中可以包含若干接口控制电路(芯片),每个接口中都包含了1个或多个端口
指令寻址方式
• 根据端口地址码的长度,指令具有两种不同的端口地址表 现形式。
• 直接寻址
o 端口地址为8位时,指令中直接给出8位端口地址;
o 寻址256个端口。
• 间接寻址
o 端口地址为16位时,指令中的端口地址必须由DX指定;
o 可寻址64K个端口。

址传送指令LEA Load effective address
• 操作:
o 将变量的16位偏移地址写入到目标寄存器
• 当程序中用符号表示内存偏移地址时,须使用该指令。
• 格式:
o LEA REG,MEM
• 指令要求:
o 源操作数必须是一个存储器操作数,目标操作数通常是间址 寄存器。
标志传送指令

• 隐含操作数AH
o LAHF(Load AH from Flags)
 指令格式:
 LAHF
 操作:将FLAGS的低8位装入AH
o SAHF(Store AH into Flags)

• 隐含操作数FLAGS
o PUSHF(Push flags onto stack)
o POPF(Pop flags off stack)
5. 算术运算指令
加法运算指令
普通加法指令ADD
• 格式:
o ADD OPRD1,OPRD2
• 操作:
o OPRD1 + OPRD2 → OPRD1
• ADD指令的执行对全部6个状态标志位都产生影响

带进位位的加法指令ADC
• 指令格式、对操作数的要求、对标志位的影响与ADD 指令完全一样
• 指令的操作:
o OPRD1 + OPRD2 + CF → OPRD1
• ADC指令多用于多字节数相加,使用前要先将CF清零

加1指令INC
• 格式:
o INC OPRD
• 操作:
o OPRD+1 → OPRD
• 说明:OPRD不能是段寄存器,不能是立即数
• 常用于在程序中修改地址指针

减法运算指令
普通减法指令SUB
• 格式:
o SUB OPRD1,OPRD2
• 操作:
o OPRD1 - OPRD2 → OPRD1
• 对标志位的影响与ADD指令相同
考虑借位的减法指令SBB
• 指令格式、对操作数的要求、对标志位的影响与SUB 指令完全一样
• 指令的操作:
o OPRD1 - OPRD2 - CF → OPRD
减1指令DEC
• 格式:
o DEC OPRD
• 操作:
o OPRD - 1 → OPRD
• 指令对操作数的要求与INC相同,指令常用于在程序中修改计数值

比较指令CMP
• 格式:
o CMP OPRD1,OPRD2
• 操作:
o OPRD1- OPRD2
• 指令执行的结果不影响目标操作数,仅影响标志位
• 用途:
o 用于比较两个数的大小,可作为条件转移指令转移的条件
• 指令对操作数的要求及对标志位的影响与SUB指令相同
• 两个无符号数的比较:
o CMP AX,BX
o 若 AX ≥ BX → CF=0
o 若 AX < BX → CF=1
o 若 AX=BX → CF=1,ZF=1
• 两个带符号数的比较:
o CMP AX,BX
o 两个数的大小由OF和SF共同决定
o OF和SF状态相同 AX ≥ BX
o OF和SF状态不同 AX < BX
求补指令NEG
• 格式:
o NEG OPRD
• 操作:
o 0 - OPRD → OPRD
• 说明:
o OPRD是8/16位寄存器或存储器操作数
o 对一个负数取补码就相当于用零减去此数
• 执行NEG指令后,一般情况下都会使CF为1,除非给定的操作数为零才会使CF为0;
• 当指定的操作数的值为80H(-128)或为8000H(-32768),则执行NEG指令后,结果不变,但0F置1,其它情况下OF均置0
• 用0减去操作数,可以得到负数的绝对值
乘法指令
乘法指令采用隐含寻址,隐含的是存放被乘数的累加器AL或AX及存放结果的AX,DX
无符号的乘法指令MUL
• 格式:
o MUL OPRD
• 说明:OPRD不能是立即数
• 操作:
o OPRD为字节数 → AL × OPRD → AX
o OPRD为16位数 → AX × OPRD → DXAX
带符号的乘法指令IMUL
• 格式:
o IMUL OPRD
• 指令格式及对操作数的要求与MUL指令相同。
• 指令执行原理:
o 将两个操作数取补码(对负数按位取反加1,正数不变);
o 做乘法运算;
o 将乘积按位取反加1。
除法指令
无符号除法指令DIV
• 格式:
o DIV OPRD
有符号除法指令IDIV
• 格式:
o IDIV OPRD
注意:除法指令要求被除数是除数的双倍字长
若OPRD是字节数
• 执行:AX / OPRD
• 结果:
o AL=商 AH=余数
若OPRD是双字节数
• 执行: DXAX / OPRD
• 结果:
o AX=商 DX=余数
小结

算术运算类指令的执行会影响状态标志位。其中:
INC和DEC指令的执行不会影响CF
算术运算类指令中所有单操作数指令都要求操作数:
不能是立即数
如果是存储器操作数,需要声明操作数的字长(用PTR运算符)
乘法运算中:乘积是乘数的双倍字长
除法运算中:要求被除数是除数的双倍字长

6.逻辑运算指令
• 对操作数的要求:
o 大多与MOV指令相同。
o “非”运算指令要求操作数不能是立即数;
• 对标志位的影响
o 除“非”运算指令,其余指令的执行都会影响除AF 外的5个状态标志;
o 无论执行结果任何,都会使标志位OF=CF=0。
o “非”运算指令的执行不影响标志位。
与指令AND
• 格式:
o AND OPRD1,OPRD2
• 操作:
o 两操作数相“与”,结果送目标地址。
• 应用:
o 实现两操作数按位相与的运算
 AND BL,[SI]
o 使目标操作数的某些位不变,某些位清零
 AND AL,0FH
o 在操作数不变的 情况下使CF和OF清零
 AND AX,AX
或指令OR
• 格式:
o OR OPRD1,OPRD2
• 操作:
o 两操作数相“或”,结果送目标地址
• 应用:
o 实现两操作数相“或”的运算
 OR AX,[DI]
• 使某些位不变,某些位置“1”
o OR CL,0FH
• 在不改变操作数的 情况下使OF=CF=0
o OR AX,AX
非指令NOT
• 格式:
o NOT OPRD
• 操作:
o 操作数按位取反再送回原地址
• 注:
o 指令的执行对标志位无影响
• 例:
o NOT BYTE PTR[BX]
异或运算指令XOR
• 格式:
o XOR OPRD1,OPRD2
• 操作:
o 两操作数相“异或”,结果送目标地址
• 例:
o XOR BL,80H
o XOR AX,AX
测试指令TEST
• 格式:
o TEST OPRD1,OPRD2
• 操作:
o 执行“与”运算,但运算的结果不送回目标地址。
• 应用:
o 常用于测试某些位的状态
7.移位操作指令
定点数移位运算:
https://wangyi.one/%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BB%84%E6%88%90%E5%8E%9F%E7%90%86%E7%AC%94%E8%AE%B002%E8%BF%90%E7%AE%97%E6%96%B9%E6%B3%95%E5%92%8C%E8%BF%90%E7%AE%97%E5%99%A8/#%E5%AE%9A%E7%82%B9%E6%95%B0%E7%A7%BB%E4%BD%8D%E8%BF%90%E7%AE%97

移位操作指令:控制二进制位向左或向右移动的指令,可分为两类:
• 非循环移位指令
• 循环移位指令
指令格式在形式上为双操作数,本质上为单操作数;
指令的目标操作数为被移动对象,源操作数为移动次数
• 当目标为存储器操作数时,需要说明其字长
• 源操作数只能是1或CL
移动移动1位时由指令直接给出;移动两位及以上时,移位次数必须由CL指定。
循环移位指令的应用:
• 用于对某些位状态的测试;
• 高位部分和低位部分的交换;
• 与非循环移位指令一起组成32位或更长字长数的移位。
非循环算术左移指令SAL
用于有符号数
• SAL OPRD , 1
• SAL OPRD ,CL
非循环逻辑左移指令SHL
用于无符号数
• SHL OPRD,1
• SHL OPRD,CL
非循环逻辑右移指令SHR
用于无符号数
• SHR OPRD,1
• SHR OPRD,CL
非循环逻辑右移指令SHR
用于无符号数
• SHR OPRD,1
• SHR OPRD,CL
算术代表B,逻辑代表H
不带进位位的循环移位ROL、ROR

带进位位的循环移位RCL、RCR

XXX 第一个代表R循环/S非循环 +H(B)逻辑/(H)A算术+R右/L左 
4串操作指令
串操作指令说明:
• 针对数据块或字符串的操作
• 可实现存储器到存储器的数据传送;
• 待操作的数据串称为源串,目标地址称为目标串。
• 串操作指令的操作对象是多个字节数(一串字符或数据), 因此,指令的执行需要确定:
• 串所在的区域
• 串的首地址(原串、目标串起始地址)
• 串长度(大小)
• 串的操作方向
操作指令的要求:
• 串所在区域及首地址:
o 源串一般存放在数据段,偏移地址由SI指定。允许段重设。
o 目标串必须在附加段,偏移地址由DI指定。
• 串长度:
o 串长度值由CX指定
o 通过增加重复前缀,可以实现对CX值的自动修改
• 串的操作方向:
o 由DF标志位决定。指令根据DF状态自动修改地址指针
• DF=0 → 增地址方向
• DF=1 → 减地址方向
按增地址方向操作,串操作结束时:
o 串传送指令:指针将指向串尾+1
o 串比较类指令:指针将指向结束位+1
o 若按减地址方向操作,串操作结束时:
o 串传送指令:指针将指向串尾-1
o 串比较类指令:指针将指向结束位-1

重复前缀:
• 无条件重复
o REP
 当CX≠0时,REP后的指令将继续重复执行
 常用于传送类指令前 → 未传送完则继续传送
串传送指令MOVS
• 功能:
o 将源数据串传送到目标地址
• 格式:
o MOVS OPRD1,OPRD2 → 此格式仅用于源操作数需段重设的情况下
o MOVSB → 按字节传送
o MOVSW → 按字传送
• 串传送指令常与无条件重复前缀连用

串比较指令CMPS
• 功能:
o 用于实现两个数据串的比较
• 操作:
o 目标串-源串,结果不写回目标地址
o 常与条件重复前缀连用
• 格式:
o CMPS OPRD1,OPRD2
o CMPSB
o CMPSW
• 前缀的操作对标志位不影响

串扫描指令SCAS
常用于在指定存储区域中寻找某个关键字
• 格式:
o SCAS OPRD
o SCASB
o SCASW
• 执行与CMPS指令相似的操作,区别是:
o 这里的源操作数是AX或AL

串装入指令LODS
• 格式:
o LODS OPRD
o LODSB
o LODSW
• 操作:
o 对字节: AL ← [DS:SI]
o 对字:AX ← [DS:SI]
• 应用
o 用于将内存某个区域的数据串依次装入累加器,以便显示或输出到接口。
o LODS指令一般不加重复前缀。
串送存指令STOS
• 格式:
o STOS OPRD
o STOSB
o STOSW
• 操作:
o 对字节:AL → [ES:DI]
o 对字: AX → [ES:DI]
• 应用:
o 常用于将内存某个区域置同样的值
o 此时:
• 将待送存的数据放入AL(字节数)或AX(字数据);
• 确定操作方向(增地址/减地址)和区域大小(串长度值);
• 使用串存储指令+无条件重复前缀,实现数据传送。
串操作指令应用注意事项
• 需要定义附加段
o 目标操作数必须在附加段
• 需要设置数据的操作方向
o 确定DF的状态
• 源串和目标串指针分别为SI和DI
• 串长度值必须由CX给出
• 注意重复前缀的使用方法
o 传送类指令前加无条件重复前缀
o 串比较类指令前加条件重复前缀,但前缀不影响ZF状态
8.程序控制指令
• 程序控制类指令以“隐含”的方式修改CS和IP ,以实现控制程序走向的目的(Intel指令集不允许由指令直接修改CS 和IP)
• 通过修改IP或CS和IP,实现程序的三种基本控制结构
o 顺序,选择(分支),循环
o 习程序控制类指令需要重点关注及如何实现对CS和IP的修改
转移指令JMP
通过修改指令的偏移地址或段基地址和偏移地址实现程序的转移
• 无条件转移指令 → 无条件转移到目标地址
• 条件转移指令 → 当具备一定条件(通常指状态标志位)时转移到目标地址

• 下一条要执行指令的偏移地址=当前IP+位移量
• 段内直接转移
o 转移的目标地址由指令直接给出
o 格式:
 JMP Label

• 段内间接转移
o 转移的目标地址存放在某个16位寄存器或存储器的某两个单元中
o 例:
 MOV BX,1200H
 JMP BX
o 执行完上述指令后:
 IP=1200H

段间转移

• 段间直接转移
o 转移的目标地址由指令直接给出
o 格式:
 JMP FAR Label
• 段间间接寻址
o 转移的目标地址由指令中的32位操作数给出
o 32位目标地址须存放于内存中
o 例:
 JMP DWORD PTR[BX]

条件转移指令JC等
• 在满足一定条件下,程序转移到目标地址继续执行
• 条件转移指令均为段内短转移,即转移范围为:
o -128 —— +127

基于1个标志位状态实现转移的指令
JC/JNC
判断CF的状态。常用于两个无符号数大小比较
JZ/JNZ
判断ZF的状态。常用于循环体的结束判断
JO/JNO
判断OF的状态。常用于有符号数溢出的判断
JP/JPE
判断PF的状态。用于判断运算结果低8位中1的个数是否为偶数
JS /JNS
判断SF的状态。常用于判断数的性质
基于2个或3个标志位状态实现转移的指令:
JA/JAE/JB/JBE
判断CF或CF+ZF的状态。常用于无符号数大小的比较
JG/JGE/JL/JLE
判断SF+OF或SF+OF+ZF的状态。常用于有符号数大小的比较
基于CX内容转移的指令
JCXZ
可根据指令执行后CX的结果实现转移
JMP是汇编语言中的无条件跳转指令。

循环控制
• 循环范围:
o 以当前IP为中心的-128~+127范围内循环。
o 循环次数由CX寄存器指定。
• 循环指令:
o LOOP → 无条件循环指令
o LOOPZ → 条件循环指令
o LOOPNZ → 条件循环指令

无条件循环指令LOOP
• 格式:
o LOOP LABEL
• 循环条件:
o CX ≠ 0
• 操作:
o 完全相当于
 DEC CX
 JNZ 符号地址
条件循环指令LOOPZ、LOOPNZ
• 功能:
o 先使CX-1,再根据CX中的值及ZF值来决定是否继续循环
• 格式:
o LOOPZ Label → 继续循环的条件:CX≠0,且ZF=1
o LOOPNZ Label → 继续循环的条件:CX≠0,且ZF=0

过程调用指令CALL

过程调用指令
用于调用一个子过程
与转移指令的比较
子过程执行结束后要返回原调用处
调用指令的执行过程

保护断点
将调用指令的下一条指令的地址(断点)压入堆栈
获取子过程的入口地址
子过程第1条指令的偏移地址
执行子过程
功能实现,参数的保存及恢复
恢复断点,返回原程序。
将断点偏移地址由堆栈弹出
段内调用

段间调用
• 子过程与原调用程序不在同一代码段 , 调用前需保护断点的段基地址和偏移地址
• 先将断点的CS压栈,再压入IP

返回指令RET
• 功能:
o 从堆栈中弹出断点地址,返回原程序
• 格式:
o RET
• 子程序的最后一条指令必须是RET
中断控制
• 中断的概念
o 某种异常或随机事件使处理器暂时停止正在运行的程序,转去执行一段特殊处理程序,并在处理结束后返回原程序被中断处继续执行的过程。
• 中断指令:
o 引起CPU产生一次中断的指令
中断与过程调用
o 相似点:
 从一个正在执行的过程转向另一个过程(处理程序),并在执行完后返回原程序继续执行
o 区别:
o 中断是随机事件或异常事件引起,调用是事先已在程序中安排好;
o 调用指令在指令中直接给出子程序入口地址,中断指令只给出中断向量码,入口地址则在向量码指向的内存单元中。
o 调用可以是近过程调用或远过程调用,中断处理程序均为远过程;
o 响应中断请求不仅要保护断点地址,还要保护FLAGS内容。
中断指令INT

中断返回指令IRET
• 格式:
o IRET
• 中断服务程序的最后一条指令,负责:
o 恢复断点
o 恢复标志寄存器内容

处理器控制指令
• 这类指令用来对CPU进行控制,如修改标志寄存器,使CPU暂停,使CPU与外部设备同步等。
o 对标志位的操作
o 与外部设备的同步
• 处理器控制指令的控制对象是CPU
• 均为零操作数格式指令

第4章 汇编语言程序设计
• 汇编语言源程序:用助记符编写
• 汇编程序:源程序的编译程序

  1. 程序执行过程
  2. . 语句类型和格式
    语句类型
    • 指令性语句:CPU执行的语句,能够生成目标代码
    • 指示性语句:CPU不执行,由汇编程序(编译器)执行的语句,不生成目标代码
    语句格式
    指令性语句:
    [标号:][前缀]助记符[操作数],[操作数][;注释]
    • 串操作指令的助记符前面可以加前缀,前缀不是指令,它表示一种循环重复执行的概念,和助记符连在一起可构成循环体
    o 无条件重复前缀
    o 条件重复前缀
    • 标号代表指令的符号地
    • 标号后要有冒号
    指示性语句:
    [名字]伪指令助记符操作数[,操作数,⋅⋅⋅][;注释]
    • 名字是变量的符号地址,其后不加冒号

语句中的操作数
• 寄存器
• 存储器单元
• 常量

• 变量或标号

• 表达式
o 算术运算:加减乘除、取模
o 逻辑运算:与或非异或
o 关系运算
o 取值运算和属性运算
o 其他运算
取值运算符 OFFSET SEG

属性运算符:
PTR

• LENGTHOF运算符:计算数组中元素的个数
• TYPE运算符返回变量单个元素的大小,这个大小是以字节为单位计算

伪指令
• 伪指令:由汇编程序(编译器)执行的“指令系统”
• 作用: 帮助计算机理解指令性语句
o 定义变量;
o 分配存储区
o 定义逻辑段;
o 指示程序开始和结束;
o 定义过程
数据定义伪指令
• 用于定义数据区中变量的类型及其所占内存空间的大小
• 格式:

数据定义伪指令助记符:
o DB(Define Byte):定义的变量为字节型
 每一个操作数占一个字节单元
o DW(Define Word):定义的变量为字类型
 每一个操作数占一个字单元
o DD(Define Double Word):定义的变量为双字型
o DQ(Define Quadword):定义的变量为四字型
o DT(Define Tenbytes):定义的变量为十字节型

• 重复操作伪指令助记符:用于分配存储区

• "?"的作用:

变量在内存中的存储分配

符号定义伪指令——类似C宏定义

段定义伪指令
SEGNEBT ENDS

• 用来定义一个逻辑段
• 逻辑段的段名就是段基地址(一个数)

设定段寄存器伪指令ASSUME

• 用段寄存器标识逻辑段是什么段
o 数据段
o 附加段
o 堆栈段
o 代码段

源程序基本结构

• 段寄存器初始化后次系统才会分配前面定义的内存空间
过程定义伪指令

• 用来定义一个子程序
• 过程名是子程序第一条指令性语句在内存的符号地址
• 若为近过程,NEAR可省略
• 过程体的最后一条指令必须是RET

过程定义及调用

• 子程序用到的寄存器,为了不影响调用程序的寄存器原来的值,需要在执行子程序之前,将调用程序原来寄存器的值保存到堆栈,在执行子程序结束后,将调用程序原来寄存器的值从堆栈恢复(先进后出)
宏命令伪指令

• 与子程序的不同:不能通过编译链接,成为一个独立的程序,只能是源程序的一部分,不能被其他源程序调用
• 该宏的作用:X+Y赋给Z

ORG

流程控制伪指令
.REPEAT 伪指令执行循环体,然后测试 .UNTIL 伪指令后面的运行时条件:
.REPEAT
statements
.UNTIL condition
.WHILE 伪指令在执行循环体之前测试条件:
.WHILE condition
statements
.ENDW

习题:
1.概念
代码段:存放指令机器码的存储器区段
源程序:用汇编语言或高级语言编写的程序
汇编程序:将汇编语言程序翻译成机器码的实用程序
指令:计算机执行某种操作的指令
伪指令:汇编程序执行某种操作的指令
编译程序:高级语言翻译成机器码
目标程序:机器码指令组成的程序
助记符:表示计算机执行某种操作的符号
标号:指出指令再程序中位置的符号
变量:指出数据存储单元的符号地址

变量:变量在除代码段以外的其它段中被定义,存放在存储单元的数据。
变量的三重属性:
段属性:段基址(段的起始地址)。一般段寄存器中,也可以用用段前缀指明在ES或SS段寄存器中。
偏移地址属性:段内偏移地址
类型属性:占用存储单元的字节数,即存放数据的长度。伪指令来规定
3.
标号:代码段中被定义。指令语句的标识符,指令存放单元的符号地址(指令第一个字节存放的内存地址)
段属性;偏移属性;距离属性:当标号作为转移类指令的操作数时,可以段内或段间转移
NEAR 只允许本段内转移 FAR允许短接转移(默认NEAR)
3.
段定义伪指令 SEGMENT ENDS

段分配伪指令 ASSUME

MOV AX,DATA
MOV DS,AX
段定义格式中,每个段名即为该段的段基址,他表示一个16位的立即数,段寄存器不能用立即数寻址方式直接转入

ORG 0200H 表示从0200H开始
-1 位FFFFH
$+4 含义020C(当前地址第一个)+4=0210(该地址名就是存放的内容)

DB DB EQU

第5章 存储系统
https://blog.youkuaiyun.com/m0_56510407/article/details/125351740?spm=1001.2014.3001.5501
1.存储器的分类与性能指标

存储器的主要性能指标
存储容量、存取空间、存储周期、可靠性和功耗

  1. 只读存储器ROM
    只读存储器有EPROM、EEPROM和Flash等

• 内存储器均为半导体存储器,外存储器有些为磁盘存储器
• 半导体存储器由能够表示二进制数“0”和“1”的、具有记忆功能的半导体器件组成
• 能存放一位二进制数的半导体器件称为一个存储元
• 若干存储元构成一个存储单元
• 每个存储单元由8个存储元构成

• 主要特点
o 可以随时读/写
o 掉电后信息丢失(需要后备电源)
• 静态随机存取存储器(SRAM):存储元以静态触发器电路(双稳态电路)为基础
• 动态随机存取存储器(DRAM):存储元为电容
• 同步动态随机存取存储器(SDRAM):

只读存储器(ROM)

• 主要特点
o 可以随时读,但不能随机写
o 掉电后信息不丢失(无需后备电源)
• 掩膜ROM:将所有的数据通过光刻的方式刻写在芯片上,不可改写
• 一次性可写ROM:只允许写入一次
• EPROM:(Erasable Programmable Read-Only Memory):可擦除可编程只读存储器,一旦编程完成后,EPROM只能用强紫外线照射来擦除

• EEPROM:(Electrically Erasable Programmable read only memory):带电可擦可编程只读存储器,可以在电脑上或专用设备上擦除已有信息,重新编程

• 闪速存储器Flash:是一种特殊的EEPROM

半导体存储器的技术指标
• 存储容量:存储单元个数×每单元的二进制位数
• 存取时间:实现一次读/写所需要的时间
• 存取周期:连续启动两次独立的存储器所需间隔的最小时间
• 可靠性、功耗

• 重点在译码电路
• 物理地址的高位作为片选信号,输入译码电路,产生一个有效的输出信号,用于选中某一个存储器芯片
全地址译码
全地址译码:用全部的高位地址信号作为译码信号,使得存储器芯片的每一个单元都占据一个唯一的内存地址

• 写出地址范围的二进制表示
• 确定各高位地址状态
o 由于SRAM6264为存储容量为8K×8b,所以地址线13根,用于选择片内的存储单元,也叫片内信号;剩下的高7位用于选择存储器芯片,也叫片选信号
• 设计译码器:如下图

部分地址译码
部分地址译码:用部分高位地址信号(而不是全部)作为译码信号,使得被选中存储器芯片占有几组不同的地址范围

• A18可以是0,也可以是1
• 浪费了一组地址资源,但少了一根线
只读存储器(ROM)
• 下面介绍的三种ROM,可以读写,但写有条件
• 不需要后备电源
EPROM
• 可多次编程写入;
• 掉电后内容不丢失;
• 内容的擦除需用紫外线擦除器
• ROM需要先擦除,再写
• RAM可以直接写
• EPROM芯片用盖子隔离紫外线,具有较高的稳定性,数据不易改变,常用作程序存储器,存放相应的控制程序
• RAM芯片则因其便利性,常用作数据存储器,存放操作的数据
EEPROM
• 可在线编程写入
• 掉电后内容不丢失
• 电可擦除
习题:

  1. 半导体存储器的分类以及特点:
    制造工艺:TTL:双极型,速度快,集成度低,功耗高,价格贵,常用作cache
    MOS:金属氧化物半导体型:速度慢,价格低,集成度高。常做RAM
    存取方式:ROM只读存储器 非易失性存储器,信息一旦写入就固定不变
    RAM随机存储器 易失性存储器,信息可随机写入或读出,不能永久保存
  2. 存储器的性能指标及对微机的影响
    存储容量
    存取时间(访问时间/读写时间)
    存储周期
    可靠性
    功耗
  3. 存储器的三中扩展设计方法
    位扩展:增加存储字长。利用芯片地址并联实现
    字扩展:增加存储器字的个数,利用芯片地址串联实现
    字和位扩展:前俩种的组合
  4. 存储芯片中片选信号的产生方法及特点
    线选法:指用存储器芯片 片内寻址线以外的系统高位地址线,作为存储器芯片的片选控制信号。 优点:选择芯片不需要外加逻辑电路结构简单,缺点:地址空间相互隔离,不能充分利用系统的存储空间。适合拓展容量小的存储系统
    部分译码法:指用存储器芯片片内寻址以外的系统高位地址的一部分地址线
    经过译码电路产生选片信号。缺点:每组芯片的地址不唯一,存在重叠
    全译码法:存储器芯片片内寻址以外的系统高位地址的全部地址线
    唯一确定且不会重叠,译码电路要求高
    对于选择:CPU可直接寻址全部的存储单元,用线选法或部分译码,否则用全译码法。
    5.1K8b的存储单元有10条地址线,8条数据线
    1K=2^10 (地址线有10条)8b(8条数据线)
    6.1024
    1b的RAM组成16K*8b的存储器需要多少芯片

这里,片数的等于 K* b / K * b,一组有(8b中的8决定及数据线)。(地址线都参与片内寻址)(2的4次等于16)

这些数字如何确定?
7.高数缓存存储器,与主存的关系,工作原理
SRAM组成的一级告诉小容量存储器,容量小速度快
Cache介于CPU和主存储器之间
Cache 的设计目标是使CPU 访问尽可能在Cache中进行,其工作原理是:当CPU访问主存储器时,通过主存-Cache 地址转换部件对主存地址寄存器中的地址进行转换,并与Cache地址寄存器进行比较。若有相同的,则表明要访问的主存储器单元已在Cache 中,称为命中。硬件就将要访问主存储器的地址映射为Cache的地址并执行存取操作。若都不相同,则表明该单元不在Cache 中,称为脱靶,硬件将执行主存储器操作,并自动将该单元所在的那个主存储器单元组调入Cache相同列中空着的存储单元组中,同时将该组在主存储器中的地址存入Cache地址寄存器中。

8.虚拟存储器及虚拟技术解决的原因
答:①虚拟存储器又称为虚拟存储系统,由主存储器和辅助存储器共同组成。它把辅助存储器作为主存储器的扩充,对应用程序员来说,就像微机系统有一个容量很大的主存一样。
②虚拟存储器及其管理技术是现代操作系统的重要特征之一,它将外存资源与内存资源进行统一管理,解决了用较小容量的内存运行大容量软件的问题。
9.

第6章 中断技术
1.中断的基本概念
中断

习题
80486支持的5类中断是
NMI引脚引入的不可屏蔽中断
INTR引脚引入的可屏蔽中断
故障
陷阱
异常中断
2.实地址模式下,中断地址指针称为中断向量表
保护地址下,中断地址指针表称为中断描述符表
4. 实地址下,一个中断向量可占4个字节
保护地址下,占8个字节
5. 不可屏蔽中断NMI的特点?可屏蔽中断INTR特点?
答:①不可屏蔽中断NMI的特点:当外设通过非屏蔽中断请求信号向微处理器提出中断请求时,微处理器在当前指令执行结束后,就立即无条件地予以响应,这样的中断就是不可屏蔽中断。不可屏蔽中断在外部中断源中优先级最高,主要用于处理系统的意外或故障,如电源掉电、存储器读/写错误、扩展槽中输入/输出通道错误等。
②可屏蔽中断 INTR的特点:CPU对可屏蔽中断请求的响应是有条件的,它受中断允许标志位IF的控制。当IF=1时,允许CPU响应 INTR 请求;当IF=0时,禁止CPU响应INTR请求。可屏蔽中断用于CPU与外设进行数据交换。
6中断向量表用来存放什么内容?它占多大存储空间?存放在内存的哪个区域?答:中断向量表用来存放系统的中断类型号。中断向量表位于内存底端的 1KB RAM区,地址范围为0000H~03FFH。
6-7中断描述符表(IDT)存放什么内容?它占多大存储空间?在内存中存放的位置由什么来确定?
答:中断描述符表(IDT)相当于实地址模式下的中断向量表,用于存放中断描述符。表中最多可以包含256个中断描述符,每个中断描述符占用连续的8个字节,因此IDT 共占用2KB存储空间,可以放在80486 CPU物理地址空间的任何地方,该表的位置和大小由中断描述符表寄存器IDTR 的值确定。IDTR包含32位的基地址和16位段限,基地址定义中断描述符表IDT在存储器中的起始点,段限定义中断描述符表所占的字节个数。

第7章 I/O接口技术

第8章微型计算机系统

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值