8086微机原理总结.docx
- 文档编号:6483125
- 上传时间:2023-01-06
- 格式:DOCX
- 页数:23
- 大小:46.65KB
8086微机原理总结.docx
《8086微机原理总结.docx》由会员分享,可在线阅读,更多相关《8086微机原理总结.docx(23页珍藏版)》请在冰豆网上搜索。
8086微机原理总结
题目:
微机原理全书总结
姓名:
吕祎
学号:
12021027
第一部分
第一章首先介绍了计算机的发展,不同时期的计算机发展史。
在计算机发展史中,最重要的就是冯诺依曼提出的存储程序概念。
目前根据冯诺依曼给出的模型设计的计算机一直沿用至今。
冯诺依曼计算机的核心是:
指令数据用二进制表示,程序预存在存储器中,在执行时根据指令逐条取出分析执行,计算机硬件由运算器控制器存储器输入输出设备组成。
对计算机发展有突出贡献的两个人是图灵和冯诺依曼。
(1)一些基本概念
位(bit)是我们计算机所能表示的最小数据单位。
8个bit组成一个字节(Byte)
指令:
二进制代码组成,规定微处理器进行某种命令。
即又0和1组成的编码。
程序:
指令的有序集合。
存储器:
用于存储数据和程序。
地址:
存储单元I/O接口的编号。
IO引脚线:
16根。
可以控制的外设64K个。
(二)目前常用的二进制十进制十六进制的转换方式此处需要熟悉各个进制转换规则。
例如05H转换为二进制为00001001B
另外本节还介绍了几种编码表示,例如BCD码,ASCLL码,汉字编码等等。
BCD码:
四位二进制表示十进制数
(1)非压缩型BCD,一个字节表示一位十进制数,高四位清零
(2)压缩型BCD:
用一个字节表示两位十进制数。
(三)原码:
最高位为符号位(0表示正,1表示负)
反码:
正数反码与原码相同,负数的反码等于原码中符号位不变其他取反。
补码:
正数补码与原码相同,负数的补码等于原码中符号位不变各位取反再加一。
(四)指令:
告诉计算机从事某个特殊运算的代码。
计算机执行指令的过程是:
取指令→分析指令→执行指令。
第二部分
(一)第二章
8086/8088微处理器
工作过程:
取指令、译码、执行指令、取指令、译码······
工作方式:
并行流水处理方式。
功能分类:
执行单元EU、总线接口单元BIU
内部包括:
运算器,寄存器组,控制逻辑,指令队列,20位加法器。
(二)执行单元EU
运算器
16位内部数据总线
数据寄存器AX、BX、CX、DX
地址指针寄存器SP、
变址寄存器SI
标志寄存器FR
总线接口BIU
20位地址加法器
段寄存器:
代码段寄存器CS、堆栈段寄存器SS、数据段寄存器DS、附加
段寄存器ES
指针寄存器:
IP
指令队列
(三)8086/8088异同
相同:
均为16位数据总线,均可处理8位、16位数据。
外部存储器寻址范围1M空间,I/O寻址范围64K。
不同:
8088内部数据总线16位,外部数据总线8位。
8086内部指令队列6字节,2字节是空时BIU取指令,8088内部指令队列4字节,1字节为空时取指令
28管脚8086为M/IO非是对存储器或者对I/O操作控制线8088为IO/M非
34管脚8086为BHE非,是高八位数据有效信号线,8088是SS0,是确定当前总线周期的读写操作线。
(四)1时钟周期
两个时候总脉冲的间隔,T表示。
主频为8MHz时,一个T为125ns
2总线周期
完成一个基本操作所用的时间。
由T1、T2、T3、T4组成。
3指令周期
执行一条指令需要的周期。
一个指令周期可以由一个或者多个总线周期组成。
(五)读总线周期
M/IO非高电平为存储器读总线周期,反之为IO读总线周期。
T1根据指令给出M/IO非状态;地址数据总线AD15-AD0提供地址,A19/S6-A16/S3提供高4位地址星系,对IO读为高阻。
地址锁存信号ALE置1,地址信息稳定到ALE变0.如果对高8位操作,BHE非给出低电平有效状态。
DT/R非为低电平表示执行读操作。
T2A19/S6-A16/S3提供状态信息,持续到T4,AD15-AD0高阻。
RD非变为有效。
T3T4外部数据将数据送上总线,报纸稳定。
出出气或者接口比CPU慢则T3不能提供稳定数据,那么有硬件产生T3、T4之间的几个Tw等待状态
写总线周期
T1同读周期,只是DT/R非为高电平,T2-T4地址状态线提供状态信息。
写信号WR非有效。
T4状态结束,所有信号恢复到周期前。
第五章
(六)1对存储器分段管理模式
所有数据以字节形式存储在存储单元,每个单元均有唯一20位地址,称为物理地址。
每个存储单元一定处在某个段中,距离该段其实单位有一个偏移量,指令中描述为段基址:
逻辑地址。
存储类型
寄存器
Cache
内存储器
硬盘存储
光盘存储
移动存储
访问速度
Ns级
Ns级
几十ns
Us级
Us级
Us级
容量
几十
小于几十MB
小于1G
几百GB
几百MB
几十K-几十G
存储芯片容量=单元数*数据位数
(七)半导体存储器基本组成
(1)存储体内个基本存储电路存储一位二进制。
8个作为一个整体
(2)地址寄存/译码器。
CPU把地址码通过地址总线送至地址寄存器,由地址译码器对地址译码,即可确定存储单元。
地址线根数决定译出的编码个数。
单译码:
线性译码,是全部地址通过逻辑电路进行编码构成译码电路。
随着译码线根数增加,电路复杂程度指数增加,只适用容量较小存储器。
双译码:
复合译码,两个译码器分别译码。
X译码器为行译码,Y译码器为列译码。
输出线用来选择存储矩阵中一列所有的存储单元,行和列交叉点处X和Y为一个状态,只有X向和Y向选择先同时选中存储器才能读写操作。
减少了输出线。
(3)数据寄存器是存储信息流动的通道。
读写操作作为从存储单元读出的信息,写操作作为把要存的信息写入存储单元。
芯片未被选中为高阻。
可以实现协调CPU和存储器之间的速度差异。
(4)控制电路控制整个芯片是否被宣统和控制存储信息流动的方向。
只有当信号CS非,CE非有效存储器才能与外界交换信息。
(八)
(1)位扩充:
存储器有1、4、6、16、32位,容量也各不相同。
例如1K*1的芯片组成1K*8的存储器需要8片,用1K*4位芯片需要两片。
(2)字扩充:
用容量较小存储器组成容量较大存储器,采用串联方法。
若干芯片串联构成需要的存储器。
高位地址输入到译码器,经过译码器输出对每个芯片片选。
各个芯片数据线控制线低位地址并联。
(九)地址译码
1逻辑电路实现译码
译码器实现译码
2方案
全译码:
将全部片选地址参加片选译码,可以对全部存储空间寻址,每个存储单元地址唯一。
部分译码:
地址总线中片选某些参与译码,产生信号作为存储芯片片选。
线译码:
直接用某根片选地址作为选择存储芯片片选线。
区别:
全译码不浪费地址空间,各芯片之间地址连续不重叠。
便于系统扩展。
部分译码电路简单,每个存储单元地址不唯一。
线译码不能充分利用存储空间,只适用于存储芯片少的情况。
(十)存储器CPU连接
1地址线连接
片选地址:
地址由地址译码电路译码后接到存储芯片片选地址上
片内地址:
直接接到存储芯片地址线上;遇到地址线数据线复用的CPU,用锁存器将地址线分离。
2数据线连接
当存储器芯片数据线是双向三态,则可以直接与CPU数据线DB连接;当存储芯片数据线的输入线与输入线分开时,则需要外加三态门,才能与CPU连接。
3控制线连接
CPU对芯片进行读写操作,要先给出地址总线给出地址信息,然后需要发出相应的存储器读写控制信号,最后才能在数据线上进行数据交换。
接口设计步骤
1存储芯片的选择
2地址分配
3地址译码
4CPU与存储器信号连接
(十一)将硬件作为辅助存储器,在存储器管理部件和操作系统中的存储器管理软件的共同支持下,使得编程具有比实际主存储器容量大的空间。
速度比主存储器慢,和主存储器没有区别。
管理方式:
段式管理,页式管理,段页式管理。
段式管理:
分配管理是以分段为基础
页式管理:
划分成大小的块,来划分虚拟存储空间,主存储空间,辅助存储空间。
第三部分
第三章
(一)指令是处理器完成各种动作的命令,一个微处理器的全部指令构成该处理器的指令系统。
结构:
操作码+操作数
操作码:
指明操作动作和操作数存放位置的描述方法。
处理器每一个操作均有操作码对应。
(1字节)
操作数:
提供指令要处理的操作数据或者操作数所在位置的信息。
(长度不同)
分为:
无操作指令,单操作指令,双操作指令。
(二)指令的演化
操作码+来源地址码+处理结果存放地址码+后续指令
操作码+目的操作数+源操作数(5字节)
操作码+源操作数(3字节)
操作码+源操作数+操作数据来源地址码2(1-2字节)
结果地址码
(三)寻址方式
1隐含寻址方式:
指令中隐含规定操作数的位置如MULBL中规定一个乘数在AL
2数据型寻址
立即数寻址——操作数在指令中
寄存器寻址——操作数在寄存器R
直接寻址
寄存器间寻址
基地址寻址,变址寻址
基址变址寻址
串操作寻址
I/o端口寻址——操作数在I/O中
目标地址寻址
相对程序寻址
直接寻址
间接寻址
(四)操作数在指令中(立即数寻址)
例MOVBL,47
2操作数在寄存器中
16位操作数AXBXCXDXSIDISPBP
8位操作数ALAHBLBHCLCHDLDH
例MOVAL,BL;复制BL到AL中
3操作数在存储器
16位操作数使用寄存器AX,BX,CX,DX,SIDISP,BP
8位操作数使用寄存器AL,AHBLBHCLCHDLDH
注意1不允许段寄存器直接传输
2不允许混合尺寸
3不允许代码段寄存器作为目标操作数
3操作数在存储器中
(1)直接寻址指令直接给出操作数的有效地址例如MOVAX,[200H]MOVBX,DS:
VAR
(2)寄存器间接寻址操作数的有效地址直接从BXBPSIDI中获得
注意使用BP时,默认段寄存器为SS,不使用BP时,默认为DS
例如MOVAX,[BX]DS,BX寻址的存储单元的字内容复制到AX中
(五)操作数在I/O中
端口寻址范围65536(64K)数据只能由AX,AL通过数据总线传。
8位时直接寻址,16位时间接寻址,并且只能用DX,另个操作数一定在AX,AL中
例如INAL,N8
OUTN8,AL
(六)指令系统(133条)
3.3.1传送类指令
1传送MOV
●
传输方向,通用寄存器立即数内存立即数通用寄存器之间,通用寄存器段寄存器之间
●不允许:
内存之间传送,立即数传给段寄存器,段寄存器之间,CS做目标操作数,FR参加MOV操作
●MOV不影响FR
2交换XCHG
●可以通用寄存器之间,也可以通用寄存器和段寄存器之间
●不允许存储器之间,立即数和存储器或寄存器,段寄存器CS,IP,FR作为操作数
●不影响FR
例如:
XCHGAL,[BP]将SS:
[BP]AL交换内容。
3换码指令XLAT
●将内存表中数据传到AL可以作为查表技术DS为表内段基值。
BX内存内存首地址和有效地址,AL为待查数据在表中位置(位移量)表首地址DS:
[BX],换码指令是将AL指明位置的数据取出,并且赋值给AL。
●指令中隐含使用了DS,BX,AL如果使用其他段寄存器,则不能省略
●不影响FR
4栈(PUSHPOP)
PUSH
●
SP-2后将源操作数压入栈,即SPSP-2,SS:
[SP]SS:
[SP+1]src
POP
●将栈中SS,SP指定位置一个字的数据弹到目标操作数。
SP+2
DestSS:
[SP]SS:
[SP+1],SP=SP+2
注意没有POPCS,有PUSHCS。
进栈操作SP-2,出栈操作SP+2
堆栈操作不影响FR
5标志位传送(LAHF,SAHF,PUSHF,POPF)
1)取标志位LAHF把标志位寄存器低八位给AH即,把SF,ZF,AF,PF,CF标志位分别传送到AH的76430位。
2)存储标志寄存器指令SAHF把AH的76420位送入SFZFAFPFCF并且SFZFAFPFCF不受影响。
3)标志位进栈PUSHF首先SP-2,将FR全部内容压入SP只想的栈顶字单元FR不受影响
4)标志寄存器出栈POPF把堆栈顶部一个字的内容弹到标志寄存器FR,SP+2
6地址传送(LEA,LDS,LES)
1.装入LEA将某单元有效地址装入指定寄存器注意:
传送的不是操作数,而是偏移量,目的操作数必须是通用寄存器,源操作必须是内存操作数
2.装入LDS指定内存连续4个字节内容低16位送到通用寄存器,高16位送到DSLES连续四个字节低16位送到指定通用寄存器,高16为送入ES
7输入输出INOUT
功能:
实现CPU到I/O之间数据传送。
注意IN指令的目标操作OUT指令的源操作必须是AL或者AX
IN和OUT中对I/O允许直接寻址和寄存器寻址
当端口地址为16位时,对端口寻址只能用寄存器间接寻址,即I/O端口地址寄存器在DX中,而且只能是DX。
如果是8位口地址,则高八位清零。
3.3.2算术预算指令
1加法指令
(1)ADDADC目标和源操作相加,其和存放到目标操作数。
源操作数内容不变。
注意源操作和目的操作可以来自通用存储器,或存储器,源操作还可以为立即数。
不允许存储器相加
影响标志位FR中的CFPFAFZFSFOF
(2)加一指令INC
操作数可以是通用寄存器,存储器,不能是立即数。
影响标志寄存器FRSFZFAFPF但不影响CF
2减法指令
(1)SUBSBB
功能:
用目标操作数减去源操作数,差存入目标操作数。
源操作数原有内容不变。
注意存储器不能相减,目标操作数也不能是立即数。
SUB和SBB指令影响SF,ZF,CF,AF,PF,OF
(2)减一指令DEC
操作数可以是通用寄存器或者存储器,但不能是立即数
(3)求补NEG
功能:
用零减去目标操作数,并送回目标操作数。
也就是实现无符号求补
(4)比较CMP
功能:
CMP和SUB一样执行减法操作,只是不保存差值,操作影响FR,后面跟着条件转移,根据比较结果选择不能程序分支。
3乘法
无符号MUL,有符号IMUL
功能:
一个乘数一定来自AL,AX,另一个乘数为src积一定在AX或DX和AX中。
两个八位相乘得16位,存放在AX。
两个16位相乘得到32位,DX存在高位,AX存放在低位。
注意对CF,OF有影响,对PF,AF,SF,ZF为不确定
4除法类
(1)除法指令DIV,IDIV
无符号DIV,有符号IDIV
功能:
执行除法运算,除数必须为被除数一半字长。
即只能16位除以8位,或者32位除以16位。
32位被除数一定放在DX和AX中,DX放高16,AX放低16.商在AX中,余数在DX中。
注意:
有符号和无符号数除法操作相同,SRC为通用寄存器或者存储器,不能是立即数。
对有符号数,被除数与除数符号相同。
商的符号为正。
被除数与除数符号不同,商为负。
余数符号和被除数一致。
(2)转换指令CBWCWD
CBW将AL中的符号位扩展到AH,使得8位有符号数转换成16为有符号数
CWD将AX的符号位扩展到DX,使得16位有符号数转换成32位有符号数
5十进制调整
(1)加法十进制调整AAA对非压缩性BCD码进行BCD码调整
DAA对压缩性BCD码加法操作进行BCD码调整。
注意AAA,DAA一般跟在ADD或者ADC后面使用
AAA要求入口ALAF出口AHALAFCF
DAA要求指令入口ALAFCF出口ALAFCF
(2)减法十进制调整AASDAS
AAS对非压缩性BCD码进行BCD码调整
DAS对压缩性BCD码减法操作进行BCD码调整。
(3)乘法十进制调整
AAM对AL调整,结果存在AH,AL中
本指令跟在两个一位非压缩BCD相乘操作后面,将存在AL中乘积调整,存在AX中
(4)除法十进制调整AAD
功能,AAD将AX中非压缩性BCD码调整成二进制,存入AL
3.3.3逻辑运算指令
1逻辑与AND
源操作与目标操作,有零为零,全1为1,结果存入目标操作数
2逻辑或OR
功能:
有1为1,全0为0.结果存入目标操作数
3逻辑非NOT
各位是0为1,是1为0
4逻辑异或XOR
异或是将源操作数和目标操作数对应异或,若对应位相同,结果为0,不同为1
5测试指令TEST
同AND操作,不存结果,只ing想FR,与CMP和SUB相似。
3.3.4位移指令
逻辑左移SHLdest,1
SHLdest,CL
算术左移SALdest,1
SALdest,CL
逻辑右移SARdest,1
SARdest,CL
循环左移ROLdest,1
ROLdest,CL
循环右移RORdest,1
RORdest,CL
带CF循环左移RCLdest,1
RCLdest,CL
带CF循环右移RCRdest,1
RCRdest,CL
3.3.5转移类指令
功能:
将给出的目标地址放入CSIP使得程序发生转移
1无条件转移指令(JMP)
2条件转移JXX
XX为条件当条件成立,转移到制定目标地址处,否则顺序执行程序。
这个条件以FR中一个或几个状态位的状态为依据。
3循环指令(LOOP)
功能:
两字节指令,dest通常为目标地址偏移量或者目标地址标号。
注意:
这类指令隐含CX循环次数计数器。
进入循环前先设好循环次数。
执行循环指令时会使cx-1同时判断CX是否0,若CX=0,停止循环。
4调用指令。
CALLdest
说明:
段内调用CS不变,调用时自动保护断电,将断电IP压栈。
5返回指令
RET
6中断指令
(1)中断指令INTn其中n为中断类型码。
即可以到0000h段中4*n开始的四个单元中找到该程序入口地址。
(2)溢出中断INTO检测OF如果OF=1,启动中断过程(INTn;其中n=4)OF=0时无操作。
(3)中断返回(IRET)当执行中断返回指令时,会自动完成断点出栈(CS出栈,IP出栈)和FR出栈
3.3.6串操作类指令
串传送MOVSdest,src;ES:
【DI】DS:
【SI】将源串数据传送到目标串
串比较CMPSdest,src;DS:
【SI】-ES:
【DI
串搜索SCASdest,src;ALES:
【DI】或AX-ES:
【DI】影响FR从而判断目标串中是否查找到AL或AX中字节。
串读取LODSsrcALDS:
【SI】或AXDS:
【SI】将串中字节或字读到AL或AX中
串写入指令STOSdestES【DI】AL或ES:
【DI】AX,将AL或AX传送到目标串
3.3.7处理器类指令
●标志位操作指令(STC,CLC,CMC,STD,CLD,STI,CLI)
●空操作指令(NOP)
●暂停指令(HLT)
●等待指令(WAIT)
●交权指令(ESC)
●总线锁定指令(LOCK)
1标志位操作指令
1)清CFCLC
2)置CFSTCCF=1
3)清DFCLD
4)置DFSTD
5)清IFCLI
6)置IFSTI
7)CF求反CMC、
2空操作指令NOP执行NOP不影响FR
3暂停指令HLT当中断返回时将返回到HLT下一条指令处
4等待指令WAIT
5交权指令ESC
将内存中操作数送上数据总线
6总线锁定LOCK
迫使嵩县锁定信号LOCK维持低电平,直到执行完下一条指令
第四章
4.1.1计算机语言分类
机器语言
高级语言
汇编语言:
直接控制硬件,执行速度快,占用内存少。
4.1.2汇编语言
1宏汇编语言的语句和格式
1)指令语句【标号】【前缀】助记符操作数【注释】
2)伪指令语句【名字】伪指令【操作数】【注释】
3)宏指令语句名字MACRO
.......;宏体
ENDM
4.2伪指令
定义:
为汇编程序服务,例如定义变量、分配存储空间以及实现某些其他程序的处理功能等。
分类
处理器方式伪指令
模式定义伪指令
段定义伪指令
数据定义伪指令
符号定义伪指令
类型定义伪指令
过程定义伪指令
模块定义伪指令
宏处理伪指令
条件伪指令
列表伪指令
其他伪指令
4.2.1符号表达式的描述规范
1标识符
汇编中指令语句的标号和伪指令语句的符号名称统称标识符。
标号和符号明的区别:
标号后面有冒号,符号明后面没有冒号,标号与具体地址联系,可以作为跳转调用指令的目标操作数,符号名用于定义变量,过程名,段名;标号可以任选或者省略,标号明可以强制,任选,省略。
2操作数
可以是常数,二进制,十进制,十六进制,八进制,实数,字符串常数
4.2.3模式定义伪指令
.MODEL存储模式
.MODELSMALL
.MODELMEDIUM
.MODELCOMPACT
4.2.4段定义伪指令
1完整段定义伪指令
段名SEGMET【定义类型】【组合类型】【字长】【类别】
段名ENDS
ASSUME:
用来同志汇编程序,每个段名代表的段是什么性质的段,处理器访问用哪个寄存器。
ASSUME段寄存器名,段名,段寄存器名:
段名
例如ASSUMECS:
CODE,DS:
DATA
2简化的段定义伪指令
4.2.5数据定义伪指令
变量名DB表达式每个表达式1字节
变量名DW表达式每个表达式2字节
变量名DD表达式每个表达式4字节
变量名DQ表达式每个表达式8字节
变量名DT表达式每个表达式10字节
?
表达式分配存储空间但不设初值
DUP表达式定义重复数据操作
例如DB表达式1DUP(表达式2)定义空间每个1字节,重复表达式1次,内容为表达式2
4.2.6符号定义伪指令
1等值语句EQU
2等号语句
3解除语句
4.2.7类型定义伪指令
1对标号的类型定义
2对变量的类型定义
4.2.8过程定义伪指令
过程名PROC【NEAR】
【RET】
RET
过程名ENDP
4.2.9计数器与定位伪指令
1程序计数器$
2定位伪指令ORG
4.2.10条件汇编伪指令
IFXX
【ELSE】
ENDIF
4.2.11记录与结构伪指令
1记录
(1)定义记录格式
(2)建立记录变量
(3)引用记录
2结构
(1)定义结构格式
(2)建立结构变量
(3)引用结构
4.2.12模块定义伪指令
1NAME
2END
3PUBLIC
4EXTRN
4.3宏指令
4.3.1宏指令定义
格式宏名MACRO【形参,形参。
。
。
。
。
】
。
ENDM
4.3.3宏和子程序区别
红操作没有缩短目标代码长度,内存空间没有减少。
主程序可以多次调用一个子程序,能缩短目标代码长度。
宏操作不会增加额外时间开销,而子程序调用需要保护现场和断点,有额外时间开销。
4.4BIOSDOS调用
重点:
INT21H指令
汇编程序设计步骤
1分析问题
2建立数学模型,确定算法和解决方案
3绘制程序流程图
4规划内存空间
5编制程序静态检查
6调试程序
7整理文档
4.6设计基本方法
1顺序结构
2分支结构
(1)比较
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 8086 微机 原理 总结