微机重点.docx
- 文档编号:23875469
- 上传时间:2023-05-21
- 格式:DOCX
- 页数:21
- 大小:304.63KB
微机重点.docx
《微机重点.docx》由会员分享,可在线阅读,更多相关《微机重点.docx(21页珍藏版)》请在冰豆网上搜索。
微机重点
第一章的重点
BCD码:
用四位二进制表示一位十进制
压缩BCD码与非压缩BCD码的区别——压缩BCD码的每一位用4位二进制表示,一个字节表示两位十进制数。
例如10010110B表示十进制数96D;非压缩BCD码用1个字节表示一位十进制数,高四位总是0000,低4位的0000~1001表示0~9.例如00001000B表示十进制数8.
0,1的ASCII码分别是:
48,49
A,B的ASCII码分别是:
65,66
a,b的ASCII码分别是:
97,98
第二章的重点
内部寄存器的名称及作用P17
BIUEIU的作用和关系
BIU主要负责从存储器指定区域取出指令并将取出的指令送指令队列寄存器中排队,当EU执行的指令需要和外部存贮器或者I/O端口之间进行数据传送时,BIU就停止取指令,为EU服务,完成这次总线操作;或者当指令队列满时,BIU也停止取指令的操作。
EU主要负责从指令队列寄存器中获取指令,并对指令加以执行,完成指令所规定的操作。
EU和BIU单元执行过程中,应该满足规则:
1.当指令队列寄存器中无指令时,EU处于等待状态;
2.当指令队列中存满指令,而EU又没有访问存储器和I/O端口的需要,则BIU进入空闲状态;
3.当指令队列中有两个空闲字节,则BIU自动执行取指令的总线周期;
4.在EU执行指令时,需要访问存储器或I/O端口,如果这时BIU正在取指令,则应等待BIU完成取指令周期,然后BIU进入存储器和I/O端口访问周期;
5.在EU执行转移、子程序调用或返回等指令时,自动清除指令队列的内容。
怎么分段逻辑地址与物理地址的关系
1MB的存贮空间中,每个存贮单元的实际地址编码称为该单元的物理地址(用PA表示)。
把1MB的存贮空间划分成若干个逻辑段,每段最多64KB。
各逻辑段的起始地址必须能被16整除,即一个段的起始地址(20位物理地址)的低4位二进制码必须是0。
一个段的起始地址的高16位为该段的段地址.显然,在1MB的存贮空间中,可以有216个段地址。
在一个段内的每个存贮单元,可以用相对于本段的起始地址的偏移量来表示,,这个偏移量称为段内偏移地址,也称为有效地址(EA)。
段内偏移地址也用16位二进制编码表示.所以,在一个段内有=64K个偏移地址(即一个段最大为64KB)。
在一个64KB的段内,每个偏移地址单元的段地址是相同的.所以段地址也称为段基址。
由于相邻两个段地址只相隔16个单元,所以段与段之间大部分空间互相覆盖(重叠)。
2.物理地址(PA)的形成
段地址和段内偏移地址都是无符号的16位二进制数,常用4位十六进制数表示。
这种方法表示的存贮器单元的地址称为逻辑地址。
逻辑地址的表示格式为:
段地址:
偏移地址
物理地址=段地址10H+段内偏移地址
例1:
某单元的逻辑地址为4B09H:
5678H,则该存储单元的物理地址为:
物理地址(PA)=段地址10H+EA
=4B09H10H+5678H
=4B090H+5678H
=50708H
例2:
图中物理地址为00020H单元,其逻辑地址可以有:
[0002H:
0000H]
由此可见,同一个物理地址,可以用不同的逻辑地址来表示。
段寄存器
在访问存储器时,段地址总是由段寄存器提供的。
8086/8088微处理器中有4个段寄存器(CS、DS、SS、ES),所以CPU可以通过这4个段寄存器来访问4个不同的段。
信息的分段存储与段寄存器的关系
用户用8086/8088汇编语言编写程序时,要把程序中的不同信息安排在不同的段。
程序中的信息包括:
程序(代码)信息:
存放在代码段,其地址由(CS):
(IP)提供。
数据信息:
存放在堆栈段,其地址由(SS):
(SP)提供。
堆栈信息:
通常情况下,存放在数据段(段地址由DS提供),当然也可以存放在附加数据段(段地址由ES提供),其段内偏移地址依据寻址方式的不同来求得。
8086/8088CPU各种类型访问存储器时,其地址成分的来源见下表所示。
I/O端口地址与存储器地址的关系
I/O设备包括与外界通信和存储大容量信息用的各种外部设备。
由于这些外部设备的复杂性和多样性,特别是速度比CPU低得多,因此I/O设备不能直接和总线相连接。
I/O接口是保证信息和数据在CPU和I/O设备之间正常传送的电路。
I/O接口与CPU之间的通信是利用称为I/O端口的寄存器来完成的,一个I/O端口有一个唯一的I/O地址与之对应。
二.8086/8088CPU共有20条地址线,对存储器和I/O端口的寻址采用独立编址的方式,其关系如下:
外设地址空间
第三章的重点
每种寻址方式的寻址范围P33访问存储器的有效地址怎么计算
数据的寻址方式(共8种):
●立即寻址(ImmediateAddressing)
●寄存器寻址(RegisterAddressing)
●存储器寻址(MemoryAddressing)(5种):
直接寻址、寄存器间接寻址、寄存器相对寻址、基址变址寻址和基址变址且相对寻址
●隐含寻址(HiddenAddressing)
1操作数在指令中称为立即寻址
立即寻址主要用来给REG或M赋初值。
.
注意:
只能用于源操作数字段,不能用于目的操作数字段。
如:
MOV12H,AL(语法错误)
2.操作数存放在寄存器中称为寄存器寻址
数据放在指令规定的寄存器中,对16位数据,REG可以是AX、BX、CX、DX、SI、DI、SP、BP以及段寄存器,而对于8位数据,REG可以是AH、AL、BH、BL、CH、CL、DH、DL。
寄存器寻址既可以作DST,也可以作SRC。
例:
MOVAX,BX
若(AX)=1234H,(BX)=5678H,则CPU执行上条指令后,(AX)=5678H,而(BX)不变。
又如:
MOVCX,DL(语法错误)错误原因:
类型不一致。
3.存储器寻址
这类寻址方式,操作数在存储器中,而存储器单元的地址由以下五种寻址方式的任何一种均可以找到。
但在指令中给出的只是要寻找的操作数所在单元的段内偏移地址,而操作数所在单元的段地址除非指令中用段前缀特别指明,否则是默认的DS。
①直接寻址(DirectAddressing)
操作数的地址在指令中称为直接寻址,即指令中直接给出了要寻找操作数所在单元的16位偏移地址。
操作数所在单元的物理地址:
PA=(段寄存器)×16+指令中给出的偏移地址
例1:
MOVAX,[2000H]若DS为3000H,则:
DS30000H
+2000H
PA=32000H
例5:
若VAR1为字变量,VAR2和VAR3为字节变量,判断下列指令的书写格式是否正确,正确的说出SRC和DST的寻址方式,不正确说出错误原因。
MOVAX,VAR1√SRC为直接寻址DST为寄存器寻址
MOVAX,VAR2╳类型不一致
MOVVAR2,VAR3╳两存储器单元之间不能直接传送数据
MOV[0200H],12H╳类型不明确
例6:
将例5中语法不正确的语句改对。
MOVAX,VAR2
改:
MOVAL,VAR2
MOVVAR2,VAR3
改:
MOVAL,VAR3
MOVVAR2,AL
MOV[0200H],12H
改:
MOVBYTEPTR[0200H],12H
或者:
MOVWORDPTR[0200H],12H
②寄存器间接寻址RegisterIndirectAddressing
这种寻址方式,要寻找的操作数在某存储器单元中,该存储器单元的16位偏移地址在指令中以BX、SI、DI某一个寄存器给出。
其段地址默认在DS段。
例1:
MOVAX,[BX]
其SRC为寄存器间接寻址;DST为寄存器寻址;
指令完成的功能为:
(AX)<————((DS):
(BX))
若:
(DS)=3000H,(BX)=1050H
则:
SRC所在单元的物理地址为:
PA=(DS)×16+(BX)
=30000H+1050H
=31050H
例2:
MOVES:
[SI],AL
指令完成的功能为:
((ES):
(SI))<————(AL)
若:
(ES)=4000H,(SI)=1234H,(AL)=23H
则:
DST所在单元的物理地址为:
PA=(ES)×16+(SI)
=40000H+1234H
=41234H
∴指令执行后(41234H)=23H.
例3:
判断下列指令的书写格式是否正确,正确的说出SRC和DST的寻址方式,不正确说出错误原因,并改正。
1MOV[BX],[SI]╳两存储器单元之间不能直接传送数据;
类型也不明确。
改正:
MOVAL,[SI]
MOV[BX],AL
②MOV[DI],12H╳类型不明确
改正:
MOVWORDPTR[DI],12H
③MOV[SI],CX√
DST为寄存器间接寻址
SRC为寄存器寻址
③寄存器相对寻址RegisterRelativeAddressing
要寻找的操作数在某存储器单元之中,该单元的有效地址的一部分在(BXBPSIDI)中,另一部分为一个(8位16位)DISP。
其中,DISP——>相对位移量
在DISP为常数时,操作数所在单元的段地址以寄存器为准,若寄存器为BX、SI、DI,操作数默认在DS段中。
若寄存器为BP,操作数默认在SS段中。
在DISP为变量时,操作数所在单元的段地址以变量为准,变量在哪个段定义的,就取该段的段地址。
例1:
MOVAX,[BX]+05H
其中,SRC也可以写成:
[BX+05H]
05H[BX]
05H+[BX]
若:
(DS)=2000H,(BX)=0008H,存放操作数单元的物理地址为:
PA=(DS)×16+(BX)+05H
=20000H+0008H+05H
=2000DH
例2:
MOVAX,[BP]
若:
(SS)=1050H,(BP)=0050H,存放操作数的存储单元的物理地址为:
PA=(SS)×16+(BP)+00H
=10500H+0050H+00H
=10550H
例3:
若(DS)=1500H,TABLE为在DS段定义的一个字变量,且偏移地址为0004H,(BP)=0003H。
MOVAX,TABLE[BP]
SRC的寻址方式为寄存器相对寻址。
指令完成的操作为:
(AX)((DS):
OFFSETTABLE+(BP))
④基址变址寻址BasedIndexedAddressing
要寻找的操作数在某存储器单元之中,该单元有效地址的一部分在(BXBP)中,另一部分在(SIDI)中。
该单元的段地址以基址寄存器为准,若基址寄存器为BX,则段地址默认在DS中,若基址寄存器为BP,则段地址默认在SS中。
例1:
MOVAX,[BX][SI]
(AX)<————((DS):
(BX+SI))
例2:
MOVAX,[BP][SI]
(AX)<————((SS):
(BP+SI))
例3:
MOV[BP][DI],AL
((SS):
(BP+DI))<————(AL)
⑤基址变址且相对寻址BasedIndexedRelativeAddressing
它是基址变址寻址的扩充,操作数仍在存储器中,存储器单元的有效地址为:
同样,如果用BX作为基地址,操作数默认在DS段中;如果用BP作为基地址,则在SS段中。
在DISP为变量时,操作数所在单元的段地址以变量为准,变量在哪个段定义的,就取该段的段地址。
例1:
MOVAX,[BX][DI]04
(AX)<————((DS):
(BX+DI+04H))
例2:
MOVAX,[BP][DI]04
(AX)<————((SS):
(BP+DI+04H))
例3:
MOVDS:
[BP][DI]+04H,AL
((DS):
(BP+DI+04H))<————(AL)
8.隐含寻址HiddenAddressing
有些指令的指令码中不包含指明操作数地址的部分,而其操作码本身隐含的指明了操作数地址。
如:
乘除法指令、字符串操作类指令等。
例1.若(BX)=0158H,(DI)=10A5H,
(DS)=2100H,DISP=1B57H,
(BP)=0100H,(SS)=1100H,
段寄存器按默认段寄存器,则相对于各种寻址方式的EA的求法如下:
直接寻址:
EA=1B57H
PA=21000H+1B57H=22B57H
寄存器间接寻址(设寄存器为BX):
EA=0158H
PA=21000H+0158H=21158H
寄存器相对寻址(以BP为例):
EA=0100H+1B57H=1C57H
PA=11000H+1C57H=12C57H
基址变址寻址(BX、DI):
EA=0158H+10A5H=11FDH
PA=21000H+11FDH=221FDH
基址变址相对寻址(BP、DI):
EA=0100H+10A5H+1B57H=2CFCH
PA=11000H+2CFCH=13CFCH
例2:
判断下列指令的书写格式是否正确,正确的说出SRC和DST的寻址方式,不正确说出错误原因。
MOVAX,[BX][SI]√SRC为基址变址寻址DST为寄存器寻址
MOVAX,BL╳类型不一致
MOV[BP],[DI+01H]╳两存储器单元之间不能直接传送数据
MOV[BX][DI]+02H,12H╳类型不明确
当CPU执行转移指令时,通过改变IP或CS:
IP,从而实现程序的转移。
如果程序转移后只有IP发生了改变,则称为段内转移或者称为近程转移(也称为NEAR
型转移)。
如果程序转移后CS、IP均发生了改变,则称为段间转移或者称为远程转移(也称为FAR
型转移)。
8086指令系统中的转移指令有两大类:
无条件转移指令:
有JMP、CALL、RET、IRET
条件转移指令:
如JZ、JC、JCXZ、LOOP等。
例如,下面指令书写是正确的。
MOVAX,BX;将BX中的一个字传送到AX中
MOVAL,DL;将DL中的一个字节传送到AL中
MOVAX,02;将立即数02传送到AX中
MOVSI,[BX];(SI)<——((BX))
MOVAL,4[DI];将(DI)+4作为偏移地址,将该单元内容送入AL
MOVAX,[BX+2];将寄存器BX中的内容加2后的值作为偏移地址,将该单元中的一个字节
;送入AL中,下一单元中的一个字节送AH中
MOV[BX][DI],DX;((BX)+(DI))<——(DL),((BX)+(DI)+1)<——(DH)
例如,下面指令书写是错误的。
(DATA1为字变量)
MOV10H,ALㄨDST不能为立即数寻址
MOVAL,CXㄨ类型不一致
MOV[BX][SI],78Hㄨ类型不明确
MOVDATA1,AHㄨ类型不一致
MOV[DI]+02H,DATA1ㄨ两单元之间不能直接传送数据
MOVCS,AXㄨCS不能做DST
MOVDS,0100Hㄨ当DS作DST时,SRC不能为立即数
例2.下面指令书写格式是错误的。
XCHGAX,1234Hㄨ立即数不能参加交换
XCHGBX,ESㄨES段寄存不能参加交换
XCHGAL,CXㄨ类型不一致
XCHGDAT1,DAT2ㄨ两存储单元不能直接交换
第四章的重点
1.分支程序
2.循环程序
3.条件判断
涉及到:
显示INT21
例子:
统计正数、负数、0的个数P1044.3
第七章的重点
输入输出端口的概念
1.I/O端口
I/O端口就是指I/O接口内部可由CPU进行读写操作的各种寄存器,根据存放信息的不同,这些寄存器分别称为数据端口、控制端口和状态端口。
2.I/O端口的编址方式
通常情况下一个微型计算机系统内有多个I/O接口,每个I/O接口内部又有多个I/O端口,系统为每个I/O端口分配了一个地址,这样的地址称为I/O端口地址,或者简称I/O地址。
对I/O端口安排地址的方式称为I/O端口的编址方式。
I/O端口的编址方式有以下两种:
端口与存储器分别独立编址
端口与存储器统一编址
第八章的重点
中断的概念P236,过程P239,响应,优先级
第九章的重点
8253给图进行地址分析P284初始化编程P285
定时/计数器8253占用4个端口地址:
寻址
00计数通道0
01计数通道1
10计数通道2
11控制字寄存器
定时/计数器8253一共有6种工作方式,由控制字寄存器的内容来设定。
方式控制字如下所示:
控制字中的位D7D6来确定计数通道:
SC1SC0含义
00计数通道0
01计数通道1
10计数通道2
11保留
D5D4用于设定计数通道的读写规则:
RL1RL0含义
00计数通道的锁存命令,即将当前CE的内容锁存到OL
01只读写CR或OL的低8位
10只读写CR或OL的高8位
11先读写CR或OL的低8位,再读写高8位
方式控制字的D1D2D3位用于设定计数通道的工作方式:
M2M1M0含义
000方式0
001方式1
×10方式2
×11方式3
100方式4
101方式5
方式控制字的最低位D0(即BCD位)用于指定读写数据的格式,当BCD=0时,表示读写数据为二进制数,当BCD=1时,表示读写数据为两位十进制数。
8253初始化编程
1.一般原则
对8253初始化编程分两步,首先写控制字,然后写入对应通道的计数初值。
至于先写哪个通道,则由用户任意选择。
每一个通道的控制字都必须写入控制寄存器(AlA0=11),初值必须写入相应计数器对应的端口。
2.计数初值的计算
假设已知8253相应通道的CLK端接入的时钟频率为f,周期记为t=1/f,要求产生的周期性信号频率为F(周期为T)或定时时间为T,则所需计数初值n为
n=T/t=f/F=T*f
[例1]已知8253口地址为158H~15BH,其A1和A0与相应地址线相连,要求计数器0工作在方式0,计数初值为1000,二进制计数;计数器1工作在方式1,计数初值为86,BCD码计数;计数器2的OUT端产生最大宽度的方波,写出8253的初始化程序。
计数器0的控制字:
00110000B=30H初值:
1000(超过256,用16位计数)
计数器1的控制字:
01010011B=53H初值:
86(小于256,用低字节计数)
计数器2的控制字:
10110110B=B6H初值:
0000(最大方波)
MOVAL,30H;计数器0控制字
MOVDX,15BH;控制寄存器端口
OUTDX,AL;写计数器0控制字
MOVAX,1000;计数器0初值
MOVDX,158H;计数器0端口
OUTDX,AL;写计数器0计数初值低字节
MOVAL,AH
OUTDX,AL;写计数器0计数初值高字节
MOVAL,53H;计数器1控制字
MOVDX,15BH;控制寄存器端口
OUTDX,AL;写计数器1控制字
MOVAL,86H;十进制计数,所以写成十六进制的形式
MOVDX,159H;计数器1端口
OUTDX,AL;写计数器1计数初值
MOVAL,0B6H;计数器2控制字
MOVDX,15BH;控制寄存器端口
OUTDX,AL;写计数器2控制字
MOVAL,0;计数器2初值
MOVDX,15AH;计数器2端口
OUTDX,AL;写计数器2计数初值低字节
OUTDX,AL;写计数器2计数初值高字节
[例2]某应用系统中,系统提供一个频率为10KHZ的时钟信号,要求每隔10ms向CPU提出中断申请,试完成8253的初始化编程。
(1)选择工作方式
由于系统每隔10ms完成一次申请,则可选用方式2来实现。
(2)确定计数初值
已知fCLK0=10KHZ,则TCLK0=0.1ms。
所以计数初值N=TOUT0/TCLK0=10ms/0.1ms=100,即64H。
(3)初始化编程
通道0的方式控制字为00010100B,即14H。
MOVAL,14H
OUT13H,AL
MOVAL,64H
OUT10H,AL
[例3]已知8253的CLK1=1MHZ,要求用8253连续产生10秒的定时信号。
8253的一个计数器的最大计数范围为65536,而初值N=10/10-6=107,超过了8253的一个通道最大计数值,因此可以使用两个8253的通道级连。
若级连后两个通道的初值为N1和N2,则N等于N1乘以N2。
设计数器初值N1=500,N2=20000,使用方式2(连续产生10S信号),二进制计数,则初始化程序如下:
MOV DX,323H
MOV AL,01110100B;计数器1
OUT DX,AL
MOV DX,321H
MOV AX,500
OUT DX,AL
MOV AL,AH
OUT DX,AL
MOV DX,323H
MOV AL,10110100B;计数器2
OUT DX,AL
MOV DX,322H
MOV AX,20000
OUT DX,AL
MOV AL,AH
OUT DX,AL
第十章的重点
8255开关控制灯
[例1]编写对8255的初始化程序片段,要求:
使A口为方式0输入,B口为方式0输出,C口作为8位的输出口使用。
已知8255的端口地址为128H~12BH。
MOVAL,10010000B;方式选择控制字
MOVDX,12BH
OUTDX,AL;写入控制寄存器
例:
某PC系列微机应用系统以8255A作为接口,采集一组开关S7~S0的状态,然后它通过一组发光二极管LED7~LED0显示出来,要求S闭合时对应的LED亮;S断开时对应的LED灭。
(1)写出8255A的四个端口地址;
(2)写出8255A的工作方式控制字;
(3)编写程序满足以上要求。
(1)8255A的A口、B口、C口和控制口地址分别为:
320H,321H,322H,323H。
(2)8255A的工作方式控制字:
82H(未用的位为0)。
(3)
CSEGSEGMENT
ASSUMECS:
CSEG
START:
MOVAL,10000010B
MOVDX,323H
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 微机 重点