微型计算机系统 (4).ppt_第1页
微型计算机系统 (4).ppt_第2页
微型计算机系统 (4).ppt_第3页
微型计算机系统 (4).ppt_第4页
微型计算机系统 (4).ppt_第5页
已阅读5页,还剩53页未读 继续免费阅读

下载本文档

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

文档简介

1、第 4 章,8086指令系统系统,第4章 8086指令系统系统,本章重点: 掌握8086CPU的寻址方式、指令系统中指令的分类及其常用指令的格式和功能。 本章难点: 灵活运用指令解决问题及其快速查阅指令表。,寻址方式是指在指令中用于说明操作数所在地址的方法。8086指令系统把寻址方式分为与数据有关的寻址方式和与地址有关的寻址方式两类。,4.1 寻址方式,(1) 立即寻址方式 定义:有一部分指令所用的8位或16位操作数就直接放在指令中,紧跟在操作码的后面,与操作码一同放在代码段区域中。 用途:主要用来给寄存器或储存单元赋值。 MOV AL,80H,4.1 寻址方式,4.1.1 与数据有关的寻址方

2、式,(2) 寄存器寻址方式 定义:指令中操作数由寄存器提供的寻址方式。 MOV DL,AL INC CX,4.1 寻址方式,4.1.1 与数据有关的寻址方式,(3) 直接寻址方式 定义:有效地址EA在指令的操作码后面直接给出的寻址方式。 说明:默认段寄存器DS,若操作数在其他段,应在指令中使用段跨越前缀。 即:EA=段寄存器:位移量; PA=(段寄存器)左移4位位移量 MOV AX,1000H,4.1 寻址方式,4.1.1 与数据有关的寻址方式,(4) 寄存器间接寻址方式 定义:EA存放在由指令指明的寄存器中;只有通过访问寄存器才间接得到EA。 (BX) (SI)操作数存放在由DS指示的数据段

3、。 (DI) PA=(DS)左移4位+(BX)/(SI)/(DI) (BP)操作数存放在由SS指示的堆栈段中。 PA=(SS)左移4位+(BP) 如果DS=2000H,SI=1000H,21000H=40H, 21001=32H。 MOV AX,SI指令执行后结果:AX=3240H。,4.1.1 与数据有关的寻址方式,(5) 寄存器相对寻址方式 定义: 以寄存器(BX、SI、DI和BP)内容为基地址加上位移量(8位或16位)得到有效地址EA的寻址方式。,4.1 寻址方式,4.1.1 与数据有关的寻址方式,若选择BX、SI、DI寄存器相对寻址,存放操作数的段寄存器默认为DS,若选择BP寄存器相对

4、寻址,则对应的段寄存器默认为SS。如果操作数不在默认段,则要用前缀指出相应的段寄存器名。即操作数的有效地址为:,MOV AX,SI+10H,4.1.1 与数据有关的寻址方式,(6) 基址变址寻址方式 定义:由基址寄存器(BX,BP)的内容加上变址寄存器(SI,DI)的内容得到操作数有效地址EA的寻址方式。 操作数的有效地址为:,MOV AX,BX+DI 设DS=1000H,BX=5000H,DI=2000H,在执行时,有效地址为7000H,指令执行结果为17000H和17001H两单元的内容取到AX中。,4.1.1 与数据有关的寻址方式,(7) 基址变址相对寻址方式 由基址寄存器(BX,BP)

5、的内容加上变址寄存器(SI,DI)的内容,再加上位移量(8位或16位)得到操作数有效地址EA的方式称为基址变址相对寻址方式。 操作数的有效地址为: MOV AX,BX+SI+4500H 若 DS=3000H,BX=2000H,SI=1000H, 37500H=56H,37501H=12H, 指令执行后 AX=1256H。,4.1.1 与数据有关的寻址方式,在8086指令系统中,有一些对指令的地址进行寻址的指令,这种寻址方式叫与地址有关的寻址方式。 (1) 段内直接寻址 用段内直接寻址方式时,指令中给出一个相对位移量,有效转移地址为IP的当前内容再加上一个8位或16位的位移量。段内直接转移寻址也

6、称为相对寻址。,4.1.2与地址有关的寻址方式,(2) 段内间接寻址 用段内间接寻址方式时,有效地址总是在寄存器中或者在内存单元中,段内间接寻址方式可适用于于无条件转移指令和调用指令。 (3) 段间直接寻址 用段间直接寻址方式进行寻址时,指令中要给出转移地址的段值和偏移量。产生转移时,将段值送入CS中,将偏移量送入IP中。用这种寻址方式,可以提供一种使程序从一个代码段转移到另一个代码段的方法。,4.1.2与地址有关的寻址方式,(4) 段间间接寻址 在段间间接寻址方式下产生转移时,IP和CS的内容用内存中2个连续的字来替换。而对这2个内存字,可以通过对数据的各种寻址方式来访问,不过立即数寻址方式

7、和寄存器寻址方式除外。段间转移和段内间接转移必须是无条件转移指令和调用指令。换句话说,条件转移指令只能用段内直接寻址方式,而且转移范围只能是指令所在位置前后的-128+127个单元。,4.1.2与地址有关的寻址方式,80868088的指令系统中包含133条基本指令,可以分为以下六个功能组。 (1)传送指令; (2)逻辑运算和移位指令; (3)控制转移指令; (4)算术运算指令; (5)串操作指令; (6)处理器控制指令。,4.2 8086指令系统,8086数据传送指令有如下四类: (1) 通用传送指令; (2) 累加器专用传送指令; (3) 地址传送指令; (4) 标志传送指令。,4.2 80

8、86指令系统,4.2.1 传送指令,1通用传送指令(General Purpose Transfer) 通用传送指令中包括MOV、XCHG、堆栈和地址传送指令。 (1) 最基本的传送指令 格式:MOV DST,SRC 功能:把一个字节或字的源操作数送到目标操 作数所在的单元。 例: MOV AL,BL ;BL中的8位数据送AL,4.2.1 传送指令,(2) 堆栈操作指令 堆栈操作指令分为:入栈指令PUSH和出栈指令POP。 格式:PUSH SRC 功能:堆栈指针SP减2后,把一个字的源操作数传送到目 的操作数所在的单元。 格式:POP DST 功能:把SP指出的栈顶中的一个字传送到目标操作数所

9、 在的单元,然后加2。 说明:堆栈是按“先进后出”原则工作的一段存储器区 域。 例: PUSH AX ;将AX的内容推入堆栈 PUSH DS ;将DS的内容推入堆栈 POP BX ;将栈顶两单元弹出送BX,4.2.1 传送指令,(3) 交换指令 格式:XCHG DST, SRC 功能:使源操作数与目的操作数相互交换。 说明:交换指令XCHG可以实现字节交换,也 可以实现字交换。 例: XCHG AL,BL XCHG 2530,CX,4.2.1 传送指令,2累加器专用传送指令 累加器专用传送指令主要有输入指令IN、输出指令OUT和换码指令XLAT。 (1) 输入输出指令 格式:IN AL,POR

10、T 功能:把来自端口PORT的一个字节送入AL寄 存器中,4.2.1 传送指令,2累加器专用传送指令 输入输出指令 格式:IN AX,PORT 功能:把来自PORT和PORT +1两个端口的数据构 成一个字送入AX寄存器中 格式:OUT PORT,AL 功能:把AL寄存器中的一个字节送入端口PORT 格式:OUT PORT,AX 功能:把AX寄存器中的一个字送入PORT和PORT+1 两个端口,4.2.1 传送指令,(2) 换码指令(Translate) 格式:XLAT OPRD 功能:设BX指向一张256个字节的表的起点,AL为表的索引值,本指令执行后AL中即为查表所得到的信息,XLAT经常

11、用来把一种代码翻译成另一个代码。,4.2.1 传送指令,3地址传送指令 8086指令系统中,有3条专用于传送地址的指令: LEA、LDS和LES。 (1) 取有效地址指令 格式:LEA REG, SRC 功能:将源操作数的有效地址送到指定寄存器 中。,4.2.1 传送指令,(2) 将地址指针装入DS和另一个寄存器的指令 格式:LDS REG, SRC 功能:把源操作数SRC的前16位送入目标操作数 REG,后16位送入DS寄存器中。 (3) 将地址指针装入ES和另一个寄存器的指令 LES指令和LDS指令的格式及使用方法是类似的,只是LES是将一个地址指针装入ES和另一个寄存器。,4标志传送指令

12、 (1) 读取标志指令(Load AH with Flags) 格式:LAHF 功能:将标志位寄存器中的低8位传送到AH中 说明:将SF、ZF、AF、PF和CF传送到AH寄存器的相应位,即D7、D6、D4、D2和D0位,执行LAHF指令后,AH寄存器的D5、D3、D1位没有意义,如图所示。,4.2.1 传送指令,(2) 设置标志指令(Store AH into Flags) 格式:SAHF 功能:将AH寄存器的相应位传送到标志寄存器低8位。 (3) 对标志寄存器的推入堆栈指令 格式:PUSHF 功能:将标志寄存器的值推入堆栈顶部,同时,栈指针SP的值减2,此指令在执行时标志寄存器的值不变。,4

13、.2.1 传送指令,(4)对标志寄存器的弹出堆栈指令 格式:POPF 功能:在执行时从堆栈中弹出一个字送到标志寄存器中,同时堆栈指针SP的值加2。 PUSHF和POPF指令一般用在子程序和中断处理程序的首尾,起保存主程序标志和恢复主程序标志的作用。,4.2.1 传送指令,算术运算指令共有以下五类:加法运算指令、减法运算指令、乘法运算指令、除法运算指令、转换指令。 1加法指令 (1) 不带进位位的加法指令 格式:ADD DST, SRC 功能:执行源操作数SRC和目的操作数DST的相加操作,结果放在目的操作数的中。,4.2 8086指令系统,4.2.2 算术运算指令,(2) 带进位位的加法指令

14、格式:ADC DST,SRC 功能:ADC与ADD类似,不同的是将进位标志CF 的值加在和中。 ADD AL,50H ADC AX,SI (3) 增量指令 格式:INC SRC 功能:将源操作数的内容加1,再送回该源操 作数。,4.2.2 算术运算指令,2减法指令 (1) 不考虑借位的减法指令 格式:SUB DST,SRC 功能:将目的操作数减去源操作数,结果放在目的操作数中,主要完成2个字节或2个字的相减。 (2) 考虑借位的减法指令 格式:SBB DST,SRC 功能:目的操作数减去源操作数的同时,还要减去CF的值。 SBB AX,2030H,4.2.2 算术运算指令,(3) 减量指令 格

15、式:DEC DST 功能:使目的操作数减1,再送回到目的操作数中。 (4) 求补指令 格式:NEG DST 功能:对目的操作数求补码,结果送回目的操作数中。,4.2.2 算术运算指令,(5) 比较指令 格式:CMP DST,SRC 功能:执行两个数的相减操作,但不送回相减的结果,只是使结果影响标志位AF、CF、OF、PF、SF和ZF。 对于有符号数的比较,要根据OF和SF两者的关系来判断结果。 OF和SF的值相同,则说明被减数比减数大,反之,被减数比减数小。,4.2.2 算术运算指令,3乘法指令 (1) 无符号数的乘法指令 格式:MUL SRC 功能:将AL(8位)或AX(16位)中的数据与源

16、操作数相 乘,结果放在AX或DX与AX两寄存器中。 MUL BL ;AL中的8位数和BL中的8位数相乘, 结果在AX中 (2) 有符号数的乘法指令 格式:IMUL SRC 功能:功能和形式上与MUL很类似,只是要求两个乘数必 须均为有符号数。 IMUL BX ;AX和BX中的两个16位有符号数相 乘,结果在DX和AX中,4.2.2 算术运算指令,4除法指令 符号数的除法指令 格式:DIV SRC 功能:把AX(或DX,AX)中的被除数除以8位 (或16位)源操作数,商数放在AL(或 AX),余数放在AH(或DX)中。 DIV CL ;AX中的数据除以CL中的数 据,商在AL中,余数在AH中,4

17、.2.2 算术运算指令,(2) 有符号数的除法指令 格式:IDIV SRC 功能:与DIV相似,不同的是将除数,被除数,商和余数都看作是带符号数。 IDIV BX;将DX和AX中的32位数除以BX中的16位数,运算后,商在AX中,余数在DX中 除法运算时,要求用16位数除以8位数,或者用32位数除以16位数,当被除数只有8位时,必须将此8位数据放在AL中,并对高8位AH进行扩展。同样,当被除数只有16位,而除数也为16位时,必须将16位被除数放在AX中,并对高16位DX进行扩展。,4.2.2 算术运算指令,(3) 将字节扩展成字的指令 格式:CBW 功能:将AL寄存器中的符号位扩展到AH中。即

18、当AL80H时,执行CBW后,AH=0;当AL80H时,执行CBW后,AH=FFH。 (4) 将字扩展成双字的指令 格式:CWD 功能:用CWD指令将AX中的被除数扩展成双字。,4.2.2 算术运算指令,5BCD码运算指令 (1) BCD码加法十进制调整指令 非组合BCD码的加法调整指令。 格式:AAA 功能:对两个非组合的BCD码相加结果进行调整,产生一个非组合的BCD码。 组合BCD码的加法调整指令。 格式:DAA 功能:对两个组合的BCD码相加结果进行调整,产生一个组合的BCD码。,4.2.2 算术运算指令,(2) BCD码减法十进制调整指令 非组合BCD码的减法调整指令 格式:AAS

19、功能:对两个非组合的BCD码的相减结果进行调整。 组合BCD码的减法调整指令。 格式:DAS 功能:对两个组合的BCD码数据的相减结果进行调整,得到一个组合的BCD码的差。,4.2.2 算术运算指令,(3) 非组合BCD码乘法调整指令 格式:AAM 功能:用于将非组合BCD码乘法的结果(在AL中)转换成两个非组合型BCD码(AH和AL中)。 (4) 非组合BCD码除法调整指令 格式:AAD 功能:常用于DIV指令之前,将AX中的两位非组合BCD码变为二进制数。即:将(AH)10+(AL)送到AL中,0送到AH中。,4.2.2 算术运算指令,逻辑运算和移位指令包括逻辑运算、移位和循环移位指令。

20、1逻辑运算指令 “与”操作指令 格式:AND DST,SRC “或”操作指令 格式:OR DST,SRC “异或”操作指令 格式:XOR DST,SRC 测试指令 格式:TEST DST,SRC 求反指令 格式:NOT SRC,4.2.3 逻辑运算和移位指令,在程序设计中,一般用AND指令对一个数据的指定位清0。OR指令常常用来对一些指定位置1。XOR指令常常用在一些程序的开头使某个寄存器清0,以配合初始化工作的完成。NOT指令常用来将某个数据取成反码。TEST指令一般用来检测指定位是1还是0,而这个指定位往往对应一个物理量。 ANDAL,0FH OR AL,30H XOR AL,0FH TE

21、STAX,8000H NOT AL,2移位指令 非循环移位指令 算术左移指令 格式:SAL DST,SRC 功能:对字或字节各位进行左移,最高位进CF,右端补0 逻辑左移指令 格式:SHL DST,SRC 功能:同SAL,4.2.3 逻辑运算和移位指令, 算术右移指令 格式:SAR DST,SRC 功能:最高位不动,其它各位右移,最低位进CF。 逻辑右移指令 格式:SHR DST,SRC 功能:对字和字节进行右移,最低位进CF,左端补0。,循环移位指令 不带进位位的循环左移指令 格式:ROL DST,SRC 不带进位位的循环右移指令 格式:ROR DST,SRC,循环移位指令 带进位位的循环左

22、移指令 格式:RCL DST,SRC 带进位位的循环右移指令 格式:RCR DST,SRC,串操作指令就是用一条指令实现对一串字符或数据的操作。 1.重复前缀指令 REP ;无条件重复前缀指令 REPE/ REPZ ;条件重复前缀指令 REPNE/ REPNZ ;条件重复前缀指令,4.2.4 串操作指令,2.字符串传送指令 格式:MOVSB/MOVSW 3.字符串比较指令CMPSBCMPSW 格式:CMPSB/CMPSW 4.字符串检索指令SCASBSCASW 格式:SCASB/SCASW 5.取字符串指令LODSBLODSW 格式:LODSB/LODSW,4.2.4 串操作指令,6.存字符串

23、指令STOSBSTOSW 格式:STOSB/STOSW 例如 使0400H开始的256个单元清0的程序段。 CLD ;清除方向标志 LEA DI,0400H ;将目的地址0400H送DI MOV CX,0080H ;共有256个字节 XOR AX,AX ;AX清0 REP STOSW ;将256个字节清0,4.2.4 串操作指令,控制转移指令中包括4类指令:子程序调用和返回指令;无条件转移和条件转移指令;循环控制指令;中断指令和中断返回指令。 1子程序调用和返回指令 (1) 子程序调用指令 格式:CALL 子程序名 功能:保存下一条指令地址,将代码段寄存器CS,指令指针寄存器IP指向调用子程序

24、。,4.2.5 控制转移指令,(2) 子程序返回指令 返回指令 指令格式:RET 功能:从被调用子程序返回CALL指令的下一指令。,4.2.5 控制转移指令, 带参数的返回指令 指令格式:RET n 功能:先执行与RET相同的操作,再修改SP:SPSP+n。 说明:弹出值应为一个16位立即数,通常是偶数。弹出值表示返回时从对堆栈中舍弃的字节数。n可以为0FFFFH范围中的任何一个偶数。 RET 4 ;从栈顶弹出返回地址以后,再使SP的值加上4。,4.2.5 控制转移指令,2无条件转移指令和条件转移指令 (1) 无条件转移指令 格式:JMP 目的地址 功能:将程序无条件的转移到目标地址去执行该地址开始的指令。 (2) 条件转移指令 条件转移指令以某一个标志位的值或者某几个标志位的值作为判断是否进行转移的依据,如果满足指令中所要

温馨提示

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

评论

0/150

提交评论