1、微机原理与接口技术 1 / 56 微机原理与接口技术复习参考资料 教师:万显荣 复习资料说明: 1、标有红色星号“ ”的内容为重点内容 3、本资料末尾附有“微机原理与接口技术综合练习题与答案错误修正”和“微机原理与接口技术综合练习题与答案中不作要求的部分”,请注意查看。 第一章 概 述 一、计算机中的数制 1、无符号数的表示方法: ( 1)十进制计数的表示法 特点:以十为底,逢十进一; 共有 0-9 十个数字符号 。 ( 2) 二进制计数表示方法: 特点:以 2 为底,逢 2 进位; 只有 0 和 1 两个符号。 ( 3)十六进制数的表示法: 特点:以 16 为底,逢 16 进位; 有 0-9
2、 及 AF(表示 1015) 共 16 个数字符号。 2、各种数制之间的转换 ( 1) 非十进制数到十进制数的转换 按相应进位计数制的权表达式展开,再按十进制求和。(见书本 1.2.3, 1.2.4) ( 2)十进制数制转换为二进制数制 十进制 二进制的转换: 整数部分:除 2 取余; 小数部分:乘 2 取整。 十进制 十六进制的转换: 整数部分:除 16 取余; 小数部分:乘 16 取整。 以小数点为起点求得整数和小数的 各个位 。 ( 3)二进制与十六进制数之间的转换 用 4 位二进制数表示 1 位十六进制数 3、无符号数二进制的运算(见教材 P5) 4、二进制数的逻辑运算 特点:按位运算
3、,无进借位 ( 1)与运算 只有 A、 B 变量皆为 1 时 ,与运算的结果就是 1 ( 2)或运算 A、 B 变量中,只要有一个为 1,或运算的结果就是 1 ( 3)非运算 ( 4)异或运算 微机原理与接口技术 2 / 56 A、 B 两个变量只要不同,异或运算的结果就是 1 二、计算机中的码制 (重点 ) 1、对于符号数,机器数常用的表示方法有原码、反码和补码三种。数 X 的原码记作 X原 ,反码记作 X反 ,补码记作 X补。 注意:对正数,三种表示法均相同。 它们的差别在于对负数的表示。 ( 1)原码 定义: 符号位: 0 表示正, 1 表示负; 数值位:真值的绝对值。 注意:数 0 的
4、原码不唯一 ( 2)反码 定义: 若 X0 , 则 X反 =X原 若 X0, 则 X补 = X反 = X原 若 X0, 则 X补 = X反 +1 注意:机器字长为 8 时,数 0 的补码唯一,同为 00000000 2、 8 位二进制的表示范围: 原码: -127+127 反码: -127+127 补码: -128+127 3、特殊数 10000000 该数在原码中定义为: -0 在反码中定义为: -127 在补码中定义为: -128 对无符号数: (10000000) = 128 三、信息的编码 1、 十进制数的二进制数编码 用 4 位二进制数表示一位十进制数。有两种表示法:压缩 BCD 码
5、和非压缩 BCD 码。 微机原理与接口技术 3 / 56 ( 1)压缩 BCD 码的每一位用 4 位二进制表示, 00001001 表示 09,一个字节表示两位十进制数。 ( 2)非压缩 BCD 码 用一个字节表示一位十进制数,高 4 位总是 0000,低 4 位的 00001001表示 09 2、 字符的编码 计算机采用 7 位二进制代码对字符进行编码 ( 1) 数字 09 的编码是 01100000111001,它们的高 3 位均是 011,后 4 位正好与其对 应的二进制代码( BCD 码)相符。 ( 2)英文字母 AZ 的 ASCII 码从 1000001( 41H)开始顺序递增,字母
6、 az 的 ASCII 码从 1100001( 61H)开始顺序递增,这样的排列对信息检索十分有利。 第二章 微机组成原理 第一节、微机的结构 1、计算机的经典结构 冯 .诺依曼结构 ( 1)计算机由运算器、控制器、输入设备和输出设备五大部分组成(运算器和控制器又称为 CPU) ( 2)数据和程序以二进制代码形式不加区分地存放在存储器总,存放位置由地址指定,数制为二进制。 ( 3)控制器是根据存放在存储器中的指令序列来操作的,并由一个程序计数器控制指令的执行。 3、 系统总线的分类 ( 1)数据总线( Data Bus),它决定了处理器的字长。 ( 2)地址总线( Address Bus) ,
7、它决定系统所能直接访问的存储器空间的容量。 ( 3)控制总线( Control Bus) 第二节、 8086 微处理器 1、 8086 是一种单片微处理芯片,其内部数据总线的宽度是 16 位,外部数据总线宽度也是16 位,片内包含有控制计算机所有功能的各种电路。 8086 地址总线的宽度为 20 位,有 1MB( 220)寻址空间。 2、 8086CPU 由总线接口部件 BIU 和执行部件 EU 组成。 BIU 和 EU 的操作是异步的,为 8086 取指令和执行指令的并行操作体统硬件支持。 3、 8086 处理器的启动 4、寄存器结构 (重点 ) 8086 微处理器包含有 13 个 16 位
8、的寄存器和 9 位标志位。 4 个通用寄存器( AX, BX, CX, DX) 4 个段寄存器( CS, DS, SS, ES) 4 个指针和变址寄存器( SP, BP, SI, DI) 指令指针( IP) 1)、通用寄存器 ( 1) 8086 含 4 个 16 位数据寄存器,它们又可分为 8 个 8 位寄存器,即: 微机原理与接口技术 4 / 56 AX AH, AL BXBH, BL CXCH, CL DXDH, DL 常用来存放参与运算的操作数或运算结果 ( 2)数据寄存器特有的习惯用法 AX:累加器。多用于存放中间运算结果。所有 I/O 指令必须都通过 AX 与接口传送信息; BX:基
9、址寄存器。在间接寻址中用于存放基地址; CX:计数寄存器。用于在循环或串操作指令中存 放循环次数或重复次数; DX:数据寄存器。在 32 位乘除法运算时,存放高 16 位数;在间接寻址的 I/O 指令中存放 I/O 端口地址。 2)、指针和变址寄存器 SP:堆栈指针寄存器,其内容为栈顶的偏移地址; BP:基址指针寄存器,常用于在访问内存时存放内存单元的偏移地址。 SI:源变址寄存器 DI:目标变址寄存器 变址寄存器常用于指令的间接寻址或变址寻址。 3)、段寄存器 CS:代码段寄存器, 代码段用于存放指令代码 DS:数据段寄存器 ES:附加段寄存器, 数据段和附加段用来存放操作数 SS:堆栈段
10、寄存器 , 堆栈段用于存放返回地址,保存寄存器内容,传递参数 4)、指令指针( IP) 16 位指 令指针寄存器,其内容为下一条要执行的指令的偏移地址。 5)、标志寄存器 ( 1) 状态标志: 进位标志位( CF):运算结果的最高位有进位或有借位,则 CF=1 辅助进位标志位( AF):运算结果的低四位有进位或借位,则 AF=1 溢出标志位( OF):运算结果有溢出,则 OF=1 零标志位( ZF):反映指令的执行是否产生一个为零的结果 符号标志位( SF):指出该指令的执行是否产生一个负的结果 奇偶标志位( PF):表示指令 运算结果的低 8 位 “1”个数是否为偶数 ( 2)控制标志位 中
11、断允许标志位( IF):表示 CPU 是否能够响应外部可屏蔽中断请求 跟踪标志( TF): CPU 单步执行 5、 8086 的引脚及其功能(重点掌握以下引脚) AD15AD0:双向三态的地址总线,输入 /输出信号 INTR:可屏蔽中断请求输入信号,高电平有效。可通过设置 IF 的值来控制。 NMI:非屏蔽中断输入信号。不能用软件进行屏蔽。 RESET:复位输入信号,高电平有效。复位的初始状态见 P21 MN/MX:最小最大模式输入控制信号。 微机原理与接口技术 5 / 56 第三章 8086 指令系统 说明: 8086 指令系统这章为重点章节,对下面列出的指令都要求掌握。 第一节 8086
12、寻址方式 一、数据寻址方式 (重点 ) 1、立即寻址 操作数 (为一常数 )直接由指令给出 (此操作数称为立即数 ) 立即寻址只能用于源操作数 例: MOV AX, 1C8FH MOV BYTE PTR2A00H, 8FH 错误例: MOV 2A00H,AX ; 错误! 指令操作例: MOV AX, 3102H; AX3102H 执行后, (AH) = 31H, (AL) = 02H 2、 寄存器寻址 ( 1) 操作数放在某个寄存器中 ( 2) 源操作数与目的操作数字长要相同 ( 3) 寄存器寻址与段地址无关 例: MOV AX, BX MOV 3F00H, AX MOV CL, AL 错误例
13、: MOV AX,BL ; 字长不同 MOV ES:AX,DX ; 寄存器与段无关 3、直接寻址 ( 1) 指令中直接给出操作数的 16 位偏移地址 偏移地址也称为有效地 址 (EA, Effective Address) ( 2) 默认的段寄存器为 DS,但也可以显式地指定其他段寄存器 称为段超越前缀 ( 3) 偏移地址也可用符号地址来表示,如 ADDR、 VAR 例: MOV AX ,2A00H MOV DX ,ES:2A00H MOV SI,TABLE_PTR 4、间接寻址 操作数 的 偏移地址 (有效地址 EA)放在 寄存器 中 只有 SI、 DI、 BX 和 BP 可作间址寄存器 微
14、机原理与接口技术 6 / 56 例 : MOV AX,BX MOV CL,CS:DI 错误例 : MOV AX, DX MOV CL, AX 5、寄存器相对寻址 EA=间址寄存器的内容加上一个 8/16 位的位移量 例 : MOV AX, BX+8 MOV CX, TABLESI MOV AX, BP; 默认段寄存器为 SS 指令操作例: MOV AX, DATABX 若 (DS)=6000H, (BX)=1000H, DATA=2A00H, (63A00H)=66H, (63A01H)=55H 则物理地址 = 60000H + 1000H + 2A00H = 63A00H 指令执行后: (
15、AX) =5566H 6、基址变址寻址 若操作数的偏移地址: 由基址寄存器 (BX 或 BP)给出 基址寻址方式 由 变址寄存器 (SI 或 DI)给出 变址寻址方式 由一个基址寄存器 的内容和一个变址寄存器 的内容相加而形成操作数的偏移地址,称为基址 -变址寻址。 EA=( BX) +( SI)或( DI); EA=( BP) +( SI)或( DI) 同一组内的寄存器不能同时出现。 注意:除了有段跨越前缀的情况外,当基址寄存器为 BX 时,操作数应该存放在数据段 DS中,当基址寄存器为 BP 时,操作数应放在堆栈段 SS 中。 例 : MOV AX, BX SI MOV AX, BX+SI
16、 MOV AX, DS: BP DI 错误例 : MOV AX, BX BP MOV AX, DI SI 指令操作例 : MOV AX, BXSI 假定 : (DS)=8000H, (BX)=2000H, SI=1000H 则物理地址 = 80000H + 2000H + 1000H = 83000H 指令执行后 : (AL)=83000H (AH)=83001H 7、相对基址变址寻址 在基址 -变址寻址的基础上再加上一个相对位 移量 EA=( BX) +( SI)或( DI) +8 位或 16 位位移量; 微机原理与接口技术 7 / 56 EA=( BP) +( SI)或( DI) +8 位
17、或 16 位位移量 指令 操作例 : MOV AX, DATADIBX 若 (DS)=8000H, (BX)=2000H, (DI)=1000H, DATA=200H 则指令执行后 (AH)=83021H, (AL)=83020H 寄存器间接、寄存器相对、基址变址、相对基址变址四种寻址方式的比较: 寻址方式 指令操作数形式 寄存器间接 只有一个寄存器( BX/BP/SI/DI 之一) 寄存器相对 一个寄存器加上位移量 基址 变址 两个不同类别的寄存器 相对基址 -变址 两个不同 类别的寄存器加上位移量 二、地址寻址方式(了解有 4 类,能判断) 简要判断依据(指令中间的单词): 段内直接 sh
18、ort,near 段内间接 word 段间直接 far 段间间接 dword 第二节 8086 指令系统 一、数据传送指令 (重点 ) 1、通用传送指令 (1) MOV dest, src; dest src 传送的是字节还是字取决于指令中涉及的寄存器是 8 位还是 16 位。 具体来说可实现: MOV mem/reg1, mem/reg2 指令中两操作数中至少有一个为寄存器 MOV reg, data ;立即数送寄存器 MOV mem, data ;立即数送存储单元 MOV acc, mem ;存储单元送累加器 MOV mem, acc ;累加器送存储单元 MOV segreg, mem/r
19、eg ;存储单元 /寄存器送段寄存器 MOV mem/reg, segreg ;段寄存器送存储单元 /寄存器 MOV 指令的使用规则 IP 不能作目的寄存器 不允许 mem mem 不允许 segreg segreg 立即数不允许作为目的操作数 不允许 segreg立即数 源操作数与目的操作数类型要一致 当源操作数为单字节的立即数,而目的操作数为间址、变址、基址 +变址的内存数时,必微机原理与接口技术 8 / 56 须用 PTR 说明数据类型。如: MOV BX, 12H 是错误的。 ( 2)、堆栈指令 什么是堆栈? 按 “后进先出 (LIFO)”方式工作的存储区域。堆栈以 字 为单位进行压入
20、弹出操作。 规定由 SS 指示堆栈段的段基址,堆栈指针 SP 始终指向堆栈的顶部, SP 的初值规定了所用堆栈区的大小。堆栈的最高地址叫栈底。 压栈指令 PUSH PUSH src ; src 为 16 位操作数 例: PUSH AX ;将 AX 内容压栈 执行操作:( SP) -1高字节 AH ( SP) -2低字节 AL (SP)( SP) - 2 注意进栈方向是 高地址 向 低地址 发展。 弹出指令 POP POP dest 例: POP BX ;将栈顶内容弹至 BX 执行操作:( BL)( SP) ( BH)( SP) +1 ( SP)( SP) +2 堆栈指令在使用时需注意的几点:
21、堆栈操作总是按字进行 不能从栈顶弹出一个字给 CS 堆栈指针为 SS:SP, SP 永远指向栈顶 SP 自动进行增减量( -2, +2) ( 3)、交换指令 XCHG 格式: XCHG reg, mem/reg 功能:交换两操作数的内容。 要求:两操作数中必须有一个在寄存器中; 操作数不能为段寄存器和立即数; 源和目地操作数类型要一致。 举例: XCHG AX, BX XCHG 2000, CL ( 4)查表指令 XLAT 执行的操作: AL (BX)+(AL) 又叫查表转换指令,它可根据表项序号查出表中对应代码的内容。执行时先将表的首地址微机原理与接口技术 9 / 56 (偏移地址)送到 B
22、X 中,表项序号存于 AL 中。 2、输入输出指令 只限于用累加器 AL 或 AX 来传送信息。 功能 : (累加器 ) I/O 端口 ( 1) 输入 指令 IN 格式 : IN acc,PORT ;PORT 端口号 0 255H IN acc,DX ;DX 表示的端口范围达 64K 例 :IN AL, 80H ;(AL) (80H 端口 ) IN AL, DX ;(AL) (DX) (2) 输出指令 OUT 格式: OUT port,acc OUT DX,acc 例: OUT 68H, AX ;(69H, 68H)( AX) OUT DX, AL ;(DX) (AL) 在使用间接寻址的 IN
23、/OUT 指令时,要事先用传送指令把 I/O 端口号设置到 DX 寄存器 如: MOV DX, 220H IN AL, DX;将 220H 端口内容读入 AL 3、目标地址传送指令 ( 1) LEA 传送偏移地址 格式: LEA reg, mem ; 将指定内存单元的偏移地址送到指定寄存器 要求: 1) 源操作数 必须是一个 存储器操作数; 2) 目的操作数必须是一个 16 位的通用寄存器。 例 : LEA BX, SI+10H 设:( SI) =1000H 则执行该指令后,( BX) =1010H 注意以下二条指令差别: LEA BX, BUFFER MOV BX, BUFFER 前者表示将
24、符号地址为 BUFFER的 存储单元的偏移地址取到 BX 中 ;后者表示将 BUFFER存储单元中的内容取到 BX 中。 下面两条指令等效: LEA BX, BUFFER MOV BX, OFFSET BUFFER 微机原理与接口技术 10 / 56 其中 OFFSET BUFFER 表示存储器单元 BUFFER 的偏移地址。 二者都可用于取存储器单元的偏移地址,但 LEA 指令可以取动态的地址, OFFSET 只能取静态的地址。 二、算术运算指令 1、 加法指令 (1) 不带进位的加法指令 ADD 格式: ADD acc,data ADD mem/reg,data ADD mem/reg1,
25、mem/reg2 实例: ADD AL, 30H ADD SI, BX+20H ADD CX, SI ADD DI, 200H ADD 指令对 6 个状态标志均产生影响。 例:已知 (BX)=D75FH 指令 ADD BX,8046H 执行后,状态标志各是多少? D75FH = 1110 0111 0101 1111 8046H = 1000 0000 0100 0110 1 1 11 11 0110 0111 1010 0101 结果: C=1, Z=0, P=0, A=1, O=1, S=0 判断溢出与进位 (重点 ) 从硬件的角度:默认参与运算的操作数都是有符号数,当两数的符号位相同,而和的结果相异时有溢出,则 OF=1,否则 OF=0 ( 2) 带进位的加法 ADC ADC 指令在形式上和功能上与 ADD 类似,只是相加时还要包括进位标志 CF 的内容,例如: ADC AL, 68H ; AL (AL)+68H+(CF) ADC AX, CX ;AX (AX)+(CX)+(CF) ADC BX, DI ;BX (BX)+DI+1DI+(CF) ( 3)加 1 指令 INC 格式: INC reg/mem 功能:类似于 C 语言中的 +操作:对指定的操作数加 1 例 : INC AL INC SI INC BYTE PTRBX+4 注:本指令不影响 CF 标志。