8086指令归纳

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

8086指令系统总结

学习微处理器及其程序设计,必须掌握微处理器的指令系统。本章以8086 微处理器为例介绍微型计算机的指令系统,包括指令格式、寻址方式和各类指令功能。要明确各种寻址方式的区别和特点,掌握有效地址和物理地址的计算方法,要正确使用指令,掌握各类指令的功能、对标志位的影响和使用上的一些特殊限制。能够编写小汇编程序,初步掌握汇编程序的编写和调试方法。

本章的重点难点内容是:8086 的指令格式及寻址方式,8086 的常用指令和8086 指令前缀的使用。

下面我们分别进行总结:

一.8086寻址方式

(1)操作数是数字,指令中立即写出数字------------立即数寻址

MOV AX,1234H 解释此句意义

(2)操作数是寄存器内容,指令中写出寄存器的符号---------寄存器寻址

MOV AX,BX

(3)操作数是存储单元内容,用括号括出存储单元有效地址-----直接寻址

MOV AX,[1234H]

MOV AX,ES:[1234H]

(4)操作数是存储单元内容,用括号括出寄存器或其表达式,寄存器或其表达式的值为存储单元有效地址-------------间接寻址MOV AH,[BX]

MOV AX,ES:[SI]

MOV AL,[BX+SI+5]===5[BX+SI]===5[BX][SI]

二.8086指令系统

1.数据传送指令

(一)通用传送指令

(1)MOV指令

指令格式:MOV 目,源

功能:将源操作数传送给目标操作数。

(2)堆栈操作指令

进栈指令:PUSH

格式:PUSH 源

功能:将源操作数压入堆栈。

例:用堆栈指令完成上例的功能。

MOV AX,3000H

MOV DS,AX ;段寄存器填充

MOV SI,0100H ;基本指令执

MOV DI,2000H ;行前的初值

MOV CX,50

NT: PUSH [SI] ;程序从这

POP [DI] ;开始设计

INC SI

INC SI

INC DI

INC DI

LOOP NT

MOV AH,4CH

(3)交换指令XCHG

格式:XCHG 目,源

功能:源和目标中的内容交换。

(二)累加器专用传送指令

(1)输入输出指令IN,OUT

输入指令格式:#1 IN AX|AL,8位端口号

#2 IN AX|AL,DX

功能:从外设输入数据到AX|AL寄存器。

输出指令格式:

#1 OUT 8位端口号,AX|AL

#2 OUT DX,AX|AL

功能:将AX|AL中的数据输出到外设。

该类指令是硬件功能与软件作用的结合。

(2)查表转换指令XLAT

指令格式:XLAT

功能:将内存单元[BX+AL]中的内容,置入AL寄存器中。

(三)地址传送指令

地址传送指令有两类:仅传送偏移地址指令及段地址与偏移地址同时传送指令。

(1)仅传送偏移地址指令:LEA

指令格式:LEA 目,源

功能:将源操作数的偏移地址传送给目标寄存器。

如:LEA BX,[2000H]

执行后BX=2000H。

又如:LEA SI,[BX+100H]

若执行前BX=1000H,执行后SI=1100H。

(2)段地址与偏移地址同时传送指令:LDS、LES

指令格式:LDS 目,源

LES 目,源

功能:将源存储器操作数连续4个字节的内容传送给目标寄存器DS寄存器(LDS指令)或ES寄存器(LES指令)。

如:LDS BX,[2000H]

执行前[2000H]=1234H;[2002H]=5678H。

执行后BX=1234H;DS=5678H

又如:LDS SI,[BX+100H]

若执行前BX=1000H,而[1100H]=4321H;[1102]=8765H。

执行后SI=4321H;DS=8765H。

(四)标志传送指令

(1)LAHF指令

指令格式:LAHF

指令功能:将标致寄存器的低八位中以定义位,传送给AH寄存器中对应的位。

(2)SAHF指令

指令格式:SAHF

指令功能:将AH寄存器中对应的位,传送给标致寄存器的低八位中以定义位。

指令格式:PUSHF

指令功能:将标致寄存器内容进栈。

(4)POPF指令

指令格式:POPF

指令功能:从栈顶弹出一个字送入标致寄存器。

2.算术运算

(一)加法指令

加法指令有三类:不带进位加法指令、带进位加法指令和增一指令。

它们均适合与无符号数和有符号数的加法。对于有符号数,其结果用补码表示。

(1)不带进位的加法指令ADD

指令格式:ADD 目,源

指令功能:源+目,其结果放到目标,并影响标志寄存器。

如:ADD AL,50H ;(AL)+50H→AL

(2)带进位的加法指令ADC

指令格式:ADC 目,源

指令功能:源+目+CF,其结果放到目标,并影响标志寄存器。

利用ADC指令可以实现两个多字节数的相加运算。如:1244AFDCH+9A12458FH。

如:ADC AL,50H ;(AL)+50H+CF→AL

(3)增一指令INC

指令格式:INC 目

指令功能:目+1,其结果放到目标,并影响标志寄存器。

(二)减法指令

减法指令包含有五类:不考虑借位减法指令、考虑借位减法指令、减一指令、求补指令和比较指令。它们均适合与无符号数和有符号数的减法。对于有符号数,其结果用补码表示。

(1)不考虑借位减法指令SUB

指令格式:SUB 目,源

指令功能:目-源,其结果放到目标,并影响标志寄存器。

(2)考虑借位减法指令SBB

指令格式:SBB 目,源

指令功能:目-源-CF,其结果放到目标,并影响标志寄存器。

利用SBB指令可以实现两个多字节数的相减运算。如:1244AFDCH-9A12458FH。

(3)减一指令DEC

指令格式:DEC 目

指令功能:目-1,其结果放到目标,并影响标志寄存器。

(4)求补指令NEG

指令格式:NEG 目

指令功能:0-目,其结果放到目标,并影响标志寄存器。

(5)比较指令CMP

指令格式:CMP 目,源

指令功能:目-源,其结果不放到目标,但设置标志寄存器。

用法:

#1 对于两个无符号数的比较,根据CF标志判断两数的大小。

#2 对于两个有符号数比较大小,根据SF和OF标志位来判断两数的大小:

相关文档
最新文档