微机原理基本概念复习

微机原理基本概念复习
微机原理基本概念复习

微机原理基本概念复习 Prepared on 22 November 2020

1、字节,字概念,1字节=8位,

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

3、地址空间概念:

16根地址线—64K,

20根地址线—1M空间

4、进制间的转换:将十进制数转换为二级制数

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将访问I/O端口,这时地址总线A15 ~ A0提供16位I/O口地址

15 多字节数据存放方式:

图中0002H“字”单元的内容为:

[0002H] = 1234H

0002H号“双字”单元的内容为:

[0002H] = H

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

例设代码段寄存器CS的内容为1000H,指令指针寄存器IP

的内容为2500H,即CS=1000H,IP=2500H,则访问代码段

存储单元的物理地址为:

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 。将中32位数值左移一位

shl ax,1

rcl dx,1

控制转移指令

JMP JZ JNZ

例判断是否为字母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-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

关于存储器:

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

若用一个容量为m K×n位的存储芯片构成容量为M K×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 …

中断概念:

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

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

中断向量表:中断服务程序的入口地址(首地址)

逻辑地址含有段地址CS 和偏移地址IP (共32位),其中低字是偏移地址、高字是段地址 8086微处理器从物理地址00000H 开始,依次安排各个中断向量,向量号也从0开始 256个中断占用1KB 区域,就形成中断向量表

8259:

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

查询式

输出的

接口电

路 接至D7

中断请求按优先级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:

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

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

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

MOV AL,B

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

相关主题
相关文档
最新文档