欢迎来到三一办公! | 帮助中心 三一办公31ppt.com(应用文档模板下载平台)
三一办公
全部分类
  • 办公文档>
  • PPT模板>
  • 建筑/施工/环境>
  • 毕业设计>
  • 工程图纸>
  • 教育教学>
  • 素材源码>
  • 生活休闲>
  • 临时分类>
  • ImageVerifierCode 换一换
    首页 三一办公 > 资源分类 > PPT文档下载  

    《指令系统系统》PPT课件.ppt

    • 资源ID:5515951       资源大小:735KB        全文页数:134页
    • 资源格式: PPT        下载积分:15金币
    快捷下载 游客一键下载
    会员登录下载
    三方登录下载: 微信开放平台登录 QQ登录  
    下载资源需要15金币
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    《指令系统系统》PPT课件.ppt

    第 4 章,8086指令系统系统,第4章 8086指令系统系统,本章重点:掌握8086/8088 CPU的寻址方式、指令系统中指令的分类及其常用指令的格式和功能。本章难点:灵活运用指令解决问题及其快速查阅指令表。,概述,指令是微处理器执行某种操作的命令,微处理器全部指令的集合称为指令系统(指令集)。指令有两种书写格式:机器指令和符号指令。机器指令指令的二进制数描述硬件只能识别机器指令,用机器指令书写的程序可以直接运行符号指令用规定的助记符和规定的书写格式书写的指令与机器指令一一对应,需要翻译成机器指令才能运行10110000 00000001 MOV AL,1,1.指令,2.程序,程序是为解决某一问题而编写在一起的指令序列机器语言程序:由机器指令书写的程序汇编语言程序:由符号指令书写的程序高级语言程序:由高级语言书写的程序,高级语言的基础是语句,而不是处理器的指令系统,汇编语言程序和高级语言程序必须先翻译成机器语言程序才能执行。这一翻译过程对汇编语言程序叫做汇编(assemble),对高级语言程序叫做编译(compilation)或解释(interpretation),符号指令的书写格式为:标号:操作码助记符 操作数助记符;注释标号代表该指令在存储器中的地址,为分支、循环提供转移目标。可选操作码助记符如ADD,MOV等,指出指令要实现的功能操作数是指令操作的对象。当一条指令需要一个以上的操作数时,操作数间用逗号分隔,逗号前为目标操作数,逗号后为源操作数。注释可增强可读性。可选,3.X86系列微处理器指令系统的发展,基本指令集,8086/8088116条指令,基本指令集,增,强,指,令,集,系,统,控,制,指,令,集,保护模式,实模式,Pentium306条指令,4.1 寻址方式,寻址方式:寻址方式是指在指令中用于说明操作数所在地址的方法。8086指令系统把寻址方式分为与数据有关的寻址方式和与地址有关的寻址方式两类。操作数有三种可能的存放方式:直接包含在指令中 立即数 立即寻址包含在某个寄存器中 寄存器操作数 寄存器寻址在内存中 存储器操作数(内存操作数)存储器寻址,(1)立即寻址方式 定义:有一部分指令所用的8位或16位操作数就直接放在指令中,紧跟在操作码的后面,与操作码一同放在代码段区域中。用途:主要用来给寄存器或储存单元赋值。MOV AL,80H,4.1 寻址方式,4.1.1 与数据有关的寻址方式,(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 与数据有关的寻址方式,指令中的操作数部分直接给出操作数的有效地址EA,操作数可以是16位或32位整数,操作数默认在DS段中MOV AX,3000H,低地址,高地址,CS段,操作码,00H,30H,34H,12H,34H,12H,AX,DS段,50000,53000,DS,5000,0,3000,53000,+,如果操作数在DS以外的其他段(CS,SS,ES)中,指令中必须包含段超越前缀MOV AX,ES:3000H,低地址,高地址,CS段,操作码,00H,30H,34H,12H,34H,12H,AX,FS段,20000,23000,ES,2000,0,3000,23000,+,(4)寄存器间接寻址方式定义:EA存放在由指令指明的寄存器中;只有通过访问寄存器才间接得到EA。(BX)(SI)操作数存放在由DS指示的数据段。(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 与数据有关的寻址方式,低地址,高地址,CS段,操作码,34H,12H,34H,12H,AX,SS段,70000,73000,SS,7000,0,3000,73000,+,MOV AX,BP,BP,(5)寄存器相对寻址方式定义:以寄存器(BX、SI、DI和BP)内容为基地址加上位移量(8位或16位)得到有效地址EA的寻址方式。,4.1 寻址方式,4.1.1 与数据有关的寻址方式,低地址,高地址,CS段,操作码,00H,15H,34H,12H,34H,12H,DX,DS段,70000,73500,BX,1500,73500,+,MOV DX,BX+1500,DS,7000,0,2000,若选择BX、SI、DI寄存器相对寻址,存放操作数的段寄存器默认为DS,若选择BP寄存器相对寻址,则对应的段寄存器默认为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)的内容加上变址寄存器(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 与数据有关的寻址方式,单元(0,0),单元(0,1),单元(0,n),(位移量),二维数组的基址加变址寻址方式,基址寄存器,+,MOV AX,BX+SI+100H,单元(m,n),变址寄存器,+,在8086指令系统中,有一些对指令的地址进行寻址的指令,这种寻址方式叫与地址有关的寻址方式。(1)段内直接寻址 用段内直接寻址方式时,指令中给出一个相对位移量,有效转移地址为IP的当前内容再加上一个8位或16位的位移量。段内直接转移寻址也称为相对寻址。,与地址有关的寻址方式,(2)段内间接寻址 用段内间接寻址方式时,有效地址总是在寄存器中或者在内存单元中,段内间接寻址方式可适用于于无条件转移指令和调用指令。(3)段间直接寻址 用段间直接寻址方式进行寻址时,指令中要给出转移地址的段值和偏移量。产生转移时,将段值送入CS中,将偏移量送入IP中。用这种寻址方式,可以提供一种使程序从一个代码段转移到另一个代码段的方法。,与地址有关的寻址方式,(4)段间间接寻址 在段间间接寻址方式下产生转移时,IP和CS的内容用内存中2个连续的字来替换。而对这2个内存字,可以通过对数据的各种寻址方式来访问,不过立即数寻址方式和寄存器寻址方式除外。段间转移和段内间接转移必须是无条件转移指令和调用指令。换句话说,条件转移指令只能用段内直接寻址方式,而且转移范围只能是指令所在位置前后的-128+127个单元。,与地址有关的寻址方式,总结:寻址方式既针对源操作数,也针对目标操作数实模式下段的最大长度为64KB,因此必须保证有效地址不超过FFFFH立即 寄存器 寄存器间接 寄存器相对 直接 基址变址 相对基址变址,80868088的指令系统中包含133条基本指令,可以分为以下六个功能组。(1)传送指令;(2)逻辑运算和移位指令;(3)控制转移指令;(4)算术运算指令;(5)串操作指令;(6)处理器控制指令。,4.2 8086指令系统,8086数据传送指令有如下四类:(1)通用传送指令;(2)累加器专用传送指令;(3)地址传送指令;(4)标志传送指令。,4.2 8086指令系统,4.2.1 传送指令,1通用传送指令(General Purpose Transfer)通用传送指令中包括MOV、XCHG、堆栈和地址传送指令。(1)最基本的传送指令格式:MOV DST,SRC功能:把一个字节或字的源操作数送到目标操 作数所在的单元。例:MOV AL,BL;BL中的8位数据送AL,4.2.1 传送指令,MOV MEM,REGMOV REG,MEMMOV REG1,REG2MOV REG,DATAMOV MEM,DATAMOV SREG,REGMOV SREG,MEMMOV REG,SREGMOV MEM,SREG,具体指令,可以字型,也可以字节型,但是必须匹配,只能是字型操作,MOV AX,100MOV AX,100H的区别?,操作数即可以是字节型,也可以是字型,但两个类型必须相同。两个操作数不能都是存储器操作数代码段寄存器不能是目标操作数段寄存器不能直接用立即数赋值两个操作数必须有一个能确定类型所有MOV指令不影响标志寄存器,注意:,(2)堆栈操作指令 堆栈操作指令分为:入栈指令PUSH和出栈指令POP。格式:PUSH SRC功能:堆栈指针SP减2后,把一个字的源操作数传送到目 的操作数所在的单元。格式:POP DST功能:把SP指出的栈顶中的一个字传送到目标操作数所 在的单元,然后加2。说明:堆栈是按“先进后出”原则工作的一段存储器区 域。例:PUSH AX;将AX的内容推入堆栈 PUSH DS;将DS的内容推入堆栈 PUSH BX;将栈顶两单元弹出送BX,4.2.1 传送指令,注释,所有堆栈操作都是16位的操作除CS外,段寄存器都可以作为POP的操作数栈操作不允许立即数不影响标志寄存器,(3)交换指令格式:XCHG DST,SRC功能:使源操作数与目的操作数相互交换。说明:交换指令XCHG可以实现字节交换,也 可以实现字交换。例:XCHG AL,BL XCHG 2530,CX,4.2.1 传送指令,注释,可以字节,也可以字操作,但是类型要一致不能出现段寄存器不能两个存储器操作数不能有立即数不影响标志寄存器,2累加器专用传送指令 累加器专用传送指令主要有输入指令IN、输出指令OUT和换码指令XLAT。(1)输入输出指令格式:IN AL,PORT功能:把来自端口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 传送指令,注释,可以8位也可以16位,8位时AL,16位时AX若端口地址小于256,可以直接在指令中给出,否则必须由DX提供端口地址所有输入或输出必须借助累加器AL或AX 传输,其他寄存器不行,(2)换码指令(Translate)格式:XLAT OPRD 功能:设BX指向一张256个字节的表的起点,AL为表的索引值,本指令执行后AL中即为查表所得到的信息,XLAT经常用来把一种代码翻译成另一个代码。,4.2.1 传送指令,3地址传送指令 8086指令系统中,有3条专用于传送地址的指令:LEA、LDS和LES。(1)取有效地址指令 格式:LEA REG16,MEM 功能:将源操作数的有效地址送到指定寄存器 中。,4.2.1 传送指令,(2)将地址指针装入DS和另一个寄存器的指令格式:LDS REG16,MEM功能:把源操作数SRC的前16位送入目标操作数 REG,后16位送入DS寄存器中。(3)将地址指针装入ES和另一个寄存器的指令 LES REG16,MEM LES指令和LDS指令的格式及使用方法是类似的,只是LES是将一个地址指针装入ES和另一个寄存器。,4标志传送指令(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.2.1 传送指令,(4)对标志寄存器的弹出堆栈指令 格式:POPF 功能:在执行时从堆栈中弹出一个字送到标志寄存器中,同时堆栈指针SP的值加2。PUSHF和POPF指令一般用在子程序和中断处理程序的首尾,起保存主程序标志和恢复主程序标志的作用。,4.2.1 传送指令,总结,所有传输类指令,除POPF和SAHF外,均不影响标志寄存器所有传输类指令不允许两个操作数均为存储器操作数(堆栈指令除外)要注意段寄存器的搭配使用注意数据类型,默认的段寄存器搭配,操作 段寄存器 段内地址 段跨越 示例取指令 CS IP 无源串 DS SI CS,ES,SS MOVS DI,CS:SI目标串 ES DI 无 MOVSW堆栈 SS SP 无 POP AX通用数据操作无BP参与 DS 各种有效地址 CS,ES,SS MOV AL,2000H有BP参与 SS 各种有效地址 CS,ES,DS MOV AL,ES:BP,已知(BX)=2000H,(DI)=3000H,(SS)=4000H,(DS)=6000H,(SS)=5000H,66000H单元的内容为28H,则指令MOV AL,BX+DI+1000H的执行结果是_。指令“MOV AX,BX”源操作数的寻址方式为_。8086的I/O指令有_和_两种寻址方式。设当前的(SP)=0100H,执行PUSH AX指令后,(SP)=_H,在寻址方式中,可作基址寄存器的有_、_。若(DS)=2000H,(ES)=2100H,(CS)=1500H,(SI)=00A0H,(BX)=0100H,(BP)=0010H,数据量COUNT的偏移地址为0050H,则执行指令LEA AX,BXSI 之后,(AX)=_H,源操作数是_寻址方式。指令LEA DX,BUFFER 的功能是将_传送给DX。累加器专用传送指令IN间接访问I/O端口,端口号地址范围为_。,针对源操作数按下列寻址方式各举出一条指令(1)直接寻址方式 指令:(2)寄存器间接寻址方式 指令:(3)寄存器相对寻址方式 指令:(4)基址加变址寻址方式 指令:(5)寄存器方式 指令:IBM-PC有哪些寄存器可用来指示存储器偏移地址?,MOV DS,1000H LEA BX,DATA;变量名()执行下列指令可以将其00H送到端口地址为2F8H的外设上:()MOV AL,00H MOV DX,2F8H OUT DX,ALMOV WORD PTR BX,1000H()IN AL,N;(N255)()MOV BXDI,10()MOV DS,AX()MOV CS,AX(),执行下列指令可以将00H送到端口地址为1A0H的外设上。MOV AL,00H MOV 1A0H,AL()MOV BX,1000()MOV ES,3F00H()PUSH AL()IN AL,DX()MOV BX,SI()XCHG CS,AX()XCHG BX,IP()PUSH CS()PUSH SS()POP ES()IN BX,DX(),算术运算指令共有以下五类:加法运算指令、减法运算指令、乘法运算指令、除法运算指令、转换指令。1加法指令(1)不带进位位的加法指令格式:ADD DST,SRC功能:执行源操作数SRC和目的操作数DST的相加操作,结果放在目的操作数的中。,4.2 8086指令系统,4.2.2 算术运算指令,(2)带进位位的加法指令格式: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)减量指令格式: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位)中的数据与源操作数相 乘,结果放在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.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中。即当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功能:对两个非组合的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 算术运算指令,作业1.将物理地址为1F784H字单元的内容,送到物理地址为89764H单元2.不用加法指令,计算4567H+6487H的值,送到DX寄存器,3.如BUFFER为数据段中0032单元的符号地址其中存放的内容为2345H,试问以下两条指令有什么区别?指令执行完成后AX寄存器的内容是什么?(1)MOV AX,BUFFER(2)LEA AX,BUFFER,一个32位数存放在DX,AX中,试编写一段程序,对这个32位数求补,结果仍然存放在DX,AX中。内存中有8位无符号变量X,Y,Z和16位变量W,编程计算 W=(X+Y)*Z/100+45)*Y,逻辑运算和移位指令包括逻辑运算、移位和循环移位指令。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 TESTAX,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,循环移位指令 带进位位的循环左移指令格式:RCL DST,SRC 带进位位的循环右移指令格式:RCR DST,SRC,4.2.4 串操作指令,数据串是存储器中的一串字节或字的序列,长度可达64KB。串操作指令用于对存储器中的一串连续字符或数值以字节、字、双字单元进行操作处理,包括串传送MOVS,串装入LODS,串存储STOS,串比较CMPS,串扫描SCAS.,1.字符串传送指令格式:MOVSB/MOVSW,4.2.4 串操作指令,该指令把SI作为指针的源串中的一个字节或是字,传送到以DI为指针的目的串中,并修改相应两个指针以指向下一个单元.,ES:(DI)DS:(SI)(DI)(DI)2(SI)(SI)2,2.字符串比较指令CMPSBCMPSW格式:CMPSB/CMPSW,4.2.4 串操作指令,DS:(SI)-ES:(DI)(SI)1或2,(DI)1或2,该指令由SI作为指针的源串和由DI作为指针的目的串进行比较,比较之后的结果反映在标志位上,结果不保存,同时修改SI和DI的值.,3.字符串检索指令SCASBSCASW格式:SCASB/SCASW,4.2.4 串操作指令,字节操作:(AL)-ES:(DI),(DI)(DI)1字操作:(AX)-ES:(DI),(DI)(DI)2,该指令用于搜索内存单元中与AL或AX寄存器中内容相同的单元.,4.取字符串指令LODSBLODSW格式:LODSB/LODSW,4.2.4 串操作指令,字节操作:(AL)DS:(SI)(SI)(SI)1字操作:(AX)DS:(SI)(SI)(SI)2,该指令把有SI指向的源串送到AL或AX中,同时修改SI的值.该指令不影响标志位.,5.存字符串指令STOSBSTOSW格式:STOSB/STOSW,4.2.4 串操作指令,字节操作:ES:(DI)(AL),(DI)(DI)1字操作:ES:(DI)(AX),(DI)(DI)2,该指令将AL或AX中的内容送到内存DI指向的单元中,数据传送完后,DI的内容自动修改.该指令不影响标志位,6.重复前缀指令 REP;无条件重复前缀指令 REPE/REPZ;条件重复前缀指令 REPNE/REPNZ;条件重复前缀指令,4.2.4 串操作指令,重复前缀,REP1。判断CX是否为0,若是,结束本指令,否则2 2。执行其后的 串指令 3。(CX)-1-(CX)4。转1。REPZ/REPE1。若CX为0或ZF=0,结束本指令,否则2 其余同上REPNZ/REPNE1。若CX为0或ZF=1,结束本指令,否则2 其余同上,例如 使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 串操作指令,串操作指令的使用约定,源串默认放在数据段中,用SI指出逻辑地址,目的串默认放在附加段中,用DI指出逻辑地址。用DF标志位确定指针的移动方向。串指针的修正是自动完成的,每处理一个元素,修正一次,指向下一个元素。用CX存放字符串的长度。,例题:在当前附加段中从STRING开始存放一个有300个字符的字符串,查找该串中是否存在字符“*”,如果存在,将第一个“*”的地址送到BX寄存器中。大家分析该题目如何完成,控制转移指令中包括4类指令:子程序调用和返回指令;无条件转移和条件转移指令;循环控制指令;中断指令和中断返回指令。1子程序调用和返回指令(1)子程序调用指令 格式:CALL 子程序名 功能:保存下一条指令地址,将代码段寄存器CS,指令指针寄存器IP指向调用子程序。,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)条件转移指令 条件转移指令以某一个标志位的值或者某几个标志位的值作为判断是否进行转移的依据,如果满足指令中所要求的条件,则产生转移,否则往下执行条件转移指令后面的一条指令。条件转移指令的具体形式 如下表所示。,4.2.5 控制转移指令,例题:编制程序段,完成如下功能:如果AX的值为负值,则将-1送到AX;如果AX的值为0,则将0送到AX;如果AX的值为正值,则将1送到AX。大家考虑应该如何完成,CMP AX,0 JL L1 JE L3 MOV AX,1 JMP L3 L1:MOV AX,-1 L3:。,CMP AX,0 JL L1 JNE L2 JMP L3 L1:MOV AX,-1 JMP L3 L2:MOV AX,1 L3:。,3循环控制指令(1)LOOP指令格式:LOOP 目的地址功能:先将CX的内容减1,再判断CX中是否为0,如不为0,则继续循环,如为0,则退出循环,执行下一条指令。(2)LOOPZLOOPE指令 格式:LOOPZ/LOOPE 目的地址 功能:同一条指令的两个不同的助记符。在执行时,使CX减1,再判断CX中的值是否为0,并且判断ZF是否为1。如果ZF=0,或者CX=0,则退出循环,只有在ZF=1,并且CX0的情况下,才继续循环。(3)LOOPNZLOOPNE 格式:LOOPNZ/LOOPNE 目的地址,4.2.5 控制转移指令,例题:将物理地址为20000H到20870H的所有单元中存放其地址低8位的值。即:(20000H)=00H,(20001H)=01H 应该如何完成呢?,MOV AX,2000H MOV DS,AX MOV BX,0000H MOV CX,871H NEXT:MOV BX,BL INC BX LOOP NEXT,8086指令系统,4中断指令和中断返回指令(1)中断指令格式:INT n功能:用于产生软件中断,以调用中断类型号为n的中断服务程序。n为一个8位立即数,取值范围为0255。(2)溢出中断指令格式:INTO(3)中断返回指令格式:IRET功能:将堆栈中的断点地址弹出赋给IP和CS,并弹出标志寄存器值,以实现中断返回,恢复中断前的状态。,4.2.5 控制转移指令,1标志操作指令CLC;进位标志位CF清0(clear carry)STC;进位标志位CF置1(set carry)CMC;进位标志位CF取反(complement carry)CLD;方向标志位DF清0(clear direction)STD;方向标志位DF置1(set direction),4.2.6 处理器控制指令,2外部同步指令 格式:HLT;暂停指令格式:WAIT;等待指令格式:ESC;交权指令格式:NOP;空操作指令格式:LOCK;封锁指令,4.2.6 处理器控制指令,部分8086/8088常用指令,JMP,JXX,LOOP,CALL/RET,INT/IRET,控制转移,MOVS,CMPS,SCAS,LODS,STOS,串操作,SHL/SHR/SAR,ROL/ROR,RCL/RCR,移位,AND,OR,NOT,XOR,TEST,逻辑,MUL,IMUL,DIV,IDIV,乘/除法,SUB,SBB,DEC,NEG,CMP,减法,ADD,ADC,INC,加法,算术运算,IN,OUT,输入输出,LEA,LDS,LES,地址传送,MOV,PUSH/POP,XCHG等,数据传送,数据传送,助记符,指令类型,结束语,掌握:掌握8086/8088的寻址方式了解8086/8088指令系统概况掌握每一条指令的功能、汇编格式及用法,练习题,需要大家自己完成,1.判断下列指令是否正确 MOV DS,1000H()LEA BX,DATA;变量名()ADD AL,DAT1BX()MOV WORD PTR BX,1000H()IN AL,N;(N255)()MOV BXDI,10()MOV DS,AX()MOV CS,AX()MOV BX,1000()MOV ES,3F00H()PUSH AL()SHL AX,2()IN AL,DX()MOV BX,SI()JMP BX(),错,对,对,对,错,错,对,错,错,错,错,错,对,错,对,MOV DATA1,DATA2;两个均为变量名()XCHG CS,AX()MOV BYTE PTR BX,1000H()XCHG BX,IP()PUSH CS()PUSH SS()POP CS()POP ES()IN BX,DX()MOV AL,BX+10H(),错,错,错,错,对,对,错,对,错,对,2.已知在DAT至DAT+2单元中分别有八位无符号数a、b和c,试编写一个程序段计算表达式(a*b+c)/a,商和余数分别存入RES和RES+1单元。3.在数据区从BLOCK开始有若干个非0字型带符号数,并以0结尾,编程统计其中共有多少个数,其中正数有多少个,负数有多少个,分别存放在ALL,PLUS,MINUS三个字单元中。4.编写一个完整的8086汇编语言程序,从附加段中首地址为ADR1(变量名)连续存放的100个字型无符号整数中找出最大数,并将此数及其偏移地址分别放入变量MAX和MAXM中。,5.编写一汇编语言程序,实现将数据段中首地址为1000H(偏移地址)的100个连续存放的字节型数据搬移至该段内首地址为1050H(偏移地址)的连续的100个内存单元中。6.从100个带符号数中寻找最大值,结果放在MAX单元,只要写出实现功能的程序段即可。7.阅读下面一段程序,写出该程序执行后寄存器中的内容。MOV AX,1234H MOV CL,4 ROL AX,CL DEC AX MOV CX,4 MUL CX(AX)=_,8.将LM开始到LM+100的内存区中的一组数据按与原来相反的次序存储到PM到PM+100的内存区。9.求123的直到和刚好大于1000,保存实际结果到Y中和项数n,画出程序流程图并编程实现。,MOV AX,0 MOV DX,0 MOV AL,DAT MUL BYTE PTR DAT+1 MOV DL,DAT+2 ADD AX,DX DIV BYTE PTR DAT MOV RES,AL MOV RES+1,AH,LEA SI,BLOCK LOP:MOV AX,SI CMP AX,0 JE EXIT JA LOP1 INC MINUS JMP LOP2LOP1:INC PLUSLOP2:INC ALL ADD SI,2 JMP LOPEXIT:,MOV SI,OFFSET ADR1 MOV CX,100 MOV ES:MAXM,SI MOV AX,ES:SILOP1:CMP AX,ES:SI JAE LOP3 MOV AX,ES:SI MOV ES:MAXM,SILOP3:ADD SI,2 LOOP LOP1 MOV ES:MAX,AX,MOV AX,DSMOV ES,AXMOV CX,100MOV SI,1000H+99 MOV DI,1050H+99 STD REP MOVSW,MOV SI,OFFSET ARY XCHG AX,SI MOV CX,100 LOP1:ADD SI,2 MOV AX,SI LOOP LOP LOP:CMP AX,SI MOV MAX,AX JGE LOP1,复习题(一):,4.1已知(BX)=2000H,(DI)=3000H,(SS)=4000H,(DS)=6000H,(SS)=5000H,66000H单元的内容为28H,66001H单元的内容为29H,则指令MOV AL,BX+DI+1000H的执行结果是(AL)=。4.2指令“MOV AX,BX”源操作数的寻址方式为。4.3程序控制类指令功能是。,复习题(一):,4.4 8086的I/O指令有 和 两种寻址方式。4.5执行指令段:AGAIN:MOV ES:(DI),AL INCDI LOOP AGAIN 完成的操作,与其等效的指令组:、。,复习题(一):,4.6设当前的(SP)=0100H,执行PUSH AX指令后,(SP)=H,若改为执行INT 21H指令后,则(SP)=H。4.7执行PUSHAX指令后,SP自动。4.8伪指令VR1 DB 2 DUP(?,3 DUP(1,2),5)在存贮器中被分配了 字节。4.9条件转移指令转移的范围是。,复习题(一):,4.10若当前(SP)=6000H,CPU执行一条IRET指令后,(SP)=;而当CPU执行一条段内返回指令RET 6后,(SP)=。4.11伪指令XDB4 DUP(6,2 DUP(6,8);YDW6800H;设X的偏移地址为2000H,则Y的偏移地址为 H,若执行指令MOV BL,BYTE PTR Y后,则(BL)=。,复习题(一):,4.12在寻址方式中,可作基址寄存器的有。4.13若(DS)=2000H,(ES)=2100H,(CS)=1500H,(SI)=00A0H,(BX)=0100H,(BP)=0010H,数据量COUNT的偏移地址为0050H,则执行指令LEAAX,BXSI 之后,(AX)=H,源操作数是 寻址方式。,复习题(一):,4.14指令LEA DX,BUFFER 的功能是将 传送给DX。4.15指令MOV DX,OFFSET BUFFER 的功能是.4.16若(AL)=

    注意事项

    本文(《指令系统系统》PPT课件.ppt)为本站会员(小飞机)主动上传,三一办公仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一办公(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开