微机原理知识点

更新时间:2024-03-14 05:25:01 阅读量: 综合文库 文档下载

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

一、基本概念

主机是由计算机中的中央处理器和主存储器组成的系统,其芯片安装在一块印刷电路板上,称为主机板,简称主板。

运算器主要由加法器、累加器、暂存寄存器和控制电路组成,用来对数据进行算术/逻辑运算。

控制器主要由程序计数器(PC)、指令寄存器、指令译码器、微操作控制电路(或微程序控制器)及控制逻辑电路组成,对指令译码,按指令要求控制计算机各组成部件协调工作。

Intel 8086的基本组成分为两大部分:执行部件EU(Execution Unit)和总线接口部件 BIU(Bus Interface Unit)。

执行部件EU由运算器ALU、通用寄存器、状态标志寄存器和执行部件控制电路组成,用于执行指令。

通用寄存器共有8个,即AX、BX、CX、DX、SP、BP、DI和SI,各16位。其中AX、BX、CX和DX可分别分为两个8位寄存器,依次表示为AH、AL、BH、BL、CH、CL、DH和DL,除了作为通用数据寄存器外,还有一些专门的用途。 AX(Accumulator):16位累加器,在8位数据运算时,以AL作为累加器。 BX(Base):基址寄存器。 CX(Count):隐含为计数器。 DX(Data):高位数据寄存器。 SP(Stack Pointer):堆栈指针。 BP(Base Pointer):基址指针,用来指示堆栈区域。 DI(Destination Index):目的变址寄存器,与DS联用。字符串处理中与ES联用,隐含为目的操作数地址。

SI(Source Index):源变址寄存器,与DS联用,字符串处理中与 DS联用,隐含为源操作数地址。

状态标志寄存器如图所示,仅使用其9位。其中“DF,IF,TF”3个是控制状态标志,其它6个是条件状态标志。

D15 D14 D13 D12 D11 D10 OF DF D9 D8 IF D7 D6 D5 D4 D3 D2 D1 D0 PF CF TF SF ZF AF 图状态标志寄存器2.3 状态标志寄存器图1.4

总线接口部件BIU由段寄存器、指令指针寄存器、地址加法器、指令队列和输人输出控制电路组成,用于取指令和数据传送,即访问存储器与数据输入输出。

段寄存器有4个,即CS、DS、ES和SS,作用如下: CS(Code Segment):代码段寄存器,存放当前程序段地址。 DS(Data Segment):数据段寄存器,存放数据段地址;字符串处理时隐含为源段地址寄存器。 SS(Stack Segment):堆栈段寄存器,存放当前堆栈段地址。 ES(Extra Segment):附加段寄存器,存放辅助数据段地址;字符串处理时隐含为目的段地址寄存 器。

8086地址寄存器16位,寻址64 KB。故把1MB存储器空间分为若干个段,每段≤64 KB,称为逻辑段。

使用时,所有段可在整个存储空间浮动,各段可以连续排列,也可以重叠。段内各存储单元相对于段起始地址有一个偏移量,只要偏移量与段起始地址确定了,某存储单元也就唯一地确定了。

程序中使用的存储器地址称为逻辑地址,由16位“段基址”和16位“偏移地址”(段内地址)组成。段基址表示一个段的起始地址的高16位。偏移地址表示段内的一个单元距离段开始位置的距离。访问存储器的实际地址称为物理地址,用20位二进制表示。将两个16位二进制表示的逻辑地址错位相加,可以得到20位的物理地址:

物理地址=段基址×16 + 偏移地址

堆栈是内存中的一块存储区,用来存放专用数据。例如,调用子程序时的入口参数、返回地址等,这些数据都按照“先进后出”的规则进行存取。SS存放堆栈段的段基址,SP存放当前堆栈栈顶的偏移地址。数据进出堆栈要使用专门的堆栈操作指令,SP的值在执行堆栈操作指令时根据规则自动地进行修改。

8086 CPU有最小工作模式和最大工作模式。对存储器和I/O接口的控制信号要由CPU提供的单处理机方式称为最小方式,此时CPU的MN/ 管脚接高电平;对存储器和I/O接口的控制信号要由8288总线控制器提供的多处理机方式称为最大方式,在此方式下可以接入8087或8089,此时MN/ 接地。

在CPU执行程序的过程中,突发事件的发生,迫使CPU暂停正在执行的程序,转向突发事件处理;处理完后又返回原来被中断的程序,继续执行。这一过程称为中断。

被中断的位置(下一条指令的地址)称为断点。

引起中断的原因或触发中断请求的事件称为中断源;用以处理突发事件的程序称为中断处理或中断服务程序;从中断服务程序返回到原来被中断的程序的过程称为中断返回。

中断向量与中断向量表

在8086中,256个中断服务程序入口地址顺序存放,构成中断向量表。序号(0~255)称为中断类型码。某中断源请求时,CPU获取类型码,即可得到中断服务程序入口地址。

INTR用于输入可屏蔽中断请求信号,电平触发,高电平有效。中断允许标志IF= 1时才能响应INTR上的中断请求。NMI用于输入不可屏蔽中断请求信号,上升沿触发,不受中断允许标志的限制。CPU一旦测试到NMI请求有效,当前指令执行完后自动转去执行类型2的中断服务程序。NMI引脚用于连接CPU外部的紧急中断请求,例如内存校验错,电源掉电报警等。INTR引脚用于连接一般外部设备的中断请求。

存取时间是从启动一次存储器读/写操作到完成该操作所用的时间。具体来说,就是从CPU发读/写命令开始,到数据取出或将数据写入指定单元所用的时间。

存取周期是指从CPU发送地址开始到读/写操作结束所用的时间,略大于存取时间。

存储芯片的信号线一般包括地址线、数据线、一个片选信号引脚和一个读/写控制引脚,以及电源线。

13

比如一个SRAM芯片的容量为8K×8,根据存储芯片地址线数量计算公式,k=log2(1024*8)= log2(2)=13,即总计有13根地址线。另有8根数据线、2根电源线、1根片选线和2根读写线。所以该芯片至少有25(=13+8+1+1+2)根引脚。

所谓指令,就是指示计算机进行某一工作的命令。指令是二进制数的形式,一般包含操作码字段和地址码字段。

一台计算机全部指令的集合称为指令系统。操作码域说明指令的类型与功能,操作数域也称为地址域说明数据在存储器中的地址及操作结果存放的地址。

在指令中,操作数或操作数的地址可用多种方式来表示,而通过某种规则计算出最终的操作数地址的过程,统称为寻址方式。

伪指令语句是一种说明性的语句,用来对汇编过程进行控制,比如对数据列表、存储空间分配、程序起始地址及段定义等,汇编时不生成目标代码。

宏指令是将程序中多次使用的程序段定义为一条指令,即宏指令。在对宏指令汇编时,以原程序代码取代宏指令。

I/O接口泛指主机连接外部设备或其它计算机所用到的电路,这些电路一般制作成专门的电路板,可插在主机板上,故称接口卡,亦称适配器。

在I/O接口电路中,每一个可由CPU直接访问寄存器统称为端口,可对其(指的是端口)分配地址,也称为编址,以便CPU访问。编址的方法有两种,即统一编址和独立编址。

统一编址是把外部设备的端口地址与存储器地址统一编排。也就是说,在主存空间中划出一部分区域用作I/O地址,使输入输出变成对某个地址单元的读/写操作,CPU可使用访问主存的指令访问外部设备,而不需要专门的I/O指令。但是,I/O端口占用了主存地址空间,使主存减少。

独立编址是对I/O端口和主存分别编址,两者的地址都是从0开始。CPU访问时,通过专门的选通信号确定地址总线上传送的是I/O地址还是主存地址。采用独立编址,I/O地址不占用主存空间,但是需要专I/O指令。目前的Pentium微处理器采用的就是这种独立编址方式。

程序查询方式是通过程序控制主机和外部设备之间的数据传送。输入输出操作时,首先由CPU向外部设备发启动命令,然后读取外部设备状态标志,进行判断,在外部设备准备就绪后传送数据。

总线是计算机各组成部件之间传送数据信息的公共通路,可实现CPU与主存、外设之间的数据传送与通信。

在微机系统中,总线分片内总线、片级总线和系统总线。其中片内总线用以连接CPU内部的各个部件,比如ALU、通用寄存器、内部Cache等。片级总线用以连接CPU、存储器及I/O接口等电路,构成所谓的主机板。系统总线用来连接外部设备。这里主要介绍系统总线的概念、类型、性能与连接使用。

总线标准是国际正式公布或推荐的互连各个模块的标准,它是把各种不同模块组成计算机系统(或计算机应用系统)时必须遵守的规范。

ISA(Industrial Standard Architecture,工业标准结构总线)共有98根信号线,数据线宽度为16位,地址线宽度为24位,总线时钟为8MHz,中断源为边沿触发

EISA总线:扩展工业标准总线,一种支持多处理器的高性能32位标准总线。

PCI(Peripheral Component Interconnect,外设组件互连标准)是一种由英特尔(Intel)公司1991年推出的用于定义局部总线的标准。此标准允许在计 PCI算机内安装多达10个遵从PCI标准的扩展卡。

接口电路与外部设备之间传送的信号有三种:

数据信号:对于输入设备,数据信号从外设通过接口送往总线,对于输出设备,数据信号从总线通过接口发往外部设备。

状态信号:状态信号表明外部设备当前的工作状态,用来协调CPU与外部设备之间的操作。状态信号总是从外部设备通过接口发往总线。

控制信号 :控制信号是CPU向外设发出的命令,它指定设备的工作方式,启动或停止设备。控制

信号从CPU通过接口发往外部设备。

“即插即用”是指为微机系统提供这样一种功能:只要将扩展卡插入微机的扩展槽时,微机系统就能自动进行扩展卡的配置工作,保证系统资源空间的合理分配,以避免发生系统资源占用的冲突。这一切都是开机后由系统自动进行的,而无需操作人员的干预。

把主板上众多的接口芯片和支持芯片按不同功能分别集成到一块集成芯片之中,这样用少量几片VLSI芯片就可完成主板上主要的接口和支持功能,这几个VLSI芯片的组合称为“芯片组”。

AGP为加速图形端口,是一种新型视频接口技术标准,定义了一种超高速的连通结构,把三维图形控制器从PCI总线上卸下来,用专用的点对点通道——AGP把图形控制器直接连在系统芯片组(主存/PCI控制芯片)上,三维图形芯片可以将主存作为帧缓冲器,实现高速存取。当显存容量不够时,可以将主存当作显存来用。

8253的几种工作方式为:(1)方式0是计数结束停止计数方式; (2)方式1是可重复触发的单稳态工作方式; (3)方式2是分频器工作方式; (4)方式3是方波输出方式; (5)方式4---软件触发的选通信号发生器; (6)方式5---硬件触发的选通信号发生器;

外设向CPU申请中断,但CPU不响应,其原因可能有: (1)该中断请求持续时间太短; (2)CPU未能在当前指令周期的最后一个时钟周期采样到中断请求信号; (3)CPU处于关中断状态; (4)该中断级被屏蔽。

并行通信和串行通信的优缺点:从传送距离上看,串行通信适合于远距离传送,而并行通信只适用于较近距离的传送;从速度上看,串行通信的费用要比并行通信的费用低得多。

二、汇编程序

1、某输出设备数据端口、状态端口地址分别为220H, 221H。状态端口D0=1表示输出完成。将数据段中以STRING为首地址的7个字符(用ASCII代码存储)发送到该外部设备。用8086汇编语言编写完成上述功能的I/O程序。

DATA SEGMENT

STRING DB “ABCDEFG” DATA ENDS ;

CODE SEGMENT

ASSUME CS: CODE, DS: DATA START:

MOV AX, DATA MOV DS, AX

LEA BX, STRING MOV CX, 7

ONE: MOV DX, 221H ; DX置为状态端口地址 IN AL, DX

TEST AL, 00000001B ;测试输出完成位

JZ ONE ;未完成,转ONE继续读取状态 OUTPUT: MOV AL,[BX] MOV DX, 220H

OUT DX, AL ;输出代码 INC BX ;修改指针

LOOP ONE ;7个数据尚未输出完成,转ONE继续

2、在BUF1和BUF2两个数据区中,各定义有6个带符号字数据,试编制一完整的源程序,求它们对应项之和,并将和数存入以SUM为首址的数据区中。

DATA SEGMENT

BUF1 DW -56,24,54,-1,89,-8

BUF2 DW 45,-23,124,345,-265,65 SUM DW 6 DUP(0) DATA ENDS

CODE SEGMENT

ASSUME CS:CODE,DS:DATA

START:

MOV AX,DATA MOV DS,AX MOV CX,6

LEA SI,BUF1 LEA DI,BUF2 LEA BX,SUM

LOP1: MOV AX,[SI]

ADD AX,[DI] MOV [BX],AX INC SI INC DI INC BX LOOP LOP1

MOV AH,4CH INT 21H

CODE ENDS END START

3、用8255A的A端口接8位二进制输入,B端口和C端口各接8只发光二极管显示二进制数。编写一段程序,把A端口读入的数据送B端口显示,而C端口的各位则采用置0/置1的方式显示A端口的值。(设端口地址为——A口:200H,B口:201H,C口:202H,控制口:203H。并且下图给出相关参考信息)

DONE: MOV AX, 4C00H INT 21H CODE ENDS

END START

;返回OS

8255A方式选择控制字格式

CODE SEGMENT

ASSUME CS :CODE

START : MOV AL, 90H

;8255A初始化:

MOV DX, 203H ;8255A各组方式0,A口输入 OUT DX, AL ; B、C口输出 MOV DX, 200H IN AL, DX ;读A口输入值 MOV DX, 201H OUT DX, AL ;送B口输出 MOV AH, AL ;A口输入值转存在AH中 MOV DX, 203H MOV CX, 08 ;CX置循环次数初值 MOV AL, 00H ;C端口置0/置1控制字初值 LPA: AND AL, 0FEH ;清除最低位 SHR AH, 1 ;A端口一位转入CF ADC AL, 0 ;A端口一位从CF转入命令字 OUT DX, AL ;A端口一位从送往C端口对应位 ADD AL, 02H ;形成下一个命令字 LOOP LPA ;处理C端口下一位 MOV AH,4CH

INT 21H

CODE ENDS END START

4、某微机系统中8253的端口地址为40H~43H,要求计数器1工作在方式0,计数初值为0DEH,按二进制计数;计数器2工作在方式2,计数初值为1000D,按BCD码计数。试写出初始化程序段。

CODE SEGMENT

ASSUME CS :CODE

MOV AL,10H ;写通道1控制字 OUT 43H,AL MOV AL,0DEH ;写通道1计数初值 OUT 41H,AL MOV AL,65H ;写通道2控制字 OUT 43H,AL MOV AL,10H ;写通道2计数初值 OUT 42H,AL

MOV AH,4CH

INT 21H

CODE ENDS END START

5、某输入设备接口数据端口、状态端口、控制端口地址分别为70H, 71H, 72H。状态端口D5=1表示输入完成,控制端口D7=1表示启动设备输入(输入完成后由设备清除该位)。从该设备输入100个字节数据,存入以BUFFER为首地址的缓冲区。如果启动该设备1秒后仍未完成一次输入,则视为超时错,显示出错信息后返回。用8086汇编语言完成上述功能的I/O程序。

汇编语言程序:

DATA SEGMENT

BUFFER DB 100 DUP(?)

ERROR DB 13, 10, “OVER TIME !”, 13, 10, “$” DATA ENDS

6、某8086系统用3片8259A级联构成中断系统,主片中断类型号从10H开始。从片的中断申请连主片的IR4和IR6引脚,它们的中断类型号分别从20H、30H开始。主、从片采用电平触发,嵌套方式,普通中断结束方式。请编写它们的初始化程序。(假设主片端口地址为10H,12H。从片的端口地址分别为18H, 1AH和 1CH, 1EH)

MOV AX, DATA MOV DS, AX MOV CX, 100

LEA BX, BUFFER

XOR DX, DX ;DX用作响应计时器,初值0 MOV AL, 80H

OUT 72H, AL ;启动输入 W: IN AL, 71H

INC DX ;纪录延迟时间

TEST AL, 00100000B ;测试完成位

JNZ READ ;输入完成,转READ读取数据 CMP DX, 50000 ;假设循环50000次时间为1秒 JB W ;未超时,继续测试

JMP OVERTIME ;超过1秒,报告出错 READ: IN AL, 70H ;读入数据

MOV [BX], AL ;数据存入缓冲区 INC BX ;修改指针

LOOP ONE ;100个数据尚未输入完成,转ONE继续 JMP DONE ;100个数据输入完成,转DONE结束程序 OVERTIME: LEA DX, ERROR MOV AH, 9

INT 21H ;响应超时,显示出错信息 DONE: MOV AX, 4C00H

INT 21H ;返回OS CODE ENDS

END START

;

CODE START: ONE:

SEGMENT

ASSUME CS: CODE, DS: DATA

图1 ICW1格式

图2 ICW2格式

图3 ICW3格式

图4 ICW4格式

MOV AL, 00011001B ;主片ICW1 OUT 10H, AL ;电平触发,级连方式 MOV AL, 10H ;主片ICW2 OUT 12H, AL ;主片中断类型 MOV AL, 01010000B ;主片ICW3 OUT 12H, AL ;IR4,IR6连有从片 MOV AL, 00010001B ;主片ICW4 OUT 12H, AL ;特殊全嵌套,非自动中断结束

MOV AL, 00011001B ;从片ICW1 OUT 18H, AL ;电平触发,级连方式 MOV AL, 20H ;从片ICW2 OUT 1AH, AL ;从片中断类型 MOV AL, 00000100B ;从片ICW3

OUT 1AH, AL ;本片连接在主片IR4引脚上 MOV AL, 00000001B ;从片ICW4

OUT 1AH, AL ;非特殊全嵌套,非自动中断结束

MOV AL, 00011001B ;从片ICW1

OUT 1CH, AL ;电平触发,级连方式 MOV AL, 30H ;从片ICW2 OUT 1EH, AL ;从片中断类型 MOV AL, 00000110B ;从片ICW3

OUT 1EH, AL ;本片连接在主片IR6引脚上 MOV AL, 00000001B ;从片ICW4

OUT 1EH, AL ;非特殊全嵌套,非自动中断结束

7. 画出如下数据段的数据在内存中的存放形式示意图(任选一个主存地址作为起始地址)。

DATA SEGMENT

A DW 2,3

B DB ‘ABC’ C DB 4 DUP(0) D = $-C

E DD 12345678H

DATA ENDS

解:设数据段从200H处开始定义,图示如下: A B C 200 201 202 203 204 2 0 3 0 205 206 207-20A 20B 78H 20C 56H ‘A’ ‘B’ ‘C’ 0 E 20D 34H 20E 12H 8. 从键盘输入一字符,若为字符$,则1→CX,否则0→CX。编写汇编语言程序,要有完整的格式

DATA SEGMENT

MSG DB ‘Please input a letter:’,0AH,0DH,’$’

DATA ENDS

CODE SEGMENT

ASSUME CS:CODE,DS:DATA START: MOV AX,DATA

MOV DS,AX

MOV DX,OFFSET MSG ;显示退出提示

MOV AH,09H INT 21H MOV AH,01H INT 21H

MOV AH,AL CMP AH,’$’ JZ NEXT

MOV 1,CX JMP END1

NEXT: MOV 0,CX END1: MOV AH,4CH INT 21H CODE ENDS END START

9. 编制一个完整的汇编程序,定义三个WORD类型的数据A、B和C,初始化任意。如果其中一个为1,将另外两个清零,否则求它们的和,存入WORD类型的D单元中。

DATA SEGMENT A DW ? B DW ? C DW ? D DW ?

DATA ENDS

CODE SEGMENT

ASSUME CS:CODE,DS:DATA START: MOV AX,DATA

MOV DS,AX MOV AX,A

MOV BX,B MOV CX,C CMP AX,1 JZ NEXT CMP BX,1

JZ NEXT CMP CX,1 JZ NEXT

ADD AX,BX ADD AX,CX MOV D,AX JMP END1

NEXT: MOV A,0

MOV B,0 MOV C,0

END1: MOV AH,4CH INT 21H

CODE ENDS

END START

10. 按照要求完成以下内容:(1)编写对8253计数器1初始化程序段(仅定时50ms)。

(2)编写对8255的初始化程序以及1秒到后,从PA口读入一个字节开关数并送PB口显示的程序段。

8253控制方式字

8255控制方式字

解:

(1)8253初始化程序段如下:

MOV AL, 01110110B;计数器1方式字 OUT 43H, AL

MOV AL, 50H ;计数器1定时50ms,计数值为50000 OUT 41H, AL MOV AL, OC3H OUT 41H, AL

(2)8255的初始化及从PA口读入一个开关字节数送PB口显示的程序段如下:

MOV AL, 10010000B ;8255方式字,PA口方式0输入,PB口方式0输出

OUT 63H, AL IN AL, 60H OUT 61 H, AL

;从PA口输入 ;从PB输用

三、数据寻址方式

1)立即寻址是指指令操作数域直接给出的就是参加运算或进行某种操作的数据,又称即时数,有8位、16位等形式。 2)寄存器寻址是指令操作数域给出的是存放操作数的寄存器。 3)直接寻址是指令操作数域给出的是存放操作数地址的偏移量。 4)寄存器间接寻址是指令操作数域给出存放操作数地址偏移量的寄存器。 5)寄存器相对寻址是指令操作数域给出存放基地址

的基址寄存器和一个偏移

量,基地址与偏移量相加,作为操作数地址的偏移地址,也就是有效地址EA。段地址左移4位,与有效地址相加,生成20位的物理地址。 6)基址加变址寻址是指令操作数域给出一个存放基地址的基址寄存器和一个存放变址基值的变址寄存器,两寄存器中的数据相

加,作为操作数的偏移地

址,即有效地址EA。 7)相对基址加变址寻址是指令操作数域给出的是一个存放基地址的基址寄存器、一个存放变址基值的变址寄存器和一个偏移量,两寄存器中的数据及偏移量相加,作为操作数的偏移地址,也就是有效地址EA。

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

Top