前言:公号 「编程有料」后台回复 “大礼包” 即可获取近1000本助力你编程之路的电子书
微机原理复习速成(下)
11,指令系统与汇编语言程序设计
4,常用指令
8,逻辑指令与位移指令
-
1,逻辑指令
逻辑指令对字节或字数据进行按位的运算操作。
指令格式:
- 逻辑与 AND DST,SRC
- 逻辑或 OR DST,SRC
- 逻辑非 NOT OPR
- 异或 XOR DST,SRC
- 测试 TEST OPR1,OPR2(运算结果与AND相同,但不保存运算结果,只根据其特征置条件标志)
-
2,移位指令
移位指令从移动方向上分为左移和右移;从移位功能上可以分为算术逻辑移位或循环移位,前者是开环的,后者是闭环的;从移位次数上可以分为一次移位或多次移位。
-
逻辑左移指令SHL
指令格式:SHL OPD,1 或 SHL OPD ,CX
功能:将OPD的内容向左移动指定的位数,最高位移入CF中,低位补0。
-
算术左移指令SAL
-
逻辑右移指令SHR
-
算术右移指令SAR
指令格式:SAR OPD,1
功能:将OPD的内容向右移动指定的位数,最低位移入CF中,最高位保持不变,如下图所示:
-
循环左移指令ROL
-
循环右移指令ROR
-
带进位的循环左移指令RCL
指令格式:RCL OPD,1 或 RCL OPD,CX
功能:将OPD的内容连同CF标志一起向左循环移动所规定的位数。
例子:
将AX中的最高位移至BX的最低位 可用如下语句实现: RCL AX,1 ;将AX中的最高位移至CF中 RCL BX,1 ;将CF的内容移至BX的最低位
-
带进位的循环右移指令RCR
-
-
3,控制转移指令
-
1,无条件转移指令
无条件转移指令无需任何判断条件,就可以实现段内和段间的程序转移。此转移指令不影响状态标志位。
转移指令JMP
-
2,条件转移指令
条件转移指令将前一条指令执行结果对状态标志位的影响,作为程序转移条件。可作为判断条件的状态标志位有CF、DF、ZF、SF、OF
条件转移指令都是采用相对寻址方式的双字节指令,指令第一个字节是操作码,第二个字节是带符号的位移量。条件转移指令只能在当前段中实现短转移,不影响状态标志。
-
注意:
- 使用循环控制指令之前,必须在寄存器CX(作为计数器)中预置循环次数的初值。
- 循环控制指令不影响状态标志位。
-
5,汇编语言
1,数据定义伪指令
数据定义伪指令的用途是定义一个变量的类型,给变量赋初值,或仅仅给变量分配存储单元
数据定义伪指令有DB,DW,DD,DF,DQ,DT
2,符号定义伪指令
常用的符号定义伪指令有EQU、=(等号)和LABLE。
EQU伪指令将表达式的值赋予一个名字,以后可用这个名字来代替上述表达式
3,段定义伪指令
段定义伪指令的用途是在汇编语言源程序中定义逻辑段。常用的段定义伪指令有SEGMENT/ENDS和ASSUME等。
格式:
// SEGMENT/ENDS
段名 SEGMENT
...
段名 ENDS
//ASSUME
ASSUME 段寄存器名:段名[,段寄存器名: 段名,...]
代码段定义举例:
CODE SEGMENT
ASSUME CS: CODE, DS:DATA1, SS:STACK
MOV AX,DATA1
MOV DS,AX ;给DS赋值
MOV AX,STACK
MOV SS,AX ;给SS赋值
CODE ENDS
6,DOS功能调用
-
单字符输入(1号调用)
格式: MOV AH,1 INT 21H //功能:从键盘输入字符的ASCII码送入寄存器AL中,并送显示器显示
-
单字符显示(2号调用)
格式: MOv DL,带显示字符的ASCII码 MOV AH,2 INT 21H //功能:将DL寄存器中的字符送显示器显示
-
打印输出(5号调用)
格式: MOV DL,待打印字符的ASCII码 MOV AH,5 INT 21H //功能:将DL寄存器中的字符送打印机打印
-
结束调用(4CH号调用)
格式: MOV AH,4CH INT 21H //功能:终止当前程序并返回调用程序
-
显示字符串(9号调用)
//格式: LEA DX,待显示字符串首偏移地址 MOV AH,9 INT 21H //功能:将当前数据区中以“$”结尾的字符串送显示器显示
-
字符串输入(10号调用)
格式: LEA DX,缓冲区首偏移地址 MOV AH,10 INT 21H //功能:从键盘上输入一字符串到用户定义的输入缓冲区中,并送显示器显示
12,存储器系统
1,存储器概念
内存储器
简称内存、主存、物理存储器
处理机能直接访问的存储器。用来存放系统和用户的程序及数据,特点是存取速度快,存储方式是以新换旧,断电信息丢失。
外存储器
简称外存、辅助存储器
处理机不能直接访问的存储器。用来存放用户的各种信息.,存取速度相对内存而言要慢得多,但它可用来长期保存用户信息。在设备管理中介绍。
2,存储器系统
1,存储体
每个基本存储电路存放一位二进制信息,这些存储电路有规则地组织起来,构成了存储体(存储矩阵)。不同存取方式的芯片,采用的基本存储电路也不相同。
为了便于信息的存取,给同一存储体内的每个存储单元赋予一个惟一的编号,该编号就是存储单元的地址。这样,对于容量为2n个存储单元的存储体,需要n条地址线对其编址。若每个单元存放M位信息,则需要M条数据线传送数据,芯片的存储容量就可以表示为 2n * M 位。
2,外围电路
外围电路主要包括地址译码电路和由三态数据缓冲器、控制逻辑两部分组成的读/写控制电路
1),地址译码电路
存储芯片中的地址译码电路对CPU从地址总线发来的n位地址信号进行译码,经译码产生的选择信号可以惟一地选中片内某一存储单元,在读/写控制电路的控制下可对该单元进行读/写操作。
2),读/写控制电路
读/写控制电路,接收CPU发来的相关控制信号。三态数据缓冲器是数据输入/输出的通道,数据传输的方向取决于控制逻辑对三态门的控制。CPU发往存储芯片的控制信号主要有读/写信号(R/W)、片选信号(CS)等。
3,地址译码方式
芯片内部的地址译码主要有两种方式,即单译码方式和双译码方式。单译码方式适用于小容量的存储芯片,对于容量较大的存储器芯片则应采用双译码方式。
1),单译码方式
单译码方式,只用一个译码电路对所有地址信息进行译码。译码输出的选择线直接选中对应的单元。一根译码输出选择线对应一个存储单元,故在存储容量较大、存储单元较多的情况下。
2),双译码方式
双译码方式,把n位地址线分成两部分,行选择线X和列选择线Y,分别进行译码。每一根× 线选中存储矩阵中位于同―行的所有单元,每一根Y线选中存储矩阵中位于同一列的所有单元,当某一单元的×线和Y线同时有效时,相应的存储单元被选中。
3,存储器扩展技术
当用一片ROM或RAM器件不能满足对存储容量的要求时,就需要将若干片ROM或RAM组合起来,形成一个容量更大的存储器。
1,位扩展
一个例题:**试用1024 * 2RAM扩展成1024 * 6存储器。
2,字扩展
一个例题:试将256 * 8 位RAM 扩展成1024 * 8 位存储器:
3,字位全扩展
4,高速缓存
1,Cache存储器
高速缓冲存储器(Cache):简称快存,是为了解决CPU和主存之间速度匹配问题而设置的。
它是介于CPU与主存之间的小容量存储器,但存取速度比主存快。有了快存,就能高速地向CPU提供指令和数据,从而加快了程序执行的速度。
Cache基本原理:
- CPU 与cache之间的数据交换以字(字节)为单位
- Cache与主存间的数据传送以数据块为单位
- 一个块(Block) 由若干字组成,是定长的
- 为使主存储器的平均读出时间尽可能接近于快存的读出时间。在所有的存储器访问中,由快存满足CPU需要的部分应占很高的比例,即快存的命中率应接近于1。由于程序访问的局部性,实现这个目标是可能的。
程序的局部性原理:
- 空间局部性:指当处理机访问某个存储单元时,该存储单元附近的存储单元最有可能被随后访问;
- 时间局部性:指当处理机访问某个存储单元时,该存储单元最有可能被再次访问。
2,主存与Cache的地址映射
Cache通过地址映射(mapping)的方法确定主存块与Cache行之间的对应关系,确定一个主存块应该存放到哪个Cache行中
-
直接映射(direct mapping)
将一个主存块存储到唯一的一个Cache行 -
全相联映射(fully assoc iative mapping)
可以将一个主存块存储到任意一个Cache行
-
组相联映射(set associative mapping)
可以将一个主存块存储到唯一的一个Cache组中任意一个行
直接映射、2/4/8路组相联映射使用较多
13,输入输出及中断技术
1,概述
输入/输出(I/O)是指微处理器与外界交换信息,即通信
- 状态信息:从接口输入的状态信息,表示I/0设备当前的状态。
- 数据信息:是I/O设备和CPU真正要交换的信息。
- 数据信息可分为三种类型:数字量、模拟量和开关量。
- 控制信息:是由CPU发送给外部设备的,命令其处于某种方式或执行某种操作。
2,I/O接口的基本构成与功能
I/0接口的功能是负责实现CPU通过系统总线把I/0电路和外围设备联系在一起,按照电路和设备的复杂程度,I/0接口的硬件主要分为两大类:
- I/O 接口芯片
- I/O 接口控制卡
CPU与外设之间的数据交换必须通过接口来完成,通常接口有以下一些功能:
- (1)设置数据的寄存、缓冲逻辑,以适应CPU与外设之间的速度差异,接口通常由一些寄存器或RAM芯片组成,如果芯片足够大还可以实现批量数据的传输;
- (2)能够进行信息格式的转换,例如串行和并行的转换;
- (3)能够协调CPU和外设两者在信息的类型和电平的差异,如电平转换驱动器、数/模或模/数转换器等;
- ( 4)协调时序差异;
- (5)地址译码和设备选择功能;
- (6)设置中断和DMA控制逻辑,以保证在中断和DMA允许的情况下产生中断和DMA请求信号,并在接受到中断和DMA应答之后完成中断处理和DMA传输。
3,三态门接口
- 三态门( Three-state gate)是一种重要的总线接口电路。
- 三态指其输出既可以是一般二值逻辑电路,即正常的高电平(逻辑1)或低电平(逻辑o),又可以保持特有的高阻抗状态。高阻态相当于隔断状态(电阻很大,相当于开路)。如果高阻态再输入下一级电路的话,对下级电路无任何影响,和没接一样。
- 三态门器件不具备数据的保存(或称锁存)能力,而很多信源都要求能够将信号保持住,直至被CPU读走,所以它一般只用作输入接口,而不能直接用作输出接口。
4,基本输入/输出方式
1,无条件传送方式
无条件传输方式又称同步传送方式。使用这种方式时外设总是处于准备好状态,CPU 无需查询其状态而只根据程序中的输入/输出指令执行相应操作。
例:假设有一个包含8个开关的输入接口电路,其端口地址为80H,读取开关数据并存入BUF单无。则程序段为:
LEA BX,BUF
IN AL,80H
MOV [BX],AL
2,查询I/O传送方式
- 查询传送即条件传送,CPU与接口之间有一个应答过程,所以又称异步传送。
- 在数据传送之前,程序首先测试外设的状态,当状态符合规定的条件(比如输入设备的下一个输入数据准备好了,或输出接口已经将前一个输出的数据送往输出设备)就进行输入或输出操作,否则就踏步等待或转入其它程序段。
- 因此,查询传送方式的接口电路中必须有表征外设工作状态的触发器或寄存器以供CPU查询。
例:查询输入状态端口:数据准备就绪否?
RPLI: IN AL,PSTATUS ;读入状态
TEST AL, 01H ;查状态
Jz RPLI ;未准备好,踏步检查
IN AL,PDATAI ;准备好输入数据
3,中断方式
采用中断方式后,CPU首先执行主程序,等待中断的发生。当输入设备将数据准备好,或者输出设备空闲时,便通过I/0接口向CPU发申请中断。CPU在每执行完一条指令之后都会检查是否有中断请求,只要满足中断响应条件,CPU就暂停执行当前的程序,转向执行中断处理程序,进行数据传送,等传送完成后,CPU返回到被中断的程序,继续进行原来的工作。
4,直接存储器存取方式( DMA)方式
DMA方式,主要是利用DMA控制器来管理数据的输入输出操作。由DMA控制器向地址总线发出存储器地址信号,并给出存储器读或写命令,就可以把存储器中读出的数据送到外部设备或者把外部设备输出的数据写入存储器中。
DMA方式是由DMA控制器来实现对存储器的直接访问,控制存储器和I/0设备之间的数据传送的。DMA方式克服了程序查询方式和中断方式的弊端,用DMA控制器来控制存储器和I/O设备之间的数据传送时,并不经过CPU,传输过程中CPU不占用总线,这样,传输时就不需要保存断点等额外操作了。
5,中断技术
- 所谓中断,是指计算机由任何非寻常的或非预期的急需处理的事件引起CPU暂时中断现行程序的执行,而转去执行另一服务程序来处理这些事件,等处理完后又返回原程序。我们把这一执行过程叫做中断。
- 中断——系统对异步事件的响应。
中断系统中,需要着重考虑的5方面内容:
- 1、中断源:引起计算机程序中断的事件
中断源通常有以下几种:- 外部设备,如打印机、键盘等;
- 数据通道中断源,如磁盘、磁带等;
- 实时时钟;
- 故障源,如电源掉电、除法运算出错等;
- 软件调用,如系统功能调用、设置断点运行程序等
- 2、中断分类
- 按中断处理方式,可分为简单中断和程序中断。
- 按中断产生方式,可分为自愿中断和强迫中断。
- 按中断产生位置,可分为外部中断和内部中断。
- 3、中断优先级
一般,一个系统中会有多个中断源,当某时刻出现两个或多个中断源提出中断请求时,中断系统就需要判别中断源的优先级,并按优先级的高低决定响应的顺序。 - 中断嵌套
- 中断与返回
中断处理过程如下图所示:
以上就是对「微型计算机原理」进行的一点小小回顾,想要进行系统详细的学习还得下些功夫。