您的当前位置:首页正文

微机原理基本概念复习

2020-11-07 来源:钮旅网
1、 字节,字概念,1字节=8位,

2、 字长概念:传微处理器一次送二进制数据的位数(总线宽度)。 3、 地址空间概念:

16根地址线—64K, 20根地址线—1M空间

4、 进制间的转换:将十进制数25.5转换为二级制数 5、 数值数据的表示:

有符号数:补码,n位补码的围 无符号数: FFFFH=65535

6、 BCD码: 789的压缩BCD码789H 7、 ASCII码:789的ASC码373839H 8、 求补运算概念

9、 8086CPU从功能上来说分成两大部分:总线接口单元BIU(Bus Interface Unit)和执行

单元EU(Execution Unit)

总线接口部件由下列4部分组成:

① 4个段地址寄存器(CS、DS、 ES、SS)② 16位的指令指针寄存器 IP(Instruction Pointer) ③ 20位的地址加法器

10 辑段概念——

8086 CPU 的部结构是16位的,即所有的寄存器都是16位的,而外部寻址空间为1M,需要20位地址线。 为了能寻址1M空间。8086把1M字节空间划分成若干个逻辑段。

11 逻辑地址概念——2000H:5F62H,则其对应的物理地址:25F62H

12堆栈指针:SP与段寄存器SS一起确定在堆栈操作时,堆栈在存中的位置。SS和SP的初始值决定了堆栈区的大小

13 状态标志的意义:即SF、ZF、PF、CF、AF和OF 14 8086引脚: MN/MX、

AD15 ~ AD0地址/数据分时复用引脚

NMI(Non-Maskable Interrupt)不可屏蔽中断请求,输入、上升沿有效、

INTR(Interrupt Request)可屏蔽中断请求,输入、高电平有效,有效时,表示请求设备向CPU申请可屏蔽中断,该中断请否响应受控于IF(中断允许标志)、可以被屏蔽掉 INTA——

RESET(复位)复位请求,输入、高电平有效,复位后CS=FFFFH、IP=0000H, 所以自启动程序入口在物理地址FFFF0H

INTA(Interrupt Acknowledge)可屏蔽中断响应,输出、低电平有效,有效时,表示来自INTR引脚的中断请求已被CPU响应,CPU进入中断响应周期。

ALE(Address Latch Enable)地址锁存允许,输出、三态、高电平有效,脚高有效时,表示复用引脚:AD15 ~ AD0和A19/S6 ~ A16/S3正在传送地址信息,由于地址信息在这些复用引脚上出现的时间很短暂,所以系统可以利用ALE引脚将地址锁存起来

M/IO(Input and Output/Memory) I/O或存储器访问,输出、三态,该引脚输出高电

平时,表示CPU将访问存储器,这时地址总线A19 ~ A0提供20位存储器地址,该

引脚输出低电平时,表示CPU将访问时地址总线A15 ~ A0提供16位I/O

15 多字节数据存放方式:

图中0002H“字”单元的容为: [0002H] = 1234H

0002H号“双字”单元的容为: [0002H] = 78561234H

16 物理地址和逻辑地址的转换

例2.1 设代码段寄存器CS的容为1000H,指令指针寄存器IP 的容为2500H,即CS=1000H,IP=2500H,则访问代码段 存储单元的物理地址为:

I/O端口,这口地址

17 指令周期:

是指一条指令经取指、译码、读写操作数到执行完成的过程。若干总线周期组成一个指令周期 18 总线周期

是指CPU通过总线操作与外部(存储器或I/O端口)进行一次数据交换的过程 8086的基本总线周期需要4个时钟周期,4个时钟周期编号为T1、T2、T3和T4 总线周期中的时钟周期也被称作“T状态” ,时钟周期的时间长度就是时钟频率的倒数 当需要延长总线周期时插入等待状态Tw,CPU进行部操作,没有对外操作时,其引脚就处于空闲状态Ti

8086如果工作频率1MHZ,1个基本总线周期需要多长时间。 19 指令代码由操作码和操作数两部分组成 寻址方式:

立即数寻址MOV AX,14 寄存器寻址:MOV DS,AX

直接寻址:MOV AX, [2000H],MOV BX, BUFFER 寄存器间接寻址MOV AX, [BX] 寄存器相对寻址MOV AX, [SI+06H] 基址变址寻址方式MOV AX, [BX+SI] 相对基址变址MOV AX, [BX+DI+6] 隐含寻址

MUL BL;(AL)×(BL)→AX隐含了被乘数AL和乘积AX 20 存储器寻址方式中的变量 WVAR DW 1234H

;定义16位变量WVAR,具有初值1234H 21注意点

1. 区别立即数寻址和直接寻址

MOV AX,126 MOV AX,[126]

2.区别寄存器寻址和寄存器间接寻址 MOV AX,BX MOV AX,[BX]

3.双操作数指令中,不能同为存储器操作数。 4.CS不能为目的寄存器。

 最基本的传送指令(MOV)  堆栈指令(PUSH,POP)  数据交换指令(XCHG)  换码指令XLAT 非法指令的主要现象:

两个操作数的类型不一致

无法确定是字节量还是字量操作

两个操作数都是存储器 MOV[2000H],[3000H] 立即数直接送段寄存器 MOV DS, 3000H 目标操作数用立即数方式 MOV 2000H, AL 两个操作数都是段寄存器MOV DS, ES

在绝大多数双操作数指令中,目的操作数和源操作数必须具有一致的数据类型,或者同为字量,或者同为字节量,否则为非法指令

两个操作数类型不一致 MOV AL, 050AH ;非法指令,修正: ;mov ax,050ah MOV SI, DL ;非法指令,修正: ;mov dh,0 ;mov si,dx

➢ 当无法通过任一个操作数确定是操作类型时,需要利用汇编语言的操作符显式指明 MOV [BX+SI], 255 ;非法指令,修正: ;mov byte ptr [bx+si],255 ;byte ptr 说明是字节操作 ;mov word ptr [bx+si],255 ;word ptr 说明是字操作

➢ 8086/8088指令系统除串操作指令外,不允许两个操作数都是存储单元(存储器操

作数)

MOV buf2, buf1 ;非法指令,修正: ;假设buf2和buf1是两个字变量 ;mov ax,buf1 ;mov buf2,ax ;假设buf2和buf1是两个字节变量 ;mov al,buf1 ;mov buf2,al

➢ 8086指令系统中,能直接对段寄存器操作的指令只有MOV等个别传送指令,并且

不灵活

MOV DS, ES ;非法指令,修正: ;mov ax,es ;mov ds,ax MOV DS, 100H ;非法指令,修正: ;mov ax,100h ;mov ds,ax MOV CS, [SI] ;非法指令 ;指令存在,但不能执行

例3-13 把BLOCK1地址开始的10个字节数据传送到BLOCK2地址开始的10个字节单元处。 MOV CX,10 MOV SI,OFFSET BLOCK1 MOV DI,OFFSET BLOCK2 NEXT: MOV AL,[SI] MOV [DI],AL INC SI INC DI DEC CX JNZ NEXT HLT

进栈指令先使堆栈指针SP减2,然后把一个字操作数存入堆栈顶部

用堆栈交换AX与CX的值。

push ax

push cx pop ax pop cx

交换指令XCHG(

xchg al,byte ptr wvar+1 ;ax=5599h,wvar=6611h ;“byte ptr wvar+1”强制为字节量,只取高字节与AL类型交换,否则数据类型不匹配

例3-18 存的数据段有一0~9的平方表,首地址为TABLE,如图所示,用换码指令实现求数字4的平方。

MOV BX,OFFSET TABLE MOV AL,4 XLAT

加法指令 2、减法指令 3、乘法指令 4、除法指令

加法指令:ADD, ADC和INC

减法指令:SUB, SBB, DEC, NEG和CMP

他们分别执行字或字节的加法和减法运算,除INC和DEC不影响CF标志外,其他按定义影响全部状态标志位

[例3-32] 在数据段从BLOCK开始的存储单元中存放了两个8位无符号数,试比较它们的大小,将较大者传送到MAX单元。 LEA BX,BLOCK MOV AL,[BX] INC BX CMP AL,[BX] JNC DONE MOV AL,[BX] DONE:MOV MAX,AL HLT

逻辑指令AND、OR、XOR和TEST

屏蔽AL寄存器的低四位。

MOV AL,0FF H 1 1 1 1 1 1 1 1 AND AL ,0F0 H ∧ 1 1 1 1 0 0 0 0

1 1 1 1 0 0 0 0

例3:使某数的第4、5位置1。

MOV AL,03H 0 0 0 0 0 0 1 1 OR AL,30H ∨ 0 0 1 1 0 0 0 0

0 0 1 1 0 0 1 1

[例3-47] 判断DATA单元的数据是否为0。

MOV AX,DATA OR AX,AX JZ ZERO ……

ZERO: …….

例4:使某数的D1、D0位取反,其它位不变。

MOV AL,11H 0 0 0 1 0 0 0 1 XOR AL,03H ⊕ 0 0 0 0 0 0 1 1 = 0 0 0 1 0 0 1 0

AND与TEST指令的关系, 同SUB与CMP指令的关系一样

例7:检测AL中的最低位是否为1,若为1则转移。

MOV AL,data 0 1 0 0 0 0 0 1 TEST AL,01H ∧ 0 0 0 0 0 0 0 1 JNZ Next 0 0 0 0 0 0 0 1

Next: MOV BL,0

TEST 通常用于检测一些条件是否满足,但又不希望改变原来操作数的情况,该指令后通常带有条件转移指令。

移位指令:移位指令的第一个操作数是指定的被移位的操作数,可以是寄存器或存储单元;后一个操作数表示移位位数:

该操作数为1,表示移动一位

该操作数为CL,CL寄存器值表示移位位数 (移位位数大于1只能CL表示)

SAL SHL SAR SHR

循环移位指令类似移位指令,但要将从一端移出的位返回到另一端形成循环。分为: ROL reg/mem,1/CL ;不带进位循环左移 ROR reg/mem,1/CL ;不带进位循环右移 RCL reg/mem,1/CL ;带进位循环左移 RCR reg/mem,1/CL ;带进位循环右移

循环移位指令按指令功能设置进位标志CF,但不影响SF、ZF、PF、AF标志,OF只当CNT=1时有效,移位后当最高有效位发生

变化时(如1变0) OF=1, 否则 OF=0 。

将DX.AX中32位数值左移一位 shl ax,1 rcl dx,1

控制转移指令 JMP JZ JNZ

例3.23 判断是否为字母Y

寄存器AL中是字母Y(含大小写),则令AH=0,否则令AH=-1 cmp al,’y’ ;比较AL与小写字母y je next ;相等,转移 cmp al,’Y’ ;不相等, ;继续比较AL与大写字母Y je next ;相等,转移 mov ah,-1 ;不相等,令AH=-1 jmp done ;无条件转移指令 next: mov ah,0 ;相等的处理:令AH=0 done: ……

[例3-68 ] 在存中有一个首地址为 ARRAY 的数据区存放了200 个 8 位 有符号数,统计其中正数、负数、0 的个 数,并分别将统计结果存入PLUS、MINUS和ZERO单元中。 XOR AL, AL MOV PLUS,AL MOV MINUS,AL MOV ZERO,AL LEA SI, ARRAY MOV CX, 200 CLD LLAB:LODSB

OR AL,AL JS MLAB JZ ZLAB

INC PLUS

JMP NEXT MLAB: INC MINUS JMP NEXT ZLAB: INC ZERO NEXT: DEC CX JNZ LLAB HLT

LOOP label ;循环指令 IRET

伪指令:DB ,DW,byte ptr

例2:操作数可以是字符串,例如 STR DB ‘HELLO’ 汇编后的情况如图:

某数据段定义为

DATA SEGMENT S1 DB 0,1,2,3,4,5 S2 DB ‘12345’ COUNT EQU $-S1 S3 DB COUNT DUP(2) DATA ENDS

画出该数据段在存储器中的存储形式

DOS系统功能调用介绍

(1) 从键盘输入一个字符(功能号=1) MOV AH,1 INT 21H

(1) 在显示器上显示一个字符(功能号=2) MOV AH, 2

MOV DL, <要显示的字符> INT 21H

例:在显示器上显示一个字符‘A’ MOV AH, 2

MOV DL, ’A’ ;或MOV DL, 41H INT 21H

(2)显示字符串(功能号=9) MOV AH, 9

LEA DX, <字符串> INT 21H

注意:被显示的字符串必须以’$’结束。

4.6.2 分支程序设计

4-31 求符号字节数X的绝对值,X用补码表示 DATA SEGMENT X DB -50 DATA ENDS

CODE SEGMENT ASSUME CS:CODE,DS:DATA

START: MOV AX,DATA MOV DS,AX MOV AL,X;取X TEST AL,80H;测试符号位 JZ DONE;若大于0,转done NEG AL;若小于0,求补得到|x| MOV X,AL;保存 DONE: MOV AH,4CH INT 21H CODE ENDS END START

关于存储器:

扩展存储器所需存储芯片的数量计算:

若用一个容量为mK×n位的存储芯片构成容量为MK×N位(假设M>m,N>n,即需字位同时扩展)的存储器,则这个存储器所需要的存储芯片数为 (M/m)×(N/n)。

RAM芯片的容量:

为220×16b,问(1)该芯片地址线多少,(2)数据线多少

SRAM与CPU连接:

CPU数据总线不相同,连接不一样。

8086CPU的16数据总线,其高8位数据线D15-D8接存储器的奇地址体 低8位数据线D7-D0接存储器的偶地址体,

根据BHE(选择奇地址库)和A0(选择偶地址库)的不同状态组合决定对存储器做字操作还是字节操作

存储器与CPU地址总线的连接:

低位地址线直接和存储芯片的地址信号连接作为片地址译码 高位地址线主要用来产生选片信号(称为片间地址译码),以决定每个存储芯片在整个存储单元中的地址围,避免各芯片地址空间的重叠。

片选译码的几种方法:

① 全译码: 所有的地址线全用上,无地址重叠。 ② 部分译码:部分高位地址没有用,存在地址重叠。

(3) 全译码

,每个存储单元的地址都是唯一的,不存在地址重复,但译码电路可能比较复杂、连线也较多

I/O端口与存储器统一编址概念 I/O端口独立编址概念 8086采用独立编址

I/O端口地址译码的一般原则:

把CPU用于I/O端口寻址的地址线分为高位地址线和低位地址线两部分: 例6-1,某8088最小系统,I/O接口译码电路如图

A0-A9选择端口

CPU和外设间的数据传送方式

 程序控制方式  中断控制方式  DMA方式

程序控制方式

 无条件传送方式  查询传送方式

查询传送方式

 CPU从接口中读取状态字  CPU检测状态字  传送数据

数据端口

状态端口

a) 查询式输入的算法:

(1)用指令检测 Ready:

IN AL , 三态缓冲器(或状态寄存器)的地址 (2)若 Ready = 0,返回(1) (3)若 Ready = 1,发出

IN AL , 输入接口数据寄存器的端口地址。

 查询输入: MOV BX,OFFSET STORE IN_TEST: IN AL,状态口地址 TEST AL,80H JZ IN_TEST IN AL,数据口地址 MOV [BX],AL INC BX …

查询式输出的接口电路

b) 查询式输出: MOV BX,OFFSET STORE OUT_TEST: IN AL, 100;状态端口 TEST AL, 80H JNZ OUT_TEST MOV AL,[BX] OUT 101,AL;数据端口 INC BX …

中断概念:

接至D7

中断向量表是存放中断向量的一个特定的存区域。

中断向量,就是中断服务子程序的入口地址。

中断向量表:中断服务程序的入口地址(首地址) 逻辑地址含有段地址CS和偏移地址IP(共32位),其中低字是偏移地址、高字是段地址

8086微处理器从物理地址00000H开始,依次安排各个中断向量,向量号也从0开始

256个中断占用1KB区域,就形成中断向量表

8259:

完全嵌套方式(默认工作方式):

中断请求按优先级IR0~IR7处理,IR0优先级最高,IR7最低。当有中断发生时,如果有更高级的中断请求到来,会发生中断嵌套。

中断结束命令

(1)自动中断结束模式(AEOI) 自动结束方式

一进入中断就将ISR中对应的状态标志清除,因为ISR是优先仲裁的依据,所以这种方式只能用在不会出现嵌套的简单场合。 (2)非自动中断结束方式(EOI) ② 一般结束方式:

当发出中断结束命令后,用结束指令把当前中断服务寄存器(ISR)中优先级最高的(正

在处理的)IS位清除。(最常用)

8259初始化:

(2)ICW2(中断向量命令字)

向8259A写入ICW1命令字后,应立即向8259A送ICW2。 ICW2用于确定8259A每根IR线上的中断向量号;(其实确定的是IR0线上的中断向量 设置中断向量号

 命令字中,T7~T3为中断向量号的高5位,低3位设为0

 根据此命令, 8259A自动确定低3位:IR0为000、IR1为001、……、IR7为111 1)OCW1(中断屏蔽命令字) 屏蔽命令字

容写入中断屏蔽寄存器IMR

Di=Mi对应IRi,为1禁止IRi中断; 为0允许IRi中断。各位互相独立。

8255:

工作方式控制字:1D6D5D4D3D2D1D0C口低半部分传输方向A口方式选择00- 方式001- 方式11X- 方式2A口传C口高4位输方向传输方向0 - 输出1- 输入B口传输方向B口工作方式0- 方式01- 方式1

例:若要求8255A#1的各个端口处在如下的工作方式: 端口A方式0输入 ,端口B方式1输出,端口C(上半部)PC7~PC4输出, 端口C(下半部)PC3~PC0输入

解:方式控制字=10010101B或95H,

初始化程序:CWR EQU 0FBH;8255A#1控制字寄存器端口地址 MOV AL,10010101B OUT CWR,AL

例8-2 使端口C的PC7置1的控制字为00001111B,PC3置0控制字00000110。 8255控制口地址00EEH: 相应的汇编程序为: MOV AL,0FH MOV DX,00EEH OUT DX,AL MOV AL,06H OUT DX,AL

注意使端口C按位置位或复位的控制字也是写入至控制字寄存器。

例题8-3

8255 工作于方式0,以查询的方式输出,与打印机连接如图所示

 程序:

PP:MOV AL,81H;控制字A口输出,c高4位输出,低4位输入,方式0 OUT 0D6H,AL MOV AL,0DH; 00001101B OUT 0D6H,AL;PC6=1,发出STB高电平 MOV CX,100 LEA DI ,DATAPTR;DI指向首地址 LPST: IN AL,0D4H;读C口 AND AL,04H;查busy信号 JNZ LPST;如忙,等待 MOV AL,[DI];不忙,取出一个字节数据 OUT 0D0H,AL;;A口输出并锁存字符 MOV AL,0CH ;0000 1100B OUT 0D6H,AL;STB=0 INC AL;AL=0000 1101 OUT 0D6H,AL;STB=1 INC DI LOOP LPST …

因篇幅问题不能全部显示,请点此查看更多更全内容