微机原理-总复习
但不论计算机的规模大小,CPU只是计算机的 一个部件。必须同时具有CPU、存储器和输
入输出设备,才能构成一台计算机。
2.
数字编码 计算机中的数用二进制表示。计算机中 的十进制数的每一位用若干位二进制表示 ,这就是二进制编码。即十进制数的二进 制编码,简称二-十进制编码(BCD)。
3. 字符编码 同样,字母、数字、符号等各种字符也 必须按照特定的规则用二进制编码才能在 计算机中表示。字符编码的方式很多,世 界上最普遍采用的一种字符编码是ASCII码 (美国信息交换标准码)。
存储器
控制命令 数据流
在上述的计算机硬件中,往往把运算器、控制器 和存储器合在一起称为计算机的主机;而把各种 输入输出设备统称为计算机的外围设备或外部设 备(Peripheral)。 Peripheral 在主机部分中,又把运算器和控制器合在一起 称为中央处理单元CPU(Central Processing Unit) 。随着半导体集成电路技术的发展,可以把整个 CPU集成在一个集成电路芯片上,就把它称为微 处理器(Microprocessor)。
(3) 汉字输出码 汉字输出码又称汉字字形码或汉字发生器的编 码。汉字可以写在一个方块中;一个方块可以看 作m行n列的矩阵,称为点阵。一个m行n列的点 阵共有m×n个点。例如16×16点阵的汉字,共有 256个点。每个点可以是黑点或者非黑点,凡是 笔划经过的点用黑点,于是利用点阵描绘出了汉 字字形,汉字的点阵字形在计算机中称为字模。 如下图表示汉字“中”的16×16点阵字模。
1. 加法(Addition) 8086具有5种加法操作指令。 (1) ADD OPRD1,OPRD2 这条指令完成两个操作数相加,结果送 至一个操作数,即 OPRD1+OPRD2→OPRD1。目的操作数可 以是累加器、任一通用寄存器以及存储器 操作数(所有寻址方式)。
可以实现累加器与立即数、累加器与任一通用 寄存器、累加器与存储单元内容的相加,和放在 累加器中。 可以实现任一通用寄存器与立即数相加,与累 加器或别的寄存器相加,与存储单元的内容相加 ,和放在寄存器中。 可以实现,存储操作数与立即数相加,与累加 器或别的寄存器相加,和放在此存储单元中。 这些指令对标志位C、O、P、S、Z和A有影响 。
(2) 内部码 汉字内部码也称汉字内码或汉字机内码。在不 同的汉字输入方案中,同一汉字的外部码不同, 但同一汉字的内部码是惟一的。内部码通常是用 其在汉字字库中的物理位置表示,可以用汉字在 汉字字库中的序号或者用汉字在汉字字库中的存 储位置表示。汉字在计算机中至少要用两个字节 表示(有用三字节、四字节表示的),在微型计算 机中常用的是两字节汉字内码。
第三章和第四章内容很 多也很重要,不在这里进 行详细复习了。
算术运算指令
8086指令系统提供加、减、乘、除四 种基本的算术运算操作。这些操作都可 用于字节或字的运算,也都可以用于带 符号数与无符号数的运算。若是符号数 ,则用补码表示。 8086指令系统提供了各种校正操作指 令,故可以进行组合的(即一个字节用两 位BCD码表示)或未组合的(即用一位 BCD码表示,其高4位为0)十进制的算术 运算。
规定段选择子 段选择子能隐含或显式规定。规定段 选择子的最公共的方法是把它加载至段 寄存器,然后允许处理器根据正在执行 的操作类型,隐含地选择寄存器。 当存数据到内存或者从内存中取数据 时,DS 段为默认的段。但它能被超越 以允许访问其他段。
以下的默认段,不能被超越: (1) 必须从码段取指令; (2) 在串操作中的目的必须存储在由ES寄 存器指向的数据段; (3) 推入和弹出操作必须总是引用SS 段。
所谓未组合的十进制数,就是一个字节 中只包含一位十进制数,也即十进制数字 的ASCII码的高四位置为0以后所形成的数 码。 这条指令对标志A和C有影响,而对O、 P、S、Z等标志未定义。
(5) DAA(Deeimal Adjust for Addition) 这条指令能对在AL中的由两个组合的(即一个 字节中包含两位十进制数)十进制数相加的结果 进行校正,以得到正确的组合的十进制和。 我们可以对两个组合的十进制数,直接用ADD 指令(目的操作数在AL中)进行相加,但若要得到 正确的组合的十进制结果,则必须在ADD指令之 后紧接着用一条DAA指令来加以校正,这样在AL 中就可以得到正确的组合的十进制和。
8086指令的操作数寻址方式
8086 机器指令有零个或多个操作数 。某些操作数是显式规定的,有的是指 令中隐含的。一个操作数能定位在以下 之一中: (1) 指令(立即数); (2) 寄存器; (3) 存储单元; (4) I/O 端口。
1.
2.
立即寻址(Immediate Addressing) 操作数就包含在指令中,这种规定操 作数的方式,称为立即寻址。指令中的操 作数称为立即数。 寄存器寻址(Register Addressing) 若操作数在某一寄存器中,这种寻址方 式就称为寄存器寻址。
例如,有两个四个字节的数相加,加法要 分两次进行,先进行低两个字节相加, 然后再做高两个字节相加。在高两个字 节相加时要把前两个字节相加以后的进 位考虑进去,就要用到带进位的加法指 令ADC。 这条指令对标志位的影响与ADD相同 。
(3) INC(Increment) 这条指令完成对指定的操作数加1,然后 返回此操作数。此指令主要用于在循环程 序中修改地址指针和循环次数等。 这条指令执行的结果影响标志位A、O、 P、S和Z,而对进位标志没有影响。 这条指令的操作数可以是在通用寄存器 中,也可以在内存中。
但在8086中,由于BIU和EU是分开的,所 以,取指和执行可以重叠进行。它的执行顺序 如图2-3所示。
8086基本的程序执行寄存器 基本的程序执行寄存器
处理器为了应用程序编程提供了如图2-4所示的14 个基本程序执行寄存器。 这些寄存器能分组如下: • 通用寄存器。这八个寄存器能用于存放操作数 和指针。 • 段寄存器。这些寄存器最多能保存四个段选择 子。 • FLAGS(程序状态和控制)寄存器。FLAGS寄 存器报告正在执行的程序的状态,并允许有限地(应 用程序级)控制处理器。 • IP(指令指针)寄存器。IP寄存器包合下一条要 执行的指令的16位指针。
注意段地址和偏移地址的对应
I/O端口寻址
处理器支持多至包含65536个8位I/O 端口的I/O地址空间。在I/O地址空间中也 可以定义16位和32位的端口。I/O端口可 以用立即操作数或在DX寄存器中的值寻 址。用立即数寻址,只能用8位立即数, 可寻址I/O地址空间的前256个端口;用 DX寄存器间接寻址,可寻址全部I/O地址 空间。
(4) AAA(unpacked BCD[ASCII]adjust for addition) 这条指令对在AL中的由两个未组合的十进制操 作数相加后的结果进行校正,产生一个未组合的 十进制和。 两个未组合的十进制数可以直接用ADD指令相 加,但要得到正确的未组合的十进制结果,必须 在加法指令以后,紧接着用一条AAA指令来加以 校正,于是在AX中就可以得到正确的结果。
3.
直接寻址(Direct Addressing) 在这种寻址方式中,指令的操作数字段 不是操作数本身,而是操作数所在的地址 ,它是把地址所指的存储单元的内容送至 累加器AL,。 由于在这种寻址方式中,指令中包含操 作数的直接地址,故称为直接寻址。
4. 寄存器间接寻址(Register Indirect Addressing) 这种寻址方式与寄存器寻址方式不同,它不是 把寄存器BL中的内容作为操作数送AL,而是把 BL(???)中的内容作为操作数的地址 ,把此地址所指的内存单元的内容送AL。 在这种寻址方式,操作数的地址并不直接在指 令中,而是在某一个寄存器中,故称为间接寻址 。
作为基地址或索引的通用寄存器限制如下: (1) SP寄存器不能用作索引寄存器; (2) 当SP或BP寄存器用作为基地址,SS段是默认 的段。 在所有其他情况下,DS段是默认段。 基地址、索引和位移量成员能用于任何组合中 ,这些成员中的任一个都可以是空。只有当使用 索引时才能使用比例系数。每一种可能的组合对 于程序员在高级语言或汇编语言中公共使用的数 据结构是有用的。
微型计算机的概念结构
地址总线 AB
C P U
存 储 器ຫໍສະໝຸດ I/O 接 口输 入 设 备
I/O 接 口
输 出 设 备
I/O 接 口
数据总线 DB 控制总线 CB
AB: Address Bus DB: Data Bus CB: Control Bus
存储程序计算机
基本结构
控制器
输入设备
运算器
输出设备
指令流
4. 汉字编码 用计算机处理汉字,每个汉字必须用代 码表示。键盘输入汉字是输入汉字的外部 码。外 部码必须转换为内部码才能在计算 机内进行存储和处理。为了将汉字以点阵 的形式输出,还要将内部码转换为字形码 。不同的汉字处理系统之间交换信息采用 交换码。
(1) 外部码 汉字主要是从键盘输入,每个汉字对应 一个外部码,外部码是计算机输入汉字的 代码,是代表某一个汉字的一组键盘符号 。外部码也叫输入码。汉字的输入方法不 同,同一个汉字的外部码可能不一样。
(2) ADC(add with carry) 这条指令与上一条指令类似,只是在两个操作 数相加时,要把进位标志C的现行值加上去,结 果送至一个操作数。 ADC指令主要用于多字节运算中。在8086中, 可以进行8位运算,也可以进行16位运算。但是 16位二进制数的表达范围仍然是很有限的,为了 扩大数的范围,仍然需要多字节运算。
• 基本程序执行寄存器。八个通用寄 存器、四个段寄存器、标志寄存器 FLAGS和IP(指令指针)寄存器组成了 执行通用指令的基本执行环境。这些指 令执行字节、字整型数的基本整数算术 运算,处理程序流程控制,在字节串上 操作并寻址存储器。
• 堆栈(stack)。为支持过程或子程 序调用并在过程或子程序之间传递参数 ,堆栈和堆栈管理资源包含在基本执行 环境中。堆栈定位在内存中。 • I/O端口。8086结构支持数据在处 理器和输入输出(I/O)端口之间的传送 。 8086处理器的基本执行环境如图2-4 所示。