1、微型计算机系统原理及应用指导资料 微型计算机原理与接口技术 课程学习指导资料 编写:李远弘 四川大学电气信息学院 20031015 微型计算机系统原理及应用课程学习指导资料编写:李远弘审稿(签字):审批(主管教学负责人签字): 本课程学习参考资料根据该课程教学大纲的要求,参照现行采用教材微型计算机系统原理及应用(周明德主编,清华大学出版社,1998年)以及课程学习光盘,并结合远程网络业余教育的教学特点和教学规律进行编写,适用于电气专业专升本学生。 第一部分 课程的学习目的及总体要求一、 课程的学习目的 掌握微型计算机的工作过程;掌握8086/8088汇编语言的编程方法,以能够编辑适当难度的汇编
2、语言程序;掌握接口技术的基本知识,以及掌握微处理器与存储器、常用芯片的连接方式,同时应掌握相应的口地址选择与初始化编程。为今后学习与掌握微机控制技术奠定基础。二、 课程的总体要求该课程共可以分为四个大的部分,即:数制与数的运算部分、8086/8088的组成(内部结构与外部连线)部分、汇编语言及程序设计部分和接口技术与接口芯片部分。学习该课程应注意如下几个问题,即: 微型计算机中信息的流向,信息从哪里来,信息到哪里去。 根据模电与数电的知识,尽可能地建立起空间概念。 前后的知识一定要融会贯通,不能将章节孤立开来学习。 第二部分 课程学习的基本要求及重点难点内容分析第一大部分 数制与数的运算第一章
3、 概述第二节 计算机中的数和编码系统1、本部分要求 (1)熟练掌握二进制、十进制、十六进制数的运算与它们之间的转换; (2)熟练掌握无符号数与有符号数的原码、反码、补码的运算; (3)熟练掌握8421 BCD码的定义,加、减运算与修正法则; (4)熟练掌握计算机中加、减运算结果的进位、溢出的判断方法;2、本部分重点难点分析 (1)运算结果是否有进位(借位),是否有溢出,应该是对应于不同类型的数。即先确定运算数的类型。 v 对于无符号数 的运算结果,只考虑是否有进(借)位 ; v 对于有符号数 的运算结果,只考虑是否有溢出 。 运算数后,你怎么知道应该判断进位,或是判断溢出? 同学甲 同学乙 计
4、算:-65 + 65 = 0 191 + 65 = 256 (有符号数运算) (无符号数运算) 16进制数结果: 00H 100H (-65)补码 BFH(计算机存储数)41H 65 191 两个不同的运算式,计算机以相同数进行运算: BFH + 41H 同学甲 同学乙 1 0 1 1 1 1 1 1 1 0 1 1 1 1 1 1 + 0 1 0 0 0 0 0 1 + 0 1 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 CS+1 CS = 1 1 = 0 CS+1=1 ,则CF = 1 OF = 0 无溢出 , 有进位 ,保存结果100H
5、, 其结果为00H正确 。 必须增加高字节 。3、本部分典型例题分析 例1:写出A7H的有符号数与无符号数的原码、反码与补码。 有符号数 无符号数 A7H = -39D A7H = 167D 1 0 1 0 0 1 1 1 原码 1 0 1 0 0 1 1 1 1 1 0 1 1 0 0 0 反码 0 1 0 1 1 0 0 0 1 1 0 1 1 0 0 1 补码 0 1 0 1 1 0 0 1 例2 :求(59 )BCD+(67)BCD =(126)BCD 0 1 0 1 1 0 0 1 + 0 1 1 0 0 1 1 1 1 1 0 0 0 0 0 0 结果= C0H,低四位进位,高四位
6、超过9 + 0 1 1 0 0 1 1 0 高四位与低四位都加六修正 0 0 0 1 0 0 1 0 0 1 1 0 126H 例3:分析两数相减运算结果CF与OF的值。 直接法 计算:3DH-5CH 0 0 1 1 1 1 0 1 - 0 1 0 1 1 1 0 0 得:CS+1 = 1,CS = 1 1 1 1 0 0 0 0 1 则:CF = 1,OF = CS+1 CS = 0 带符号变补作加 计算:3DH+(-5CH)有符号数补码 =3DH+A4H 0 0 1 1 1 1 0 1 + 1 0 1 0 0 1 0 0 得:CS+1 = 0 1 1 1 0 0 0 0 1 则:CF =
7、0,OF = CS+1 CS = 0 通过变换减法运算为带符号变补作加运算后,进位的判断有误;所以,应用后面的方法运算,其结果应对CF求反。 4本部分练习题 (1)分别写出下面二进制数的有符号数与无符号数的原码、反码与补码。 1001 1101 0001 0100 0011 0000 1000 1001 1010 0011 (2)运算下面,判断是否有进位(借位)与溢出? 0101 0100 0011 1001+0100 0101 0110 1010; 1010 0001 1001 0101+0110 1001 1100 1010; 0101 0100 0011 1010-1111 1110 0
8、000 0000。 (3)请按 BCD 码的计算方法,求出其结果: (23)BCD+(67)BCD (5678)BCD+(1756)BCD (4)请写出字符“09”、“AD”及“ad”的ASCII码。第二大部分 8086/8088的结构第一章 概述第三节 计算机基础第五节 微型计算机的结构第六节 8088的结构第二章 8088指令系统第二节 8088的标志寄存器第四章 总线操作与时序第一节 概述第二节 8088的总线1、本部分要求(1) 熟悉微型计算机的结构特点及其组成;(2) 掌握微处理器的总线结构,主要引脚的符号及作用;(3) 掌握8088微处理器与8086微处理器的主要区别。(4) 熟悉
9、微处理器的复用总线的分离;(5) 掌握微处理器的执行部件(EU)和总线接口部件(BIU)的主要组成部分,及其两部件的功能;(6) 熟练掌握并牢记各寄存器的名称及其功能;(7) 熟练掌握存储器实际物理地址的计算。2、本部分重点难点分析 (1)寻址方式 寻址方式应分为“源”或“目的”的寻址方式各属于哪一类; 是哪一类寻址方式应通过反汇编而定。 如:MOV AX ,1000H MOV AX,1000H 前面两条语句,经过汇编,其机器码相同。反汇编语句均为: MOV AX ,1000 所以前面两条语句中“源”的寻址方式均应为“立即寻址”。 (2)状态标志寄存器FLAGS 存放算术逻辑运算后的6种状态标
10、志与置入的3种控制标志。每一标志为一位二进制数。 a状态标志 CF(进位标志C)表示字节运算结果D7或字运算结果D15是否产生进位(或借位)。 进位(或借位):CF=1,无进位(或无借位):CF=0。 PF(奇偶标志P)表示逻辑运算结果低八位“1“的个数为偶数或为奇数。 “1“的个数为偶数:PF=1,”1“的个数为奇数:PF=0。 AF(辅助进位标志A)表示字节运算结果D3是否产生进位(借位)。 进位(或借位):AF=1,无进位(或无借位):AF=0。 ZF(零标志Z)表示运算结果是否为零。 数为零:ZF=1,数不为零:ZF=0。 SF(符号标志S)有符号数运算时,字节运算结果D7或字运算结果
11、D15是否为“0(正数)”或为“(正数)”。 数为负:SF=1,数为正:SF=0。 OF(溢出标志O)有符号数运算时,表示数运算结果是否超过补码的范围,即是否溢出。 有溢出OF=1,无溢出OF=0。 字节运算,数的补码的范围:-128+127 字运算,数的补码的范围:-32768+32767 b控制标志 DF(方向标志D)设置数据串操作指令结数据串进行处理时,数据地址的步进方向标志。即:为减量方向(高地址的数低地址的数)或为增量方向(低地址的数高地址的数)。 设置DF=1:自动减量指示。 设置DF=0:自动增量指示。 IF(中断允许标志I)设置屏蔽中断方式下的CPU是否响应外部的中断申请的标志
12、。 设置IF=1,允许CPU响应外部的中断申请。 设置IF=0,屏蔽CPU对外部中断申请的响应。 IF的设置不影响CPU对内部中断及非屏蔽中断申请的响应。 TF(追踪标志T)设置TF=1,每执行一条指令,CPU自动产生一个中断, 以便检查程序的执行是否正确。设置TF=0,连续执行程序,CPU为正常工作状态。 (2)使用存贮器内操作数的注意事项 若出现BP(基值指示器),其缺省段必为堆栈段段寄存器SS。 若出BX(基数地址寄存器),SI,DI(变址寄存器),必须使用数据段段寄存器DS。 在表达式中不能同时出现BP(基值指示器)和BX(基数地址寄存器),或者SI(源变址寄存器)和DI(目的变址寄存
13、器)。必须一个是BP或BX,另一个是SI或DI DX(数据寄存器)不能作为存贮器操作数表达式中的寄存器名。可以用于I/O端口间接寻址方式中,作为I/O端口。3、本部分典型例题分析 例1:设定某数据区为16个字,起始地址为70A0:DDE6,写出该数据区数据字的首末地址。 解:已知:DS=12AH,数据区首地址的偏移地址为DDE6H 首地址=(70A0H10H)+DDE6H = 7E7E6H 末地址=首地址+(字数-1) 2 = 7E7E6H+0030D = 7E7E6H+001EH = 7E814H 例2:设椎栈段寄存器SS所存放的数据为2250H,堆栈指示器SP所存放的数据为0140H,如压
14、入堆栈7个数据库字,问:栈顶地址,SS和SP各为何值? 解: 已知: DS=2250H,栈顶地址的偏移地址=0140H 栈顶地址=(2250H10H)+ 0140H = 22640H 压入7个数据字后: SP = 0140H - 27 = 0132H SS = 2250H 例3:指出下列指令的错误 MOV AH,BX ;数类型不匹配 MOV BX,SI ;存贮器之间不能传 MOV AX,SIDI ;SI,DI不能同时使用 MOV BYTEPTRBX,1000 ;数类型不匹配 MOV BX,OFFSET MYDATASI ;OFFSET使用不当,无法求EA MOV DS,BP ;DS不能从基值寄
15、存器送入 MOV AL,DX ;DX不能作为存贮器表达式 MOV AX,BXBP ;BX,BP不能同时使用4本部分练习题 (1)执行下面的运算后,FLAGS中各状态标志是何值?为什么? 5439H+456AH A195H-69CAH (2)试用图示说明执行以下堆栈操作后,堆栈区及SP、AX、BX等寄存器的内容各是什么值? 设:(AX)= 20FCH,(BX)=20FDH,(SP)=20FEH a将AX压入堆栈: b将BX压入堆栈: c将堆栈区的数据弹出,到AX。 (3)设存储器堆栈段段寄存器内容为(SS)= 0250H,堆栈指针(SP)= 0120H,如果弹出7个数据字,问:SS、SP两寄 存
16、器内容?新栈顶的物理地址是多少?第三大部分 汇编语言及程序设计第二章 指令系统第一节 8088的寻址方式第二章 指令系统第三节 指令系统第三章 汇编语言程序设计第一节 汇编语言的格式第二节 8088的总线第三节 8088典型时序分析第四节 最大组态下的8088时序1、本部分要求(1) 熟悉掌握指令执行对标志寄存器FLAGS状态标志的影响;(2) 掌握8086微处理器指令系统的分类及常用的指令;(3) 掌握8086微处理器常用的伪指令;(4) 熟练掌握8086微处理器寻址方式及其分类。2、本部分重点难点分析 (1)LEA与MOV的区别 设DS=093AH,某数据地址偏移量BUFR=23H LEA
17、 BX,BUFR(相当于MOV BX,OFFSET BUFR) 将DS段BUFR的偏移量地址送入BX。 MOV BX ,BUFR 将DS段BUFR偏移地址中的两个字节的内容送入BX。 (2)IN与OUT语句中,“源”与“目的”总有一个为地址,所以不存在所谓“数据不匹配”的问题。 (3)I/O指令与MOV指令的区别 (DX)= 0200H (AX)= A5C4H IN AX,80H MOV AL,80HALB08080CPUAL5533译码器5533AB=80HDBCPUI/O接口80口 输出缓冲器 OUT DX,AX MOV DX,AXA5C4A5C4CPUAXDX译码器AXA5C4AB=02
18、00HDBCPUI/O接口A5C40200口 注意:IN与OUT语句中,“源”与“目的”总有一个为地址,所以不存在所谓“数据不匹配”的问题。 (4)移位次数如果1,必须将移位次数先送入CL中。 (5)要求熟练掌握的指令如下: MOV:字节或字的传送指令 PUSH:入栈指令;POP:出栈指令 LEA:有效地址传送指令 IN: I/O操作的输入指令;OUT: I/O操作的输出指令 ADD:普通加法指令;ADC:带进位位加法指令;INC:加一指令;DAA:组合BCD码加法的加六修正指令 SUB:普通减法指令;SBB:带进位位减法指令;DEC:减一指令;NEG:(无符号数)求补指令 CMP:比较指令(
19、目的-源,只影响FLAGS寄存器) MUL:无符号数乘法指令;DIV:无符号数除法指令 AND:按位“与”逻辑运算指令;OR:按位“或”逻辑运算指令;NOT:按位“非”逻辑运算指令;XOR:按位“异或”逻辑运算指令 TEST:按位“与逻辑位测试”运算指令 SAL:按位“算术左移”运算指令;SAR:按位“算术右移”运算指令 SHL:按位“逻辑左移”运算指令;SHR:按位“逻辑右移”运算指令 JMP:无条件转移指令;J:条件转移指令中的普通条件转移指令 CALL:调用过程(子程序)指令;RET:过程(子程序)返回指令 LOOP:无条件循环指令 INT:中断指令;IRET:中断返回指令 CLC:进位
20、标志位置“0”指令;STC:进位标志位置“1”指令 HLT:微处理器暂停指令;NOP:微处理器空操作指令 (6)要求熟练掌握的伪指令与属性操作符如下: DB(Byte):申请数据项为“字节”数据区伪指令 DW(Word):申请数据项为“字”数据区伪指令 DD(DWord):申请数据项为“双字”数据区伪指令 EQU:等值伪指令,为常数、表达式、符号重新定义一新符号,但不申请内存 PTR运算符:在源程序中,对变量、标号、存储器的属性进行临时修改 SEG运算符:求取某存储器单元的段地址 OFFSET运算符:求取某存储器单元的偏移地址; LENGTH运算符:求某存储器/存储器数组的长度。3、本部分典型
21、例题分析 例1:分析下面申请数据区的存储内容 设:NUM的段地址为0915H,NUM的偏移地址为0004H NUM DB 75H ;申请一字节,数为“75H” ARRY DW 20H DUP(0) ;申请20H个字,数均为“0” ADR1 DW NUM ;申请一字,预置NUM的偏移地址 ADR2 DD NUM ;申请双字,预置NUM的逻辑地址 ADR3 DW ARRY2 ;申请一字,预置ARRY的偏移地址加2 例2:分析下面程序语句“1”、“2”及“3”中寄存器BX、SI及AX存储的内容。 SJD SEGMENT DATA EQU 0100H ORG 2300H DATA1 DW 35ABH
22、SJD ENDS CODE SEGMENT ASSUME CS:CODE,DS:SJD START: MOV AX,SEG DATA1 MOV DS,AX MOV BX,2000H ;1 MOV SI,0200H ;2 MOV AX,DATA BX SI ;3 MOV AH,4CH INT 21H CODE ENDS END START 分析:(BX)=2000,(SI)=0100,(AX)=35AB4本部分练习题 (1)上机练习内容 a熟悉DEBUG调试程序的练习 按如下简单程序,观察申请数据区各单元的内容,及相应寄存器中内容的变化,同时要求掌握DEBUG调试程序中各部分的含义。 DATA
23、SEGMENT NUM1 DB -35,35,35H NUM2 DW -35,35,35H NUM3 DB 4 DUP(34,3 DUP(34H) NUM4 DB 34AB NUM5 DW 34,AB DATA ENDS START: MOV AX,DATA MOV DS,AX MOV BX,OFFSET NUM1 MOV AL,BX MOV BX,OFFSET NUM5 MOV AX,BX MOV AH,4CH INT 21H CODE ENDS END START B简单程序的调试练习 按如下简单程序,将其改正为语句与结果都完全正确的程序。注意程序产生错误的原因,及正确的程序运行结果与存储
24、区域。 ADDDATA SEGMENT FIRST DB 32H,AFH,8AH SECOND DB 84H,BAH,00H ADDDATA ENDS MUT_ADD SEGMENT ASSUME CS:MUT_ADD,DS:ADDDATA START: MOV AX,ADDDATA MOV DS,AX MOV CX,LENGTH FIRST MOV SI,0 CLC ADD: MOV AL,SECOND SI ADC FIRST SI,AL INC SI LOOP ADD MOV AH,4CH INT 21H MUT_ADD ENDS END (2)分析下面两字节相加的源程序,NUM3中保存
25、的运算结果是什么?如果将数据段中0A0H改为12H NUM3中保存的运算结果又如何?如运用DEBUG调试时,请写出运用“D DS:0”显示数据段时,其示数据段的格式。 DATA SEGMENT NUM1 DB 0A0H NUM2 DB 9BH NUM3 DW 0 DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA START: MOV AX,DATA MOV DS,AX MOV AL,NUM1 ADD AL,NUM2 JC LOP1 MOV BYTE PTR NUM3,AL JMP DONE LOP1: MOV AH,01 MOV NUM3,AX DON
26、E: MOV AH,4CH INT 21H CODE ENDS END START (3)寻址的实质是什么?常见的存储器寻址方式与I/O寻址方式有哪几种? (4)说明CALL指令与RET指令的关系,并说明其两指令执行时的操作过程。 (5)试列举必须使用AL或AX寄存器的指令(要求列举五条以上)。 (6)8086/8088指令系统包括哪几类指令?每类列举一例,并说明它们的寻址方式。 (7)编写多字节加法的通用8086汇编语言程序。如改为字的加法应作哪些修改? (8)对有符号数运算能够用哪些标志位进行判断?若是无符号数运算应采用哪些标志位进行判断?请各举一例说明。第四大部分 接口技术与接口芯片第五
27、章 半导体存储器1、本章要求: 1掌握存贮器的主要分类及其特点。 2了解存贮器内部组成结构各部分的功能。 3熟练掌握存贮器与微处理器的连接。2、本章重点难点分析 (1)存贮容量: 一存贮体所能存贮的位(BIT),字节(BYTE)或字(WORD)的最大数量。 NM 存贮单元每单元的二进制位数 与连接地址线条数 与连接数据线的条数 存储器的所谓地址范围:是由可以连接至存储器的地址线的条数 ,与生成片选信号的地址线条数所确定。 例:2K8的存储器地址范围的计算方法如下内译码范围 外译码(固定地址) 内译码(变化地址) A15 A14 A13 A12 A11 A10 A9 A8 A7A0 0 0 0
28、0 0 0 0 0 0 0 0 0 1 0 1 0 0 1 1 0 1 1 1 1 1 0000H 07FFH 2000H 2FFFH 3000H 37FFH 根据外译码地址线状态 (决定外译码器的输出状态)与内译码地址线变化范围,确定 芯片的寻址范围 (单元地址范围) (2)存贮器与微处理器的连接 存贮器的结构差异较大,存贮器与微处理器的连接方式多种多样。 a1K存贮器容量的形成 1K1存贮器与微处理器的连接(扩位展)需1K1的芯片8片1K11K1A09A09D0D7 1K4存贮器与微处理器的连接(字扩展)1K4A091K4A09D03D47 需1K4的芯片2片3、本章典型例题分析 例1:如
29、果应用RAM2114存贮器芯片组成1K8的存贮容量,要求寻址区间是3000H33FFH,问地址线与数据线应如何连接?(2114的容量为1K4,地址线用16根。) 解:根据首末地址可获得片选信号地址的二进制数码: 片选信号CSI/O042114A09D07D03D47A12 A13A1011 A1415CSI/O042114A1510为001100,根据逻辑关系可以采用下面的片选信号的逻辑电路。 A09A12 A13 A10 A11 A14 A15片选信号 按地址线状态的要求,用逻辑电路,形成片选信号。 逻辑关系: (A15+A14+A11+A10) A13 A12 = A15 A14 A11
30、A10 A13 A12 例2:设存贮器芯片每块的容量都为4K8,利用全译码法,求取8086微处理器可获得得存贮器容量,与连续的存贮地址范围。CEO072732译码器CEO072732CEO072732CEO07273211011110 A15 A14 A13 A12 Y0 Y1 Y2 Y3 A011A011 D07 0000H0FFFH 1000H1FFFH 2000H2FFFH 3000H3FFFH A15 A14 A13 A12 A11 A10 A9 A8 A7A0 第一片:0 0 0 0 0 0 0 0 0 0 第二片:0 0 0 1 第三片:0 0 1 0 第四片:0 0 1 1 1 1 1 1 1 1 4本章练习题 请分析2732与6116的地址范围(包括其奇、偶片的地址范围)。CE2732CS6116G2AG2BG1A17A0GA1315A812GCE