电子科技大学成都学院微机原理基础知识点精华.docx
- 文档编号:11211841
- 上传时间:2023-02-25
- 格式:DOCX
- 页数:13
- 大小:124.98KB
电子科技大学成都学院微机原理基础知识点精华.docx
《电子科技大学成都学院微机原理基础知识点精华.docx》由会员分享,可在线阅读,更多相关《电子科技大学成都学院微机原理基础知识点精华.docx(13页珍藏版)》请在冰豆网上搜索。
电子科技大学成都学院微机原理基础知识点精华
8086中,BIU负责取指、读操作数和写结果,而EU负责执行指令。
EU和BIU之间的通信是通过16位的ALU总线和8位指令队列总线来完成的
EU接收指令队列中的指令,进行指令译码、分析,形成各种控制信号,实现EU各个部件完成规定动作的控制。
运算器分为算术逻辑单元ALU(2个16位数据的算术运算。
2个16位数字的逻辑运算16位偏移地址EA的运算)和通用寄存器组:
数据、地址
EU的工作过程1.从BIU的指令队列中取指令字节;
2.EU控制电路进行指令译码、分析;
3.如需要,送操作数的偏移地址至BIU;
4.将BIU取来的操作数送ALU进行运算;
5.存运算结果到通用寄存器或送至BIU;
6.更新标志寄存器。
总线接口单元BIU
▪总线控制逻辑(分时传递地址信息或数据信息)
▪指令队列缓冲器(FIFO用于暂存指令取指令和执行指令可重叠操作)
▪地址生成(4个16位段寄存器,16位指令指针寄存器IP,20位地址产生器)
BIU的工作过程
1.从存储器的指定单元取出指令;
2.将指令送至指令流队列中排队或直接传送给EU
3.把EU的操作结果传送到指定的存储单元或外设端口中
指令队列缓冲器:
FIFO结构,指令队列至少保持有一条指令,且只要有一条指令,EU就开始执行,指令队列只要不满,BIU就会自动执行取指操作,直到填满为止。
当执行转移指令时,EU要求BIU从新的地址中重新取队列中原有指令被清除,新取得的第一条指令直接送EU执行,随后取得的指令填入队列。
地址产生器——产生20位的地址
输入:
段寄存器中的16位段首地址(逻辑地址)从EU中来的16位段内偏移地址(逻辑地址)输出:
20位实际地址(物理地址)8086CPU地址总线宽度——20位;寄存器——16位
物理地址PA=(段首地址(CS、DS、SS、ES提供)左移4位二进制位)+偏移地址(IP或EU部件提供)
AXAHAL累加器(数据寄存器
BXBHBL基址寄存器
CXCHCL计数寄存器通用寄存器组
DXDHDL数据寄存器
SP堆栈指针地址指针及变址寄存器)
BP基址指针
SI源变址指针
DI目的变址指针
IP指令指针控制寄存器组
FLAG标志寄存器
CS代码段寄存器段寄存器组
DS数据段寄存器
SS堆栈段寄存器
ES附加段寄存器
OF:
溢出标志。
1.当进行带符号的补码运算时,算术运算的结果超出了机器所能表达的带符号数的范围,就会产生溢出,OF=1;否则OF=0,表示运算结果无溢出发生。
求解方法:
双进位位法——最高进位位⊕次高进位位
2.两个无符号数相加时,当最高数值位向高位数值位有进位时,即CF=1时表示有溢出;当CF=0时表示无溢出。
SF:
符号标志,运算结果
为负时,SF=1;否则为0
ZF:
全零标志,运算结果各位
都为零,则ZF=1;否则为0
AF:
辅助进位标志,作加法时D3位
向D4位进位,则AF=1;否则为0
PF:
奇偶标志,操作结果的低8位中
含有偶数个1,则PF=1;否则为0
CF:
进位标志,加法时最高位产生进位
或减法时高位产生借位,CF=1;否则为0
IF:
中断允许标志,控制可屏蔽中断的标志,
若IF=1,表示允许CPU接受外部从INTR引线上
发来的可屏蔽中断请求信号;若IF=0,则禁止。
DF:
方向标志,用于控制字符串操作指令的步进方向,
当DF=1时,字符串操作指令将从高地址到低地址的方
向对字符串进行处理;若DF=0时,则相反。
总线周期——CPU访问一次存储器单元或I/O口所需的时间。
总线周期全部由BIU来完成,所以也称为BIU总线周期。
一个基本的总线周期至少由4个时钟周期组成
存储器以字节为单位存储信息。
为区别不同的字节存储单元,每个单元都被指定一个唯一的编号,称为该单元的物理地址(简称PA)。
地址编号从0开始,按顺序加1,一般用十六进制数表示。
因此PC机的内存是以字节单元为单位对内存进行编址
8086地址线有20根,存储器的最大存储空间为1MB(220),因此存储器地址范围为00000H~FFFFFH
:
8086有20根地址线,但寄存器内部可以表示的地址最多只能是16位。
为了能寻址1MB空间,8086对存储器进行逻辑分段,每个段最大为64KB,最小为16B。
采用了段地址加偏移地址的寻址方式CS:
IP,这样最大寻址范围扩大到FFFFF,即1MB。
段基址:
一个逻辑段的起始地址,形如XXXXH。
偏移地址:
段内一个存储单元到达段地址的距离
(16位)。
物理地址PA:
存储单元的实际地址(20位)。
逻辑地址LA:
段基址和偏移地址。
注意:
逻辑地址是在程序指令中引用和操作的地址;而物理地址是在20位地址总线上产生的地址
进栈出栈(二5253)
每个I/O端口都有一个唯一的端口地址,由于只用地址总线的低16位A15~A0来寻址端口地址,所以8086CPU可以访问的I/O端口地址共有64KB,其地址为0000H~FFFFH
无操作数指令,例:
等待指令WAIT
—单操作数指令,例:
加1指令INCAL
—双操作数指令,例:
减法指令SUBAL,BL
目的操作数:
前者(AL)
源操作数:
后者(BL)
用BX、SI、DI默认段寄存器:
DS
用BP默认段寄存器:
SS
寻址方式(三12左右)
对I/O端口的寻址方式有端口直接寻址和端口间接寻址方式两种。
访问I/O端口只能使用其专用指令:
IN和OUT指令。
端口直接寻址:
当端口地址在8位二进制n=00H~FFH范围时才可使用直接寻址方式
端口间接寻址:
当端口地址大于FFH,则只能采用间接寻址方式,必须使用间址寄存器DX,存放I/O端口的地址码
CS、立即数不作目的数
堆栈——以“先进后出”原则组织起来的连续的内存空间。
堆栈操作以字为单位。
固定以SS:
SP为指针指示栈顶,出、入堆栈的操作均针对栈顶单元进行。
80X86的堆栈生长方向为“向下增长”
入栈,指针减
出栈,指针加
入栈操作(三30)
交换指令——XCHG
功能:
将源、目的操作数的内容互相交换,指令执行后源、目的操作数同时被改变
累加器专用传送指令
(1)输入/输出(I/O)指令
①输入指令——IN
功能:
把指定端口中的一个数据(字节或字)输入至AL或AX。
指令形式:
IN累加器,端口地址
INAL,20H;从20H端口输入一个字节至AL
②输出指令——OUT
功能:
把AL或AX中的数据输出到指定的端口。
指令形式:
OUT端口地址,累加器
OUT20H,AL;将AL中一字节输出到20H端口
换码指令——XLAT
功能:
直接查表并读表格中元素值的指令
)换码指令——XLAT
功能:
直接查表并读表格中元素值的指令
目标地址传送指令不是传送操作数,而是传送操作数的地址,把存储单元地址送入指定的寄存器。
(1)有效地址送寄存器指令LEA
①源、目操作数长度必须一致。
②源、目操作数不能同时是存储器操作数。
③源、目操作数不能同时是段寄存器。
④立即数和代码段寄存器CS不能作目操作数。
⑤当目操作数是段寄存器时,源操作数不能是立即数
⑥可以使用段寄存器的指令:
MOV、PUSH、POP。
⑦除XCHG指令外,其它数传指令仅改变目操作数,源操作数保持不变。
⑧除SAHF、POPF指令外,其它数传指令的执行不影响标志位。
不带进位加指令——ADD
带进位位的加法指令——ADC
ADCAL,78H;AL←AL+78H+CF
ADCAX,CX;AX←AX+CX+CF
ADCBX,WORDPTR[DI]
;BX←BX+[DI+1][DI]+CF
加1指令——INC
执行之后影响标志位SF、ZF、AF、PF、OF,但不影响CF
例:
将分别存放在34000H、34200H处的两个4位组合BCD码相加,组合BCD码的结果放在34200H处。
MOVAX,3400H
MOVDS,AX;设置默认段寄存器值
MOVSI,0;使SI指向34000H单元
MOVDI,0200H;使DI指向34200H单元
MOVAL,[SI]
ADDAL,[DI];低2位组合BCD码相加
DAA;调整得组合BCD码,仍在AL中
MOV[DI],AL;组合BCD码结果(低2位)存入34200H处
MOVAL,[SI+1]
ADCAL,[DI+1];高2位组合BCD码相加
DAA
MOV[DI+1],AL;组合BCD码结果(高2位)存入34201H处
MOV[DI+2],0
ADC[DI+2],0;高位的进位存入34202H处
不带借位减法指令——SUB
带借位的减法指令——SBB
比较指令——CMP
形式:
CMPdst,src
判断条件:
1.无符号数比较大小:
CF=0,dst≥src;CF=1,dst<src。
2.两个正数比较大小:
SF=0,dst≥src;SF=1,dst<src。
3.两个带符号数比较大小:
OF⊕SF=0,dst>src;OF⊕SF=1,dst 无论两个有符号数还是无符号数比较是否相等: ZF=1,dst=src 求补指令——NEG 形式: NEGdst;dst←0–dst 无符号数乘法指令: MUL通用寄存器或存储器 带符号数乘法指令: IMUL通用寄存器或存储器 无符号数除法指令: DIV通用寄存器或存储器 带符号数除法指令: IDIV通用寄存器或存储器 小结: ①加、减法的运算结果与两个操作数的长度相等,进、借位反映在标志位上。 ②乘、除法运算仅由指令指定一个操作数,另一个操作数固定为累加器。 ③除了除法和符号扩展指令外,其它算术运算指令均影响状态标志,不同指令对标志位的影响也各不相同。 ④允许使用BCD码进行算术运算。 为了得到正确的BCD码运算结果,应使用相应的十进制调整指令。 ⑤所有的十进制调整均对累加器进行。 加、减、乘法的调整在运算之后进行,只有除法必须先调整,后运算 布尔型指令 (1)与、或、非、异或——AND、OR、NOT、XOR 执行之后影响所有状态标志SF、ZF、AF、PF、CF、OF 例1.把标志寄存器FLAGS中符号标志位SF置1; 2.将标志寄存器FLAGS中跟踪标志位TF置1; 3.将标志寄存器FLAGS中溢出位OF变反。 1.LAHF2.PUSHF ORAH,80HPOPAX SAHFORAX,0100H PUSHAX POPF 3.PUSHF POPAX XORAX,0800H PUSHAX POPF检测指令——TEST 形式: TESTdst,src;dst∧src 如: TESTAL,20H;取AL的D5位 JZBCLR;ZF=1(该位为0)就转到BCLR处 算术左移指令SAL (移空的位全部补0) 算术右移指令SAR (移空的位用原操作数 的符号位补充) 逻辑左移指令SHL (移空的位全部补0) 逻辑右移指令SHR (移空的位全部补0) 无条件转移指令JMP 调用指令CALL —格式: CALL操作数(即目标地址) 返回指令RET —格式: RET RET8位立即数 ★位于被调过程的末尾;必须与CALL指令成对使用 条件转移指令JCC 标志位=1则转移 JS JZ/JE JP/JPE JC JO •判断无符号数大小的指令 JA/JNBE;目操作数>源操作数则转移 JAE/JNB/JC;目操作数≥源操作数则转移 JB/JNAE/JNC;目操作数<源操作数则转移 JBE/JNA;目操作数≤源操作数则转移 •判断带符号数大小的指令 JG/JNLE;目操作数>源操作数则转移 JGE/JNL;目操作数≥源操作数则转移 JL/JNGE;目操作数<源操作数则转移 JLE/JNG;目操作数≤源操作数则转移 LOOP指令: CX-1→CXCX≠0? 是: 转移否: 顺序执行 LOOPZ指令CX-1→CXCX≠0且ZF=1? 是: 转移否: 顺序执行 MOVCX,10 (其它初始条件) NXT: DECCX JCXZLAST (循环执行的指令) JMPNXT LAST: (退出循环后的处理) 以字母开头,由大写字母A~Z小写字母a~z(汇编程序不区分大小写)、数字(0~9)及4个特殊字符(? 、@、$、和_等)组成 名字的命名规则: 字符串长度不能超过31个字符 命名不能使用汇编语言中的保留字 几点注意: ·操作数 如果是两个操作数,中间用逗号隔开 操作数的形式可以有: 常数、寄存器名、标号、变量和表达式 DB——变量为字节数据类型(8位) DW——变量为字数据类型(16位) DD——变量为双字数据类型(32位) DQ——变量为4字数据类型(64位) DT——变量为10字节数据类型(80位) STDB96,20,? -57;以ST为首址连续分配4个字节的存储单元 STRDB‘Howareyou? $’;定义字符串 TWINDB5DUP(0FFH);连续分配5个字节,初值均为0FFH DB100DUP(? );连续分配100个字节单元,初值不定 DATASEGMENT ARE1DB20H,30H ARE2DW2030H ARE3DB‘A’,‘B’ ARE4DW‘AB’ DATAENDS •符号$表示程序下一个所能分配的存储单元的偏移地址 •设DATA的段首地址为2000H •DATASEGMENT •ORG0004H •AVR1DW2030H •AVR2DB40H •DWVRDWOFFSETAVR1 •DDVRDDAVR2 •DATAENDS
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 电子 科技大学 成都 学院 微机 原理 基础 知识点 精华