微机原理与接口技术 视频笔记.docx
- 文档编号:2421550
- 上传时间:2023-05-03
- 格式:DOCX
- 页数:39
- 大小:593.83KB
微机原理与接口技术 视频笔记.docx
《微机原理与接口技术 视频笔记.docx》由会员分享,可在线阅读,更多相关《微机原理与接口技术 视频笔记.docx(39页珍藏版)》请在冰点文库上搜索。
微机原理与接口技术视频笔记
2012接口技术复习纲要
1.8086CPU对I/O寻址所用的地址线条数(20)以及在进行IN或OUT指令时,相关的控制信号状态如何?
2.中断向量、中断类型号、中断响应周期、中断向量表等概念要吃透。
中断向量:
中断源的识别标志,可用来形成相应的中断服务程序的入口地址或存放中断服务程序的首地址
中断类型号:
中断响应周期:
中断向量表:
3.8259的请求方式、屏蔽方式、结束方式、嵌套方式,初始化流程及端口地址如何分配。
4.8253工作时计数的方式,最大值,初值如何设定,定时与计数的功能应用,以及6种工作方式特点大致了解,上课时补充的例子。
5.8255两类控制字,工作方式,CAS0-CAS2的作用
6.RS-232采用的电平范围,适用的场合。
7.CPU与外设进行传送数据的四种方式:
无条件、查询、中断、DMA,分别看看!
!
8.串行通信的分类,波特率,8250通信的几种错误,8251的初始化前应怎么做?
9.D/A转换的分辨率
10.8237的几条软件命令及其功能
11.I/O端口的编址方法及特点
12.8255与打印机的工作,如何编程实现?
BIU与EU的动作协调原则:
总线接口部件(BIU)和执行部件(EU)按以下流水线技术原则协调工作,共同完成所要求的信息处理任务:
1每当8086的指令队列中有两个空字节,或8088的指令队列中有一个空字节时,BIU就会自动把指令取到指令队列中.其取指的顺序是按指令在程序中出现的前后顺序.
2每当EU准备执行一条指令时,它会从BIU部件的指令队列前部取出指令的代码,然后用几个时钟周期去执行指令.在执行指令的过程中,如果必须访问存储器或者I/O端口,那么EU就会请求BIU,进入总线周期,完成访问内存或者I/O端口的操作;如果此时BIU正好处于空闲状态,会立即响应EU的总线请求.如BIU正将某个指令字节取到指令队列中,则BIU将首先完成这个取指令的总线周期,然后再去响应EU发出的访问总线的请求.
3当指令队列已满,且EU又没有总线访问请求时,BIU便进入空闲状态.
4在执行转移指令,调用指令和返回指令时,由于待执行指令的顺序发生了变化,则指令队列中已经装入的字节被自动消除,BIU会接着往指令队列装入转向的另一程序段中的指令代码.
从上述BIU与EU的动作管理原则中,不难看出,它们两者的工作是不同步的,正是这种既相互独立又相互配合的关系,使得8086/8088可以在执行指令的同时,进行取指令代码的操作,也就是说BIU与EU是一种并行工作方式,改变了以往计算机取指令→译码→执行指令的串行工作方式,大大提高了工作效率,这正是8086/8088获得成功的原因之一.
寄存器
13个16位寄存器和1个只用了9位的标志寄存器
8个通用寄存器
高八位
低八位
符号
名称
AH
AL
AX
累加器
BH
BL
BX
基址
CH
CL
CX
计数
DH
DL
DX
数据
SP堆栈指针
BP基址指针
SI源变址
DI目标变址
FLAGSHFLAGSL(只用了9位)状态标志寄存器
IP指令指针
四个段寄存器
CS代码
DS数据
ES附加
SS堆栈
寄存器作用的详细介绍
∙1、AX,SX等一般寄存器,可暂存数据
∙2、CS,IP
下一条要执行的指令存储在cs为段地址,ip为偏移地址的内存中
∙3、DS
数据段寄存器,比如MOvAL,[0],表示将ds:
0这个内存中的数字传入AL中。
要将内存10000H中的数传入DS中,则应该这样:
MOVAX,1000H
MOVAX,DS,因为不能直接movds,1000
MOV AX,[0],寄存器al若为16位,则内存中有一个字要移入AX,要是为32位,则内存中有2个字要移入al
movbl,[ax],将ds:
ax表示的内存的字节传入bl寄存器中
movbx,[ax],将ds:
ax表示的内存的字传入bx寄存器中
∙4、ss,sp
ss存储堆栈段的段地址,sp存储堆栈段的偏移地址,push和pop指令涉及到的内存就是ss:
sp指向的内存
∙5、cx计数寄存器,主要是存储循环程序要循环执行的次数。
存放程序在内存中的长度?
∙6、注意段寄存器cs,ds,ss均不能直接将数据输入。
∙7、在movax,[si+di]这个[。
。
。
]省略号只能填入如下四个寄存器:
bx,si,di,bp,其余的比如ax,cx,dx均是错误的,要是ss,cs,ds,更是错误的。
在[。
。
。
]中使用bp,则段地址默认为ss,显性指示段地址除外。
寄存器寻址方式
固定寻址
立即数寻址
movAX,1609H
寄存器寻址
MOvss,sp
不需要总线周期
对于16位寄存器8个16位通用寄存器都可用
对于8位操作数,寄存器只能是AHALBHBLCHCLDHDL
存储器寻址
注意书写格式的不同MOVAX,[SI]
(1)直接寻址
(2)间接寻址
A.基址寻址方式
B.变址寻址方式
C.基址加变址寻址方式
寄存器相对寻址
把带有位移量的寄存器间接寻址叫做寄存器相对寻址
常用于数组或者表格处理
举例
一般容易出现的错误
超出了取值范围
寄存器操作数
》操作数可能放在8086/8088的通用寄存器、地址指针和变址寄存器以及段寄存器中
》隐含寄存器操作数的,某些指令规定只能使用规定的寄存器操作数。
从指令形式上看,没有指出操作数,但实际上是隐含了某些特定的指令操作数
存储器操作数可以作为源操作数,也可以作为目的操作数。
但是多数指令不允许源操作数、目的操作数同时为存储器操作数。
8086指令系统
传送指令
通用数据传送指令
MOV
》通用传送指令可以传送16位数据,也可以传送8位数据,取决于寄存器和立即数的形式
》不能再两个内存单元之间直接传送数据
》CS和IP不能做为目的操作数,单可以做为源操作数
MOVCS,2000H(×)
CS与IP是一对操作数
》不能将立即数直接传送给段寄存器
MOVDS,1111H(×)
纠正MOVAX,1111H
MOVDS,AX
》段寄存器之间不能相互传送值(CS、DS、ES、SS)
MOVES,DS(×)
纠正
MOVAX,DS
MOVES,AX
》通用传送指令都不影响标志位
PUSHS压栈
POPd出栈
作用:
可用于保存并回复堆栈区的数据
堆栈段的范围是SS×16至SS×16+SP
注意:
1.8086的堆栈操作总是按字进行操作的
2.每推入一个字,sp减2,一个字的高字节放在堆栈的较高地址,低字节放在堆栈的较低地址;弹出一个字,sp加2
3.CS值可以压栈,但栈中的值除断点的值外不能弹入CS。
因为POPCS只改变了下一条指令的段地址(CS值),将造成不可预知的结果。
4.对战指令中的操作数智能是寄存器或者存储器操作数,不能使立即数。
XCHGd,s
1.目的或源操作数不能为立即数或者段寄存器;并且不能同时为内存单元(交换可以再通用寄存器与累加器之间、通用寄存器之间、通用寄存器与存储器之间)
2.CS和IP不能为交换指令的源或目的操作数
XLAT
目标地址传送指令
LEAd,s有效地址传送指令
举例说明:
LEAAX,[2812H]将地址2812H传送到累加器AX中
MOVAX,[2812H]将有效地址2812H对应的实际数值(立即数)放入到AX中
LDSd,s将地址装入DS和另一个通用寄存器
将源操作数S所指定的四个连续内存单元中内容的的前2个字节放入由目的操作数d所指定的通用寄存器中,并将后两个字节放入到DS段j寄存器中
LESd,s
将内存单元中存储的四个字节的地址的后两个字节放入到ES中,前两个字节放入d所指定的通用寄存器中
标志位传送指令
LAHF将标志寄存器F的低字节(共5个标志位)传送到AH中
SAHF将AH寄存器内容传送到标志位寄存器F的低字节中(与LAHF功能恰好相反)
PUSHF将16位标志位入栈保护
POPF将16位标志位从堆栈弹出,送回标志位中
I/O数据传送指令
(1)IN累加器,端口号
INAL,PORT
INAX,PORT
INAL,DX
(2)OUT端口号,累加器
算术运算指令
加法:
ADDd,s带进位加法:
ADCd,s加1:
INCd
减法(subtraction)SUBd,s带借位减法SBBd,c减1:
DECd
取负:
NEGd
比较CMPd,s
1.加法指令
加法共有三条指令。
(1)ADD(signedorunsignedADD):
不带进位的加法指令
格式:
ADDd,s
操作:
(d)←(d)+(s)
其中目标操作数d为被加数操作数和结果(即和)操作数,源操作数s为加数操作数。
ADD指令的功能:
将源操作数的内容和目标操作数的内容相加,结果保存在目标操作数中,并根据结果置标志位,ADD指令完成半加器的功能。
源操作数可以是8/16位的通用寄存器、存储器操作数或立即数。
目标操作数除不允许为立即数外,其他同源操作数。
注意:
两个操作数不能同时为存储器操作数,段寄存器不能作为源和目标操作数。
例ADDAL,BL
指令执行前,AL=66H,BL=20H。
指令执行:
指令执行后,AL=86H,BL=20H。
影响标志位的情况:
CF=0,ZF=0,SF=1,AF=0,OF=1,PF=0。
例ADDWORDPTR[BX+106BH],1234H;WORDPTR指明存储器操作数为字类型
若DS=2000H,BX=1200H,字操作数存储单元的物理地址为:
物理地址=20000H+1200H+106BH=2226BH
指令执行前,(2226BH)=44H,(2226CH)=33H。
指令执行:
指令执行后,(2226BH)=78H,(2226CH)=45H。
影响标志位的情况:
CF=0,ZF=0,SF=0,AF=0,OF=0,PF=0。
(2)ADC(addwithcarry):
带进位的加法指令
格式:
ADCd,s
操作:
(d)←(d)+(s)+CF
ADC指令的操作功能与ADD指令基本相同,惟一不同的是还要加上当前进位标志的值。
ADC指令完成全加器的功能,主要用于两个多字节(或多字)二进制数的加法运算。
例下列指令序列完成两个无符号的双精度数(双字数据)的加法。
假设目标操作数(被加数)存放在DX和AX寄存器中,其中DX存放高位字,AX存放低位字。
源操作数(加数)存放在BX和CX寄存器中,其中BX存放高位字,CX存放低位字。
指令执行前:
DX=0002H,AX=F365H,BX=0005H,CX=E024H。
应完成的操作:
0002F365H+0005E024H。
双字加法指令序列为:
ADDAX,CX;低位字相加
ADCDX,BX;高位字带进位相加
执行第一条指令
第一条指令执行后,AX=D389H,CF=1,ZF=0,SF=1,AF=0,OF=0,PF=1。
执行第二条指令:
第二条指令执行后,DX=0008H,CF=0,ZF=0,SF=0,AF=0,OF=0,PF=0。
该指令序列执行完后,相加的和存放在DX,AX中,DX=0008H,AX=D389H,结果正确。
(3)INC(incrementby1):
加1指令
格式:
INCd
操作:
(d)←(d)+1
INC指令的功能:
将目标操作数当作无符号数,将其内容加1后,又送回到目标操作数中。
目标操作数可以是8/16位的通用寄存器或存储器操作数,但不允许是立即数和段寄存器。
INC指令的执行不影响CF标志位,通常用于在循环过程中修改指针和循环次数。
例INCCX
指令执行后,将CX寄存器中的内容加1后又送回到CX中。
2.减法指令
减法共有五条指令。
(1)SUB(subtract):
不带借位的减法指令
格式:
SUBd,s
操作:
(d)←(d)-(s)
其中目标操作数d和源操作数s的寻址方式的规定同ADD指令。
SUB指令的功能:
将目标操作数的内容减去源操作数的内容,结果(差)存入目标操作数中,并根据结果置标志位。
与ADD指令一样,SUB指令可以是字操作,也可以是字节操作。
例SUBAL,[BP+8]
若SS=5000H,BP=2000H,则源操作数存储单元的物理地址为:
物理地址=SS×16+BP+8=50000H+2000H+8=52008H
指令执行前,AL=45H,(52008H)=87H。
指令执行:
指令执行后:
AL=BEH,(52008H)=87H。
置标志位的情况:
CF=1,ZF=0,SF=1,AF=1,OF=1,PF=1。
(2)SBB(subtractionwithborrow):
带借位的减法指令
格式:
SBBd,s
操作:
(d)←(d)-(s)-CF
其中CF为当前借位标志的值。
该指令的操作功能以及两个操作数寻址方式的规定和SUB指令极为相似,惟一不同的就是SBB指令在执行减法运算时,还要减去CF的值。
SBB指令执行时,用被减数(d)减去减数(s),还要减去低位字节相减时所产生的借位。
在实际应用中,SBB指令主要用于两个多字节或多字二进制数的相减过程。
例下列指令序列完成两个无符号的双精度数(双字数据)的减法。
设目标操作数(被减数)存放在DX和AX寄存器中,其中DX存放高位字,AX存放低位字。
源操作数(减数)存放在CX和BX寄存器中,其中CX存放高位字,BX存放低位字。
指令执行前,DX=0012H,AX=7546H,CX=0010H,BX=9428H,则应完成00127546H-00109428H的减法过程。
双字减法指令序列为:
SUBAX,BX;低位字相减
SBBDX,CX;高位字带借位CF相减
执行第一条指令:
第一条指令执行后,AX=E11EH,CF=1,ZF=0,SF=1,AF=1,OF=1,PF=1。
执行第二条指令:
第二条指令执行后,DX=0001H,CF=0,ZF=0,SF=0,AF=0,OF=0,PF=0。
该指令序列执行完后,相减的差存放在DX,AX中,DX=0001H,AX=E11EH,结果正确。
(3)DEC(decrementby1):
减1指令
格式:
DECd
操作:
(d)←(d)-1
DEC指令的功能以及操作数的规定与INC指令基本相同,所不同的只是将目标操作数的内容减1,结果送回到目标操作数中。
与INC指令一样,DEC指令通常也用于在循环过程中修改指针和循环次数。
例DECCX
指令执行后,将CX寄存器中原先的内容减1后又回送到CX中。
(4)NEG(two’scomplementnegate):
求补指令
格式:
NEGd
操作:
(d)←(
)+1
NEG指令的功能:
将目标操作数的内容按位求反后末位加1,再返回到目标操作数中。
对一个操作数求补实际上也相当于用零减去该操作数的内容,则NEG指令执行的也是减法(d)←0-(d),目标操作数的规定同INC,DEC指令。
例NEGDL
指令执行前,DL=80H。
指令执行:
指令执行后:
DL=80H,CF=1,ZF=0,SF=1,AF=0,OF=1,PF=0。
(5)CMP(comparetwooperands):
比较指令
格式:
CMPd,s
操作:
(d)-(s)
CMP指令的操作功能、操作数的规定以及影响标志位的情况类似于SUB指令,惟一不同的是CMP指令不保存相减以后的结果(差),即该指令执行后,两个操作数原先的内容不会改变,只是根据相减操作的结果设置标志位。
CMP指令通常用在分支程序结构中比较两个数的大小,在该指令之后经常安排一条条件转移指令,根据比较的结果让程序转移到相应的分支去执行。
例CMPAL,CL
指令执行前,AL=68H,CL=9AH。
指令执行:
指令执行后,AL=68H,CL=9AH,CF=1,ZF=0,SF=1,AF=1,OF=1,PF=0。
作为无符号数比较,被减数小于减数,不够减,有借位,CF=1。
作为有符号数时,结果已超出有符号数所能表示的范围,因此OF=1,有溢出。
3.乘法指令
乘法共有两条指令。
(1)MUL(unsignedmultiply):
无符号数的乘法指令
格式:
MULs
操作:
s为字节操作数:
AX←AL
(s)
s为字操作数:
DX,AX←AX
(s)
MUL指令中仅有一个操作数(源操作数),表示乘数,可使用寄存器或各种寻址方式的存储器操作数,而绝对不可以使用立即数和段寄存器。
指令中的目标操作数隐含在指令中且必须使用累加器(表示被乘数),字节相乘时用AL,字相乘时用AX。
乘法操作的过程如图3.15所示。
(2)IMUL(signedmultiply):
有符号数的乘法指令
格式:
IMULs
操作:
s为字节操作数:
AX←AL
(s)
s为字操作数:
DX,AX←AX
(s)
乘法指令的操作影响OF和CF标志位,对其余的标志位无定义
对于MUL指令,如果乘积的高一半数位为零,即字节操作时AH=0,字操作时DX=0,则操作结果使CF=0,OF=0。
4.除法指令
除法共有四条指令。
(1)DIV(unsigneddivide):
无符号数的除法指令
格式:
DIVs
操作:
分为字节和字两种操作类型。
字节操作时,16位被除数在AX中,8位除数为源操作数,结果的8位商在AL中,8位余数在AH中,表示为:
AL←AX/(s)商
AH←AX/(s)余数
字操作时,32位被除数在DX和AX中,其中DX为高位字,16位除数为源操作数,结果的16位商在AX中,16位余数在DX中,表示为:
AX←DX,AX/(s)商
DX←DX,AX/(s)余数
DIV指令的被除数、除数、商和余数全部为无符号数。
(2)IDIV(signeddivide):
有符号数的除法指令
格式:
IDIVs
操作:
与DIV指令相同,只是被除数、除数、商和余数均为有符号数。
余数的符号和被除数的符号相同。
除法指令的操作过程如图3.16所示。
1.除数为被除数的一半长
2.被除数放在AX中或者AX,DX中DX看做是AX的扩展
3..AF、CF、OF、PF、SF、ZF不确定
4.当被除数不够除数的2倍长时,应对被除数进行扩展:
(1)对于无符号数的除法,被除数的扩展就是将AH或DX清0
(2)对于有符号数的除法,被除数的扩展时将AH或DX进行低位字节或 低位字的符号扩展
IDIV符号扩展指令CBW(convertbytetoword)CWD(convertwordtodoubleword)
CBW(扩展被除数字节为字的符号)CWD(扩展被除数字为双字的符号)
例如:
进行有符号数除法AX÷BX时,可以使用下面的程序段
CWD
IDIVBX
(3)CBW(convertbytetoword):
字节转换为字指令
格式:
CBW
操作:
AL中的符号位(最高位D7)扩展到AH中。
若AL中的D7=0,则AH=00H。
若AL中的D7=1,则AH=FFH。
(4)CWD(convertwordtodoubleword):
字转换为双字指令
格式:
CWD
操作:
AX中的符号位(最高位D15)扩展到DX中。
若AX中的D15=0,则DX=0000H,若AX中的D15=1,则DX=FFFFH。
CBW和CWD指令执行结果都不影响标志位。
下面举例说明除法指令的用法。
DIVBL
指令执行前,AX=0400H=1024,BL=B4H=180。
指令执行:
指令执行后,AL=05H=5(商),AH=7CH=124(余数)。
例IDIVBL
指令执行前,AX=0400H=+1024,BL=B4H=-76。
指令执行,先将BL中的内容转换为原码,去掉符号位,BL=4CH,数值部分相除。
数值相除后,求商的符号,0
1=1即商为负数,对商再求补码得F3H,余数的符号与被除数相同。
指令执行后,AL=F3H=-13(商),AH=24H=36(余数)。
下面是用加、减、乘、除指令进行算术运算的例子。
例计算(V-((X×Y)+Z-540))÷X
其中X,Y,Z,V均为16位有符号数,已分别装入内存的X,Y,Z,V字单元中。
要求将上式计算得到的结果存入AX中,余数存入DX中。
现编制程序如下:
MOV AX,X;将被乘数X存入AX中
IMULY;DX,AX←X×Y
MOV CX,AX
MOV BX,DX;将乘积存入BX,CX中
MOV AX,Z;将加数Z存入AX中
CWD;将加数扩展为双字存入DX,AX中
ADD CX,AX
ADC BX,DX;完成X×Y+Z并将结果存入BX,CX中
SUB CX,540
SBB BX,0;完成X×Y+Z-540,结果存入BX,CX中
MOV AX,V;将V存入AX?
?
?
?
?
?
CWD;将V扩展为双字数据存入DX,AX中
SUB AX,CX
SBB DX,BX;完成V-(X×Y+Z-540),并将结果存入DX,AX中
IDIV;完成(V-(X×Y+Z-540))÷X运算,并将结果存入DX,AX中
5.十进制调整指令
为什么要用十进制调整指令?
八位BCD码最大值为10011001(即每四位最
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 微机原理与接口技术 视频笔记 微机 原理 接口 技术 视频 笔记