1、 第3章 微型计算机指令系统3.1 指令系统简介指令系统简介 1.指令 指令是计算机完成某一特定操作的命令。人们要计算机处理的任何问题,都必须转换为计算机能够识别和执行的一步步的操作命令,这些命令用计算机与程序设计员都能识别的信息表示出来,就称其为指令。在计算机系统中,指令的表示形式一般有两种:CPU可直接识别并执行的机器指令。汇编指令。机器指令是以二进制代码的形式表示的,也称目标代码,CPU能够直接执行机器指令,执行速度最快 汇编指令实际上是符号化的机器指令,一条汇编指令必有一条机器指令与之对应。2.汇编指令格式 汇编指令格式由以下几个部分组成:标号:标号:操作码操作码 目的操作数目的操作数
2、 ,源操作数源操作数 ;注释;注释 其中,中的项表示为可选项。例如:LOOP:MOV AL,20H ;A20H.标号:又称为指令地址符号,一般是由16个字符组成,标号是以字母开头的字母-数字串,它与操作码之间用冒号分隔。操作码:是由助记符所表示的指令的操作功能,任何指令都必须具有操作码。操作数:是指参加操作的数据或数据的地址。操作数与操作码之间必须用空格分隔,操作数与操作数之间必须用西文逗号“,”分隔。注释:是为该条指令作的说明,以便于阅读,注释部分不产生目标代码。3.2 8086指令的寻址方式 3.2.1 操作数及分类 在8086指令系统中,操作数分为两大类:1.数据操作数 数据操作数可分为
3、:(1)立即数操作数 (2)寄存器操作数 (3)存储器操作数 (4)输入输出操作数 .转移地址操作数 转移地址操作数是转移指令操作的数据,它是表示地址的数据。3.2.2 8086数据寻址方式 寻址方式就是指令中寻找或获得操作数的方式,它是指令系统中最重要的内容之一。8086数据操作数的寻址方式有以下几种类型:1.立即寻址 立即寻址是指操作数直接存放在指令中。例如:MOV AL,12H ;AL12H.2.寄存器寻址 寄存器寻址是指操作数就在8位或16位通用寄存器中。例如:MOV AL,CL;AL(CL)3.存储器寻址 存储器寻址是指操作数在存储器单元数据区中。8086几种存储器寻址方式如下:(1
4、)直接寻址 指存储器操作数的有效地址(偏移量)就在指令中.例如:MOV AX,1234H ;1234H为源操作数字存储单元的 偏移量.(2)寄存器间接寻址 指存储器操作数的有效地址就在寄存器中。4输入/输出端口寻址方式 在寻址外设端口时,8086CPU提供两种寻址方式:(1)直接端口寻址 在I/O指令中以8位立即数的形式直接给出端口地址 例如:IN AL,20H ;读取端口地址20H单元的 字节数据到AL中.OUT 21H,AL ;将AL的内容输出到端口地址 为21H字节单元中.3.3 8086指令系统 8086指令系统按其功能可分以下6种类型:1)数据传送指令 2)算术运算指令 3)逻辑运算
5、指令 4)串处理指令 5)控制转移指令 6)处理机控制与杂项操作指令 3.3.1 数据传送指令 1.通用数据传送指令通用数据传送指令(1)MOV指令 指令格式:MOV DST,SRC 指令功能:DST (SRC)DST表示寻址目的操作数;SRC表示寻址源操作数(以下表示相同)。指令功能是把源操作数传送到目的操作数.(2)XCHG指令 指令格式:XCHG OPR1,OPR2 OPR1、OPR2分别表示操作数1和操作数2。指令的功能:在操作数OPR1和操作数OPR2之间相互交换数据。3.3.2.算术运算指令 1 加法指令 指令格式:ADD DST,SRC 功能:DST (DST)+(SRC)指令格
6、式:ADC DST,SRC 功能:DST (DST)+(SRC)+CF 指令格式:INC OPR 功能:OPR (OPR)+1(非压缩BCD码调整指令AAA 压缩BCD码调整指令DAA 2.减法指令减法指令 SUB DST,SRC 功能:DST(DST)-(SRC)SBB DST,SRC(带借位的减法指令)功能:DST(DST)-(SRC)-CF 减1指令DEC OPR 功能:OPR(OPR)-1 求补指令 NEG OPR 功能:对操作数的各位取反,末位加1,结果送回目的操作数.比较指令:CMP DST,SRC 功能:用于两个操作数的比较,该指令同SUB指令操作相同,但不传送运算结果。非压缩B
7、CD码调整指令AAS。压缩BCD码调整指令DAS。3.乘法指令乘法指令 无符号数乘法指令:MUL SRC (隐含目的操作数AL/AX/DX)有符号数乘法指令:IMUL SRC (隐含目的操作数AL/AX/DX)4 除法指令除法指令 无符号数除法指令:DIV SRC (隐含目的操作数AX、DX)有符号数除法指令IDIV IDIV SRC (隐含目的操作数AX、DX)5.符号扩展指令符号扩展指令 CWD指令功能:将AX中数的符号扩展到DX寄存器中。CBW指令功能:将AL中数的符号扩展到AH寄存器中。3.3.3 逻辑运算及移位指令1.逻辑运算指令逻辑运算指令 逻辑与指令:AND DST,RSC ;D
8、ST(DST)(RSC)逻辑或指令OR:OR DST,RSC ;DST(DST)(RSC)逻辑非指令NOT:NOTOPR ;OPR的取反指令 逻辑异或指令:XORDST,RSC ;DST(DST)(RSC)测试指令TEST TEST OPR1,OPR2 ;(DST)(RSC)结果影响标志位.2.移位和循环移位指令移位和循环移位指令移位指令是指对操作数进行二进制数的移位操作。逻辑左移指令:SHL DST,CL/1 ;CL/1表示移位次数可以放在CL中或移位1次 逻辑右移指令 SHR DST,CL/1 算术左移指令 SAL DST,CL/1 算术右移指令 SAR DST,CL/1 循环左移指令 R
9、OL DST,CL/1 循环右移指令 ROR DST,CL/1 带进位位CF的循环左移指令RCL RCL DST,CL/1 带进位位CF的循环右移指令 RCR DST,CL/1 3.3.4 串操作类指令数据串是指存储器中连续存储的字节串或字串.串操作的指令由基本串操作指令和重复串操作助记符组成。(1)基本串操作指令:串传送指令MOVB/MOVW串比较指令CMP/BCMPW串搜索指令SCAB/SCASW串存储指令STOSB/STOSW取字符指令LODSB/LODSW(2)重复串操作助记符:可作为重复前缀,与基本串操作指令配合。重复串操作助记符有:REP(重复操作前缀)REPNZ(不为0时重复操作
10、前缀)REPZ(为0时重复操作前缀)3.3.5 控制转移类指令 8086系统提供的控制转移指令包括:无条件转移指令、条件转移指令、循环控制指令、以及子程序调用和中断指令 1.无条件转移指令JMP 格式:JMP DST DST为要转移的目标地址,DST应设计为标号地址,使程序清晰 功能:无条件转移到DST所指向的目标地址执行(程序)2.条件转移指令条件转移指令 条件转移指令的一般格式:JXX lable(标号)其功能:根据运算或比较结果对标志位的影响,来决定下一条要执行指令的目标地址。例如:JC label ;CF=1 有进位/借位时,转标号lable处执行。JNC label ;CF=0 无进
11、位/借位时,转标号lable处执行。见教材表3-3 3 循环指令循环指令 (1)循环控制指令 指令格式:LOOP DST 执行操作:CX (CX)-1若CX0,转标号DST所指定的目标地址执行;若CX=0,则顺序执行。(2)不为零或不相等循环控制指令 指令格式:LOOPNE/LOOPNZ DST 执行操作:CX (CX)-1若CX0且ZF=0,转标号DST所指定的目标地址执行;否则顺序执行。(3)为零/相等时循环控制指令 指令格式:LOOPE/LOOPZ DST 执行操作:CX (CX)-1若CX0且ZF=1,转标号DST所指定的目标地址执行;否则顺序执行。3.3.6.常用处理器控制指令常用处
12、理器控制指令 STC;进位标志位CF置1 CLC;进位标志位CF清0 STD;方向标志位DF置1 CLD;方向标志位DF清0 STI ;中断允许标志位IF置1 CLI;中断允许标志位IF清0 NOP ;空操作指令 HLT;使处理器处于暂停状态 3.5 汇编指令汇编指令EMU8086仿真调试仿真调试 Emu8086-Assembler and Microprocessor Emulator是一个可在Windows 环境下运行的8086CPU汇编仿真软件,是一款学习汇编语言编程的一种组合语言模拟器(虚拟机器)工具。它集成了文本编辑器、编译器、反编译器、真调试、虚拟设备和驱动器为一体,并具有在线使用指南。EMU8086操作过程如下操作过程如下:(1)启动EMU8086 启动EMU8086,单击“new”选项;(2)进入编辑窗口该编辑窗口:文档编辑、指令编译、程序加载、系统工具及在线帮助。(3)对源程序编译输入编辑程序后,单击工具栏上的“compile”按钮,即可完成程序的编译工作(4)仿真调试 在编译对话框中,可以直接单击按钮RUN,即可执行程序并显示仿真运行结果。