电子科技大学成都学院微机原理知识点精华.docx_第1页
电子科技大学成都学院微机原理知识点精华.docx_第2页
电子科技大学成都学院微机原理知识点精华.docx_第3页
电子科技大学成都学院微机原理知识点精华.docx_第4页
电子科技大学成都学院微机原理知识点精华.docx_第5页
已阅读5页,还剩7页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

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部件提供)AX AH AL 累加器 ( 数据寄存器BX BH BL 基址寄存器CX CH CL 计数寄存器 通用寄存器组DX DH DL 数据寄存器 SP 堆栈指针 地址指针及变址寄存器) BP 基址指针 SI 源变址指针 DI 目的变址指针 IP 指令指针 控制寄存器组 FLAG 标志寄存器 CS 代码段寄存器 段寄存器组 DS 数据段寄存器 SS 堆栈段寄存器 ES 附加段寄存器 OF:溢出标志。1. 当进行带符号的补码运算时,算术运算的结果超出了机器所能表达的带符号数的范围,就会产生溢出,OF1;否则OF0,表示运算结果无溢出发生。求解方法:双进位位法最高进位位 次高进位位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:中断允许标志,控制可屏蔽中断的标志,若IF1,表示允许CPU接受外部从INTR引线上发来的可屏蔽中断请求信号;若IF0,则禁止。DF:方向标志,用于控制字符串操作指令的步进方向,当DF1时,字符串操作指令将从高地址到低地址的方向对字符串进行处理;若DF0时,则相反。总线周期CPU访问一次存储器单元或I/O口所需的时间。总线周期全部由BIU来完成,所以也称为BIU总线周期。一个基本的总线周期至少由4个时钟周期组成存储器以字节为单位存储信息。为区别不同的字节存储单元,每个单元都被指定一个唯一的编号,称为该单元的物理地址(简称PA)。地址编号从0开始,按顺序加1,一般用十六进制数表示。因此PC机的内存是以字节单元为单位对内存进行编址8086地址线有20根,存储器的最大存储空间为1MB(220),因此存储器地址范围为00000HFFFFFH: 8086有20根地址线,但寄存器内部可以表示的地址最多只能是16位。为了能寻址1MB空间,8086对存储器进行逻辑分段,每个段最大为64KB,最小为16B。采用了段地址加偏移地址的寻址方式CS:IP,这样最大寻址范围扩大到FFFFF,即1MB。段基址:一个逻辑段的起始地址,形如XXXXH。 偏移地址:段内一个存储单元到达段地址的距离(16位)。 物理地址PA:存储单元的实际地址(20位)。 逻辑地址LA:段基址和偏移地址。 注意:逻辑地址是在程序指令中引用和操作的地址;而物理地址是在20位地址总线上产生的地址进栈出栈(二 52 53)每个I/O端口都有一个唯一的端口地址,由于只用地址总线的低16位A15A0来寻址端口地址,所以8086 CPU可以访问的I/O端口地址共有64KB,其地址为0000HFFFFH无操作数指令,例:等待指令 WAIT 单操作数指令,例:加1指令 INC AL 双操作数指令,例:减法指令 SUB AL,BL 目的操作数:前者(AL) 源操作数:后者(BL)用BX、SI、DI默认段寄存器:DS 用BP默认段寄存器: SS寻址方式(三 12左右)对I/O端口的寻址方式有端口直接寻址和端口间接寻址方式两种。访问I/O端口只能使用其专用指令:IN和OUT指令。 端口直接寻址:当端口地址在8位二进制n=00HFFH范围时才可使用直接寻址方式端口间接寻址:当端口地址大于FFH,则只能采用间接寻址方式,必须使用间址寄存器DX,存放I/O端口的地址码CS、立即数不作目的数堆栈以“先进后出”原则组织起来的连续的内存空间。 堆栈操作以字为单位。固定以SS:SP为指针指示栈顶,出、入堆栈的操作均针对栈顶单元进行。80X86的堆栈生长方向为“向下增长” 入栈,指针减出栈,指针加入栈操作(三 30)交换指令XCHG 功能:将源、目的操作数的内容互相交换,指令执行后源、目的操作数同时被改变累加器专用传送指令(1) 输入/输出(I/O)指令 输入指令IN 功能:把指定端口中的一个数据(字节或字)输入至AL或AX。 指令形式:IN 累加器,端口地址 IN AL,20H ;从20H端口输入一个字节至AL 输出指令OUT 功能:把AL或AX中的数据输出到指定的端口。 指令形式: OUT 端口地址, 累加器 OUT 20H,AL ;将AL中一字节输出到20H端口 换码指令XLAT 功能:直接查表并读表格中元素值的指令) 换码指令XLAT 功能:直接查表并读表格中元素值的指令目标地址传送指令不是传送操作数,而是传送操作数的地址,把存储单元地址送入指定的寄存器。(1)有效地址送寄存器指令LEA 源、目操作数长度必须一致。 源、目操作数不能同时是存储器操作数。 源、目操作数不能同时是段寄存器。 立即数和代码段寄存器CS不能作目操作数。 当目操作数是段寄存器时,源操作数不能是立即数 可以使用段寄存器的指令:MOV、PUSH、POP。 除XCHG指令外,其它数传指令仅改变目操作数,源操作数保持不变。 除SAHF、POPF指令外,其它数传指令的执行不影响标志位。 不带进位加指令ADD带进位位的加法指令ADCADC AL,78H ;ALAL78HCF ADC AX,CX ;AXAXCXCF ADC BX,WORD PTRDI ;BXBXDI1DICF加1指令INC执行之后影响标志位SF、ZF、AF、PF、OF ,但不影响CF例:将分别存放在34000H、34200H处的两个4位组合BCD码相加,组合BCD码的结果放在34200H处。MOVAX,3400HMOVDS,AX ;设置默认段寄存器值MOVSI,0 ;使SI指向34000H单元MOVDI,0200H ;使DI指向34200H单元MOVAL,SIADDAL,DI ;低2位组合BCD码相加DAA ;调整得组合BCD码,仍在AL中MOVDI,AL ;组合BCD码结果(低2位)存入34200H处MOVAL,SI+1ADCAL,DI+1 ;高2位组合BCD码相加DAAMOVDI+1,AL ;组合BCD码结果(高2位)存入34201H处MOVDI+2,0ADCDI+2,0 ;高位的进位存入34202H处不带借位减法指令SUB带借位的减法指令SBB比较指令CMP形式: CMP dst , src判断条件:1. 无符号数比较大小:CF=0,dst src; CF=1,dst src。2. 两个正数比较大小: SF=0,dst src; SF=1,dst src。3. 两个带符号数比较大小:OFSF=0,dstsrc; OFSF=1,dstsrc 无论两个有符号数还是无符号数比较是否相等:ZF=1, dst=src求补指令NEG形式: NEG dst ;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. LAHF 2. PUSHF OR AH, 80H POP AX SAHF OR AX, 0100H PUSH AX POPF3. PUSHF POP AX XOR AX, 0800H PUSH AXPOPF 检测指令TEST 形式: TEST dst,src ;dstsrc 如:TEST AL,20H ;取AL的D5位 JZ BCLR ;ZF=1(该位为0)就转到BCLR处算术左移指令SAL (移空的位全部补0)算术右移指令SAR(移空的位用原操作数 的符号位补充)逻辑左移指令SHL(移空的位全部补0)逻辑右移指令SHR(移空的位全部补0)无条件转移指令JMP调用指令CALL 格式:CALL 操作数(即目标地址)返回指令RET 格式: RET RET 8位立即数 位于被调过程的末尾;必须与CALL指令成对使用条件转移指令JCC标志位1则转移JSJZ/JEJP/JPEJCJO 判断无符号数大小的指令JA/JNBE ;目操作数源操作数则转移JAE/JNB/JC ;目操作数 源操作数则转移JB/JNAE/JNC ;目操作数 源操作数则转移JBE/JNA ;目操作数 源操作数则转移 判断带符号数大小的指令JG/JNLE;目操作数源操作数则转移JGE/JNL;目操作数 源操作数则转移JL/JNGE;目操作数 源操作数则转移JLE/JNG;目操作数 源操作数则转移LOOP指令:CX1CX CX0? 是:转移 否:顺序执行LOOPZ指令CX1CX CX0且ZF1? 是:转移 否:顺序执行MOV CX,10 (其它初始条件)NXT:DEC CX JCXZ LAST (循环执行的指令) JMP NXTLAST:(退出循环后的处理)以字母开头,由大写字母AZ小写字母az(汇编程序不区分大小写)、数字(09)及4个特殊字符(?、$、和_等)组成名字的命名规则:字符串长度不能超过31个字符命名不能使用汇编语言中的保留字几点注意: 操作数如果是两个操作数,中间用逗号隔开操作数的形式可以有:常数、寄存器名、标号、变量和表达式 DB 变量为字节数据类型(8位)DW 变量为字数据类型(16位)DD 变量为双字数据类型(32位)DQ 变量为4字数据类型(64位)DT 变量为10字节数据类型(80位)ST DB 96, 20, ?, 57 ; 以ST为首址连续分配4个字节的存储单元 STR DB How are you ? $ ; 定义字符串 TWIN DB 5 D

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论