北京交通大学微机原理复习提纲2008

更新时间:2024-04-09 08:16:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

试题类型:选择(10)、填空(10)、指令改错(10分)、简答(15)、读、写程序(20)、存储器扩展(15分)、接口应用(20)

第一章 微机概述

1. 进位计数制

? 表示:

n-1

i=-m

i

(N)k= Σ Ni×K

其中:Ni - 第i位数字

n, m – n整数位数,m小数位数 K – 基数(采用的数字符号的个数) K – 权

在汇编语言中,常用2#,10#,16#,在数的最后用字符B、D、H以示区别。 ? 数制转换(重点)

10->2:整数除2取余,小数乘2取整(均从小数点开始)。 例: 115.625 10->16:10->2->16

2/16->10:按公式计算累加和(按10进制运算规则)

2. 十进制数与字符的编码表示

·BCD码

用4位2#表示1位10#,逢十进一,4位组中各位的权=8,4,2,1

i

非压缩、压缩

·ASCII码(英文字母(大小写),数字) 3.2#运算规则(算术、逻辑)

·加、减、乘、除 ·与、或、非、异或 4. 符号数表示(重点)

·符号表示: 0正,1负,符号在最高位上 补码:符号,数值位变反+1。表示范围?0的表示?

例:-123转换成二进制数补码 ·补码的运算

利用公式:[X+Y]补=[X]补+[Y]补 [X-Y]补=[X]补+[-Y]补

例:X=-1000101 Y=-0110110, 求[X+Y]补

第二章 CPU结构

1. 8086/8088微处理器

地址(20)、数据(8)、控制线(IO/M、RD、WR、ALE等)、总线(INTR,INTA(#), HOLD, HLDA)。 1) 内部结构。EU(通用寄存器、ALU、FR) + BIU(段REG、IP、地址∑、指令队列) 2) 寄存器结构(重点)

·通用寄存器:

数据:AX、BX、CX、DX(每个都可分为两个8位寄存器,共8个:AH,AL,...) 指针:SI、DI、SP、BP ·控制寄存器:IP、FR ·段寄存器:CS、DS、SS、ES

各寄存器的主要用途? (特别注意SI、DI、BX、BP的用法)

2.存储器寻址(重点)

? 按字节(存储单元)进行存取,每次可1/2/4个字节 ? 地址线根数与寻址范围的关系 ? 分段编址:

? 分段原因:要用16位(可寻址2=64KB)的寄存器寻址1MB(2)的内存空间 ? 存储单元地址的2种表示:物理地址(唯一)、逻辑地址(不唯一)

? ? ?

16

20

物理地址表示:20位的真实地址 逻辑地址表示:段:偏移 物理地址的形成方法:

段(在CS/SS/DS/ES中)左移4位+偏移地址(在IP/SP/BP/BX/SI/SI中)

例:2AFBH:15ADH所对应的真实物理地址=? ? 段寄存器的使用

? 不同类型数据在内存中的存放顺序

? 堆栈特点及堆栈操作(PUSH、POP、CALL、RET、INT、IRET) 4. 状态寄存器FR(重点)

共16位,只用9位(状态6,控制3) 2类:

? 状态-AF、CF、OF、PF、SF、ZF

·置1/置0的条件?

·算术和逻辑操作对状态标志的影响:(算术-全部(INC/DEC不影响CF),逻辑-PF、SF、ZF) ·传送操作对状态标志的影响:除POPF/SAHF外,均不影响标志位。

? 控制-DF、IF、TF

·置1(置0)所产生的影响? 补充习题:2-8

第三章 指令系统

1.寻址方式

? 什么是寻址方式:寻找、计算(取得)操作数地址的方法 ? 关于操作数的寻址方式,8种:

立即:操作数在指令中(不允许使用段超越)。 REG:操作数在某一寄存器中(不允许使用段超越) *直接:操作数的地址在指令中

*REG间接:操作数的地址在BP/BX/SI/DI寄存器中 *基址:操作数的地址为(BX)/(BP)+位移量 *变址:操作数的地址为(SI)/(DI)+位移量 *基+变:操作数的地址为(BX)/(BP)+(SI)/(DI)

*带位移的基+变:操作数的地址为(BX)/(BP)+(SI)/(DI)+位移量

(带*的为存储器操作数) 注意事项:

? 能够参与寻址的寄存器:BX,BP,SI,DI,DX(仅用于I/O指令)

? 对存储器操作数:用BX,SI,DI时,默认的段地址在DS中,用BP时,默认的段地址在SS中。

若数据不在默认段中,应使用段超越。

? 指令中不可同时出现SI/DI,也不可同时出现BX/BP。(即一条指令中只能出现一次)

2.指令系统

指令的构成:操作码、操作数(0个、1个或2个,隐含) ·数据传送

1)可实现R←→R/M/Stack、Acc←→I/O、FR←→Stack、Num→M/R之间的传送。 2)包括:MOV、PUSH/POP、IN/OUT、LEA。

3)段寄存器只能通过MOV、PUSH、POP进行操作,但修改CS是不合法的。

没有将立即数送入段寄存器的指令,给段寄存器赋值只能通过通用寄存器间接传送。 4)PUSH/POP 可实现R/M/F←→Stack。每次传送2个字节。低字节在(SP-1),高字节在(SP-2)。同时使堆栈指针自动修改。 5)LEA将操作数EA装入寄存器。

6)IN/OUT实现Acc<->I/O,I/O端口的地址在指令中(0-255)或在DX中(0-65535)。 7)凡具有两个操作数的指令——操作数类型应相同

·算术运算、逻辑运算和移位

1)所有这类运算的操作数都不允许是段寄存器。

2)算术/逻辑运算指令:一般要影响全部6个状态标志。例外:INC/DEC不影响CF。 3)ADD/ADC/SUB/SBB——8/16位操作,不带进位/带进位。

4)INC/DEC——REG/MM(8/16位)加/减1。操作数不允许是立即数。

5)CMP是特殊形式的减法指令。除不存储结果外,其他同SUB。用于比较两个操作数之间的大小关系。

6)MUL/IMUL——8/16位操作,结果16/32位。

8位乘:操作数*AL(隐含),结果在AX中 16位乘:操作数*AX(隐含),结果在DX:AX中 7)DIV/IDIV——16/32位操作,结果8/16位。

8位除:AX(隐含)/操作数→AL?AH 16位除:DX:AX(隐含)/操作数→AX?DX

8)DAA/DAS对压缩的BCD码进行加/减法调整。隐含操作数为AL。用在加/减法指令后。

9)AND/OR/XOR/NOT——8/16位。按位操作,无进借位。

10) TEST是特殊形式的AND指令。除不存储结果外,其他同AND。用于测试操作数的某些位的状态。

11) 移位和循环移位指令共有8种:

移位 逻辑/算术左移SHL/SAL 逻辑右移SHR 算术右移SAR 循环左/右移ROL/ROR 循环移位 带进位循环左/右移RCL/RCR 移位位数:放在CL中,如:MOV CL,4;SHL AX,CL

若只移1位则允许以立即数形式放在指令中,如SHL AX,1

·控制转移、处理器控制

1)标号代表了存放指令的存储单元的地址。通常作为转移指令的目标操作数。 2)无条件转移指令有3种:短、近、远。

短转移(SHORT):转移范围-128~+127,段内转移 近转移(NEAR):转移范围-32768~+32767,段内转移

远转移(FAR):转移到系统存储器的任何位置,段间转移(跨段) 3)直接转移有3种:段内短/近转移,段间转移。

目的地址放在指令中,分别以运算符SHORT、NEAR PTR、FAR PTR予以标识。 4)间接转移有2种寻址方式:

目的地址放在寄存器中(近转移):例:JMP BX 目的地址放在存储器中(近转移为字,远转移为双字)。

例:JMP WORD PTR[BX]; JMP DWORD PTR[BX] 5)条件转移全部是直接短转移。常用的有JC/JNC、JZ/JNZ,JL/JNL,JG/JNG等。

6)LOOP <标号>指令相当于DEC CX/JNZ <标号>两条指令的组合。它使CX减1,当CX不是零时转移到标号处。循环的其他形式:LOOPZ/LOOPNZ,由CX、ZF共同决定是否转移。 7)CALL/RET实现过程调用和过程返回。

CALL执行时,它把返回地址(即紧接在CALL后面那条指令的地址——IP,CS的内容)压入堆栈,然后转移到过程。段内调用:IP进栈;段间调用:IP、CS都进栈。

RET指令把返回地址从堆栈弹出到IP(从近过程返回)或IP、CS(从远过程返回)。 8)中断分为硬件中断和软件中断。软件中断主要是由INT指令产生的。用于处理中断的过程叫做中断处理程序,它是通过中断向量间接调用的。中断处理程序结束后,必须用IRET指令返回被中断的程序。

9)中断向量是中断服务程序的入口地址,4字节(包括偏移和段地址)。

中断向量表(0-3FF,4字节/每表项,256个,共1024字节)

中断向量的偏移地址=向量号*4 (段地址=0)

例: INT 14H, INT 2FH 的中断向量存放单元=? 10) CPU响应中断后,将PSW、IP和CS压入堆栈,清除TF和IF标志位,然后根据中断类型

号从中断向量表取出中断向量送到CS、IP,从而转到相应的中断处理程序执行。 11) 中断处理结束,用IRET指令从堆栈中恢复返回地址(IP,CS)和标志寄存器FR。 12) 中断允许标志位(IF)控制CPU的INTR(可屏蔽中断请求)引脚。STI允许CPU响应可屏

蔽中断请求,CLI则禁止。IF标志位不影响软中断(INT指令)。 13) CLC/STC/CMC用于清除/置位/取反CF标志。

第4章 汇编语言程序设计

1、顺序程序设计

要注意语法、汇编语言框架、算法逻辑等方面符合要求。 2、 分支、循环程序设计

转移条件(CF、ZF、OF、SF、PF)、指令用法(根据标志位)

相关指令:Jx;x=C/NC(B/NB)、Z/NZ、G/NG、L/NL、GE/NGE、LE/NLE、A/NA、O/NO、P/PO、S/NS

JCXZ LOOP LoopZ/LoopNZ

3、子程序设计(重点是参数传递方法和堆栈概念)

子程序结构(框架):PROC … ENDP

参数传递方法:寄存器、内存变量(值、指针)、堆栈 相关指令:CALL、RET

保护/恢复寄存器:入口处和退出前,PUSH/POP

4. 汇编语言与汇编程序

? 语句格式:[标号:] 操作码 操作数 ;注释 ? 各种名字的定义规则(包括段名、标号、变量名、常量名、过程名):

1、 可以包括A-Z、0-9和“?.@_$ ”5个特殊字符

2、 不能以数字开头

3、 不能与保留字(指令助记符/伪指令/寄存器名等)重名,使用标号时特别要注意 4、 不能重复定义 5、 不能超过31个字符 ? 汇编语言程序的结构(框架)

数据段名 SEGMENT

<数据定义伪操作> 数据段名 ENDS 代码段名 SEGMENT ASSUME CS:代码段名,DS:数据段名 <主程序> <子程序>

代码段名 ENDS

END <程序开始地址(标号)> 主程序的三种结构:

开始标号: <指令1> (1) <指令2> . . . MOV AH,4CH INT 21H

过程名 PROC FAR (2)

<指令1> <指令2> . . . MOV AH,4CH INT 21H 过程名 ENDP

过程名 PROC FAR PUSH DS MOV AX,0 PUSH AX . . . <指令1> <指令2> . . . RET 过程名 ENDP (3) 注意:主程序开始处要设置DS、ES段寄存器(有时也要设置SS/SP的初值)

? 数据项和表达式

操作数构成:REG、存储器单元、数据项

数据项:常量、标号、变量以及三者的组合(表达式) ·常量:数字常量2#、16#、10#,字符常量‘XXX’

·标号:某条指令的符号地址,定义时要加冒号(:),引用时不要冒号 ·变量:内存中的数据区

定义格式:[变量名] DB(DW,DD) [表达式] ·表达式:算术、逻辑、关系 算术:+、-、*、/ 逻辑:AND、OR、NOT、XOR

关系:EQ、NE、LT、GT、LE、GE(结果是逻辑值,真-全1,假-全0)

例: MOV AX,4*64 ;AX←256 MOV AX,40H EQ 64 ;AX←0FFFFH ·类型操作符:(BYTE、WORD、DWORD、NEAR、FAR)PTR ·取段、偏移地址操作符:SEG、OFFSET(变量和标号)

例: MOV BX,OFFSET VAR ;BX←VAR的偏移地址(或EA) MOV AX,SEG VAR ;AX←VAR的段地址

(注意与LEA指令的异同)

? 指示性语句

指示性语句(伪指令)与指令性语句(指令)的区别是什么?

变量定义: DB、DW、DD、DUP 符号赋值: EQU、=

段定义: SEGMENT/ENDS、ASSUME

定位类型:BYTE、WORD、PARA、PAGE 组合类型:PUBLIC、AT、STACK 类别名:‘CLASS’(段组名)

伪指令SEGMENT指定一个段的开始,ENDS指定一个段的结束。SEGMENT/ENDS必须成对使用。 伪指令ASSUME通知汇编程序CS、DS、ES、SS与逻辑段之间的关系——用于语法检查。

? DOS功能调用(INT 21H,AH=功能号,参数传递:寄存器) 1) 输入一个字符:01H,AL=字符

Byte 1 Byte 2 字节数=缓冲区大小

缓冲区大小 实际键入字符数 输入缓冲区 2)输入字符串:0AH,DX=缓冲区地址(格式: )

例: BUFSIZE DB n ;n=<缓冲区大小> ACTSIZE DB ? ;实际键入字符数将访在此单元 BUFFER DB n DUP(?) ;预留n个字节 3)显示一个字符:02H,DL=字符

4)显示一个字串:09H,DX=字串首址(字串以’$’结束) 5)返回DOS系统:4CH

? 汇编语言程序编制步骤 1)编辑EDIT(生成.ASM)

2)汇编MASM(输入.ASM,输出.OBJ) 3)链接LINK(输入.OBJ,输出.EXE) 4)调试DEBUG

? 补充习题4-1,习题4-2,4-19

第五章 半导体存储器

1. 要求

1) 分类、特点、工作原理——ROM(EPROM,EEPROM),RAM(SRAM,DRAM)计算构成存储器

所需的芯片的数量,位扩、字扩的连接方法

2) 利用全译码/部分译码,将存储器芯片连接到系统总线上并映射到任意地址空间 3) 给出存储器的地址范围求内存的首址/末址和容量,反之也要会求解 4) 根据地址范围用门电路(包括74LS138)构成译码器的方法 2. 重点

1) 基本概念

? 存储器存储数据的单位:

bit——存储数据的最小单位

Byte——存取数据的基本单位,也称存储单元

内存以字节为单位进行存取,字长为16/32/64位时,则每次存取2/4/8个单元 ? 存储器的容量:微机系统中存储单元的总和。单位为KB、MB、GB ? 存储器的编址:地址——给每个存储单元分配的顺序编号

? 寻址范围与地址总线位数的关系:地址线n根,地址范围2,分布在0~2-1 ? 寻址范围与存储容量的关系:寻址范围——CPU编址单元的总和,定值

存储容量——实际配置的物理内存单元的个数,可变

? 存储芯片的容量:用“单元数×每单元位数”表示(例如4K*8b) 2) 位扩、字扩、字位扩及连接方法

位扩——对位数扩充,如用存储芯片制造内存条 字扩——对容量扩充,如往微机中扩充内存条 字位扩——对位数、容量均扩充

连接规则:位扩——数据线分别引出,地址/控制线并联

字扩——地址线/读写信号/数据线并联,片选线分别接高位地址的译码输出 3) 地址译码

存储芯片的容量总是小于CPU的寻址空间。也就是说,一个芯片的地址线数总是少于系统地址总线的根数。

系统地址总线分为两部分:低位地址线直接接存储芯片;高位地址线则用于片选译码(称为地址译码),用于选择哪个存储芯片工作。

n

n

全地址译码——全部高位地址线都参加片选译码

部分地址译码——部分高位地址线参加片选译码(一个芯片会对应多个地址范围) 常用译码电路——用与、或、非门构建,或用74LS138等现成的译码器 4) 地址范围、内存容量、首址/末址 利用公式: 末址 = 首址+容量(字节数)-1 容量 = 末址-首址+1 再记住几个关键数字:2 = 1KB = 400H

0~000FFH → 00100H = 256B 0~00FFFH → 01000H = 4KB

0~0FFFFH → 10000H = 64KB 5) 存储芯片与总线的连接

重点是SRAM和EPROM与系统总线的连接方法:数据、地址(译码器)、CS#/CE#、OE#

10

第六章 输入输出技术

1. 概述

1) I/O端口的编址

? 端口地址: I/O接口中的子部件或寄存器的编号 ? 两种编址:统一编址、独立编址,特点及优缺点

? 8088/8086系统的I/O寻址:直接寻址256个(0~0FFH),间接寻址(DX)64K个(PC中只

允许1024个,0~3FFH) 2) 输入输出的基本方法

无条件、查询、中断、DMA (以上四种方法的特点)

? 查询——用I/O指令读入外设状态(数据准备好/设备空闲),以决定能否进行读写 ? 中断——外设准备好时主动向CPU提出申请,CPU暂停当前程序,转入中断服务程序,完

成数据传送。中断服务完毕,CPU返回被中断的程序继续执行

? DMA——在外设与内存之间直接进行数据交换,传输过程由DMAC管理,CPU只进行初始化

重点:查询方式的工作流程(读状态端口、判断准备好否、读/写数据端口),编程方法?

2. 中断

1)基本概念

? 中断、中断类型、中断向量的作用

? CPU的有关引脚——INTR、NMI(区别?满足什么条件CPU才能响应) ? 中断处理的基本过程

请求────→判优────→响应────→处理────→返回 8259:判优、排队、送中断向量(类型)码 CPU:执行中断服务程序,执行完后返回断点 CPU:响应请求、根据向量码获得中断向量 2)8086/8088中断系统

? 几类中断的优先级别:内部中断(。。。)、NMI、INTR、单步中断 ? 中断向量表的位置与结构

? 根据中断类型码(向量码)获得中断向量的方法,即中断向量在表中的位置(会计算) 3)8259

? 主要引脚功能 ? 几个概念:

? 中断触发方式:电平、边沿

? 普通嵌套与特殊嵌套:(仅在多片级联时需考虑此问题)

? 一般屏蔽与特殊屏蔽:为高级别中断服务时是否允许响应低级别的中断。 ? 中断结束方法:自动结束、利用EOI命令结束

? 中断优先级循环:固定优先级、循环优先级(又分为自动循环、特殊(指定)循环) ? 8259的初始化——ICW1-4、OCW1-3的作用,初始化顺序

? 8259的寻址和连接——各寄存器如何寻址,单片连接方法,多片级连方法

? 补充例6-3

第七章 I/O接口技术

1. 8255

? 工作方式:重点是方式0,其它两种方式仅要求了解 ? 寻址——内部3个通道和控制寄存器如何寻址

? 引脚连接:面向系统总线的引脚、面向I/O设备的引脚(PA/PB/PC三组),PC口的使用 ? 初始化——写控制字(各位的含义)、C口的位控字用法

注意:C口分为两个4位组,同一组内只能都是输入或都是输出。C口通常用作控制信号的输出和状态信号的输入。用作输出时,C口既可以用写位控制字的方法输出,也可以用标准

的往C口写数据的方法输出。 2. 8254

? 注意CLK、OUT、GATE和计数初值四者的关系。

? 从6个方面进行总结:启动方法、自动重复否、写控制字后OUT的变化、GATE作用、正在

计数时写入新的初值何时生效、OUT输出波形(与计数初值与时钟频率的关系) ? 工作方式——0~5,重点是方式0,2,3,参考“工作方式一览表”

0:单个负脉冲,宽(N+1)*TCLK,软件启动,不自动重复 1:单个负脉冲,宽N*TCLK,硬件启动,不自动重复

2:连续负脉冲,宽度为TCLK,T=N*TCLK,硬件/软件启动,自动重复

3:连续方波(注意前后半周期的宽度),T=N*TCLK,硬件/软件启动,自动重复

? 寻址和连接——内部3个计数器和控制寄存器如何寻址,与总线如何连接,如何控制GATE ? 初始化——写控制字(各位的含义)、写计数初值(8位/16位),每个计数器分别初始化

3. 8250

? 8250内部有10个寄存器,有7个地址。 ? 对8250的初始化有以下几个步骤: 1)、置线路控制寄存器DLAB=1 2)、写除数寄存器 3)、写线路控制寄存器 4)、写MODEM控制寄存器 5)、写中断允许寄存器 ? 通过查询方式编写通信程序

这时,CPU 可通过读线路状态寄存器(3FDH)查询相应状态位(D0 与 D5),以确定接收寄存器是否就绪(D0=1)与发送保持器是否为空(D5=1)。

通过中断方式进行通信时,首先写MCR (0BH)允许8250中断(总开关),然后写IER(分开关),打开指定的中断源。在中断服务程序中,要查询IIR,以确定是谁提出的中断请求,然后进行相应的处理。

5.8237

? 8237内部有16个寄存器,有16个地址。 ? 8237四种传输模式的数据传送过程;

? 对8250的初始化有以下几个步骤: 1)、8237A停止工作 2)复位命令(总清) 3) 模式字设置

4) 基本地址设置 字节数设置 5) 去屏蔽,启动

注意:当传送数据块的字节数为n 时,写入计数器中的值应为 n-1。

? 补充习题7-5

? 补充例7-4,例7-6

本文来源:https://www.bwwdw.com/article/le7r.html

Top