资源预览内容
第1页 / 共12页
第2页 / 共12页
第3页 / 共12页
第4页 / 共12页
第5页 / 共12页
第6页 / 共12页
第7页 / 共12页
第8页 / 共12页
第9页 / 共12页
第10页 / 共12页
亲,该文档总共12页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
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 位的地址精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 1 页,共 12 页输入:段寄存器中的 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时表示无溢出。精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 2 页,共 12 页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:方向标志,用于控制字符串操作指令的步进方向,当 DF1 时,字符串操作指令将从高地址到低地址的方向对字符串进行处理;若DF0 时,则相反。总线周期 CPU 访问一次存储器单元或I/O口所需的时间。总线周期全部由BIU来完成,所以也称为BIU 总线周期。一个基本的总线周期至少由4 个时钟周期组成存储器以字节为单位存储信息。为区别不同的字节存储单元,每个单元都被指定一个唯一的编号,称为该单元的物理地址(简称PA)。地址编号从0 开始,按顺序加1,一般用十六进制数表示。因此PC 机的内存是以字节单元为单位对内存进行编址8086地址线有 20 根,存储器的最大存储空间为1MB (220),因此存储器地址范围为 00000HFFFFFH : 8086有 20 根地址线,但寄存器内部可以表示的地址最多只能是16 位。为了能寻址 1MB 空间, 8086对存储器进行逻辑分段,每个段最大为64KB ,最小为 16B 。精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 3 页,共 12 页采用了段地址加偏移地址的寻址方式CS:IP ,这样最大寻址范围扩大到FFFFF,即1MB 。段基址:一个逻辑段的起始地址,形如XXXXH 。偏移地址:段内一个存储单元到达段地址的距离(16 位)。物理地址 PA:存储单元的实际地址(20 位)。逻辑地址 LA :段基址和偏移地址。注意:逻辑地址是在程序指令中引用和操作的地址;而物理地址是在20 位地址总线上产生的地址进栈出栈(二 52 53)每个 I/O端口都有一个唯一的端口地址,由于只用地址总线的低16 位 A15 A0来寻址端口地址,所以8086 CPU可以访问的I/O端口地址共有64KB ,其地址为0000H FFFFH 无操作数指令,例:等待指令 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 范围时才可使用直接寻址方式精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 4 页,共 12 页端口间接寻址:当端口地址大于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 精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 5 页,共 12 页功能:直接查表并读表格中元素值的指令目标地址传送指令不是传送操作数,而是传送操作数的地址,把存储单元地址送入指定的寄存器。(1)有效地址送寄存器指令LEA 源、目操作数长度必须一致。 源、目操作数不能同时是存储器操作数。 源、目操作数不能同时是段寄存器。 立即数和代码段寄存器CS 不能作目操作数。 当目操作数是段寄存器时,源操作数不能是立即数 可以使用段寄存器的指令:MOV 、PUSH 、POP 。 除 XCHG 指令外,其它数传指令仅改变目操作数,源操作数保持不变。 除 SAHF 、POPF 指令外,其它数传指令的执行不影响标志位。不带进位加指令 ADD 带进位位的加法指令ADC ADC AL ,78H ;ALAL 78H CF ADC AX,CX ;AXAXCXCF ADC BX,WORD PTRDI ;BX BXDI 1DICF加 1 指令 INC 执行之后影响标志位SF、ZF、AF、PF、OF ,但不影响CF 例:将分别存放在34000H、34200H处的两个 4 位组合 BCD 码相加,组合BCD码的结果放在34200H处。MOV AX,3400H MOV DS,AX ;设置默认段寄存器值MOV SI ,0 ;使 SI 指向 34000H单元精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 6 页,共 12 页MOV DI ,0200H ;使 DI 指向 34200H单元MOV AL,SI ADD AL,DI ;低 2 位组合 BCD 码相加DAA ;调整得组合BCD 码,仍在 AL 中MOV DI,AL ;组合 BCD 码结果(低2 位)存入 34200H处MOV AL,SI+1 ADC AL,DI+1 ;高 2 位组合 BCD 码相加DAA MOV DI+1,AL ;组合 BCD 码结果(高 2 位)存入 34201H处MOV DI+2,0 ADC DI+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 通用寄存器或存储器精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 7 页,共 12 页无符号数除法指令: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 POPF 3. PUSHF POP AX XOR AX, 0800H PUSH AX POPF 检测指令 TEST 精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 8 页,共 12 页形式: TEST dst ,src ;dst src 如: 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 则转移JS JZ/JE JP/JPE JC 精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 9 页,共 12 页JO ?判断无符号数大小的指令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 NXT LAST :(退出循环后的处理)以字母开头,由大写字母AZ小写字母 az (汇编程序不区分大小写)、数字(09)及 4 个特殊字符( ?、$、和 _等)组成名字的命名规则:字符串长度不能超过31 个字符精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 10 页,共 12 页命名不能使用汇编语言中的保留字几点注意:操作数如果是两个操作数,中间用逗号隔开操作数的形式可以有:常数、寄存器名、标号、变量和表达式 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 DUP( 0FFH ) ;连续分配 5 个字节,初值均为0FFH DB 100 DUP( ? ) ;连续分配 100 个字节单元,初值不定DATA SEGMENT ARE1 DB 20H,30H ARE2 DW 2030H ARE3 DB A,B ARE4 DW ABDATA ENDS精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 11 页,共 12 页?符号 $表示程序下一个所能分配的存储单元的偏移地址?设 DATA 的段首地址为2000H ?DATA SEGMENT ?ORG 0004H ?AVR1 DW 2030H ?AVR2 DB 40H ?DWVR DW OFFSET AVR1 ?DDVR DD AVR2 ?DATA ENDS 精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 12 页,共 12 页
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号