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

    微型计算机原理与接口技术ppt课件 第3章.ppt

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

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

    微型计算机原理与接口技术ppt课件 第3章.ppt

    1,第3章 指令系统,2,主要内容:,指令系统的一般概念对操作数的寻址方式六大类指令的操作原理:,操作码的含义指令对操作数的要求指令执行的结果,3,3.1 概述,4,了解:,指令及指令系统;指令的格式;指令中的操作数类型;指令字长与机器字长;指令的执行时间CISC和RISC指令系统,5,一、指令与指令系统,指令:控制计算机完成某种操作的命令指令系统:处理器所能识别的所有指令的集合指令的兼容性:同一系列机的指令都是兼容的。,6,二、指令格式,指令中应包含的信息:,运算数据的来源运算结果的去向执行的操作,7,指令格式,操作码 操作数,操作数,执行何种操作,目标操作数,源操作数,参加操作的数据或数据存放的地址,8,指令格式:,零操作数指令: 操作码 单操作数指令: 操作码 操作数双操作数指令: 操作码 操作数,操作数多操作数指令: 三操作数及以上,9,三、指令中的操作数,立即数寄存器存储器,表征参加操作的数据本身,表征数据存放的地址,10,立即数操作数,立即数本身是参加操作的数据,可以是8位或16位,只能作为源操作数。 例: MOV AX,1234H MOV BL,22H立即数无法作为目标操作数立即数可以是无符号或带符号数,其数值应在可取值范围内。,11,寄存器操作数:,参加运算的数存放在指令给出的寄存器中,可以是16位或8位。例:MOV AX,BXMOV DL,CH,12,存储器操作数,参加运算的数存放在存储器的某一个或某两个单元中。表现形式: ,立即数或寄存器, 中的内容是存放所寻找数据的单元的偏移地址,13,存储器操作数例,例: MOV AX,1200H MOV AL,1200H,22H,11H,1200H,偏移地址,AH AL,14,四、指令字长,指令字长:由操作码的长度、操作数地址长度、操作数个数决定。,15,五、指令的执行速度,指令的字长影响指令的执行速度对不同的操作数,指令执行的时间不同: 存储器,快!,立即数,寄存器,16,六、CISC和RISC指令系统,CISC(complex instruction set computer)指令的功能强,种类多,常用指令用硬件实现;指令系统复杂,难使用。RISC指令系统指令功能较弱,种类少,格式简单;多数指令在一个计算机周期内完成;对存储器的结构和存取速度要求较高。,17,3.2 寻址方式,18,寻址方式,寻找操作数所在地址的方法 寻找转移地址的方法,本节,19,寻址方式,操作数可能的来源或存放处:由指令直接给出寄存器内存单元寻找操作数所在地址的方法可以有三种大类型指令直接给出的方式存放于寄存器中的寻址方式存放于存储器中的寻址方式,20,一、立即寻址,指令中的源操作数是立即数,即源操作数是参加操作的数据本身例:MOV AX,1200H,12H,00H,AH AL,MOV,代码段,立即寻址仅适合于源操作数,21,二、寄存器寻址,参加操作的操作数在CPU的通用寄存器中。例:MOV AX,BX,AX,BX,22,三、直接寻址,指令中直接给出操作数的偏移地址默认在数据段例:MOV AX,1200H,22H,11H,1200H,偏移地址,数据段,AH AL,23,直接寻址,直接寻址方式下,操作数的段地址默认为数据段,但允许段重设,即由指令定义段。例:MOV AX,ES:1200H,24,四、寄存器间接寻址,参与操作的操作数存放在内存中,其偏移地址为指令中的寄存器的内容。,25,寄存器间接寻址例,例:MOV AX,BX 设BX=1200H,22H,11H,1200H,偏移地址,AH AL,11 22,数据段,代码段,MOV,26,寄存器间接寻址,由寄存器间接给出操作数的偏移地址;存放偏移地址的寄存器称为间址寄存器,它们是:BX,BP,SI,DI操作数的段地址(数据处于哪个段)取决于选择哪一个间址寄存器: BX,SI,DI BP,默认在数据段,默认在堆栈段,27,寄存器间接寻址,寄存器间接寻址,基址寻址(间址寄存器为基址寄存 器BX,BP)变址寻址(间址寄存器为变址寄存 器SI,DI),28,五、寄存器相对寻址,操作数的偏移地址为寄存器的内容加上一个位移量例:MOV AX,BX+DATA 设:DS=2000H,BX=0220H,DATA=05H 则:AX=20225H,29,六、基址、变址寻址,操作数的偏移地址为一个基址寄存器的内容 + 一个变址寄存器的内容;操作数的段地址由选择的基址寄存器决定基址寄存器为BX,默认在数据段基址寄存器为BP,默认在堆栈段基址变址寻址方式与相对寻址方式一样,主要用于一维数组操作。,30,例:,执行下列指令:MOV SI,1100HMOV BX,SIMOV AX,SI+BX,22H,11H,2200H,偏移地址,AH AL,11 22,数据段,31,七、基址、变址、相对寻址,操作数的偏移地址为:基址寄存器内容+变址寄存器内容+位移量操作数的段地址由选择的基址寄存器决定。基址变址相对寻址方式主要用于二维表格操作。,32,例:,执行以下程序段:MOV DI,1100HMOV BP,DIMOV AL,BPDI5,22H,11H,2205H,偏移地址,AL,22,堆栈段,33,八、隐含寻址,指令中隐含了一个或两个操作数的地址,即操作数在默认的地址中。例: MUL BL指令执行:ALBL,AX,34,3.3 8086指令系统,35,掌握:,指令码的含义指令对操作数的要求指令的对标志位的影响指令的功能,36,8086指令系统,从功能上包括六大类:,数据传送算术运算逻辑运算和移位串操作程序控制处理器控制,37,数据传送指令,通用数据传送输入输出地址传送标志位操作,38,一、通用数据传送,一般数据传送指令堆栈操作指令交换指令查表转换指令字位扩展指令,特点:该类指令的执行对标志位不产生影响,39,1. 一般数据传送指令,一般数据传送指令 MOV格式:MOV dest,src操作:src例: MOV AL,BL,dest,40,一般数据传送指令,注意点:两操作数字长必须相同;两操作数不允许同时为存储器操作数;两操作数不允许同时为段寄存器;在源操作数是立即数时,目标操作数不能是段寄存器;IP和CS不作为目标操作数,FLAGS一般也不作为操作数在指令中出现。,41,一般数据传送指令例,判断下列指令的正确性:MOV AL,BXMOV AX,SI05HMOV BXBP,BXMOV DS,1000HMOV DX,09HMOV 1200,SI,42,一般数据传送指令应用例,将(*)的ASCII码2AH送入内存数据段1000H开始的100个单元中。题目分析:确定首地址确定数据长度写一次数据修改单元地址修改长度值判断写完否?未完继续写入,否则结束,1063H,100B,1000H,2AH,数据段,2AH,2AH,2AH,43,一般数据传送指令应用例,程序段: MOV DI,1000H MOV CX,64H MOV AL,2AHAGAIN:MOV DI,AL INC DI ;DI+1 DEC CX ;CX-1 JNZ AGAIN ;CX0则继续 HLT,44,上段程序在代码段中的存放形式,設CS=109EH,IP=0100H,则各条指令在代码段中的存放地址如下: CS : IP 机器指令 汇编指令 109E:0100 B80010 MOV DI,1000H 109E:0103 . MOV CX,64H 109E:0105 . MOV AL,2AH 109E:0107 . MOV DI,AL 109E:0109 INC DI 109E:010A DEC CX 109E:010B JNZ 0107H 109E:010D HLT,45,数据段中的分布,送上2AH后数据段中相应存储单元的内容改变如下:DS:1000 2A 2A 2A 2A 2A 2A 2A 2A-2A 2A 2A 2A 2A 2A 2A 2A DS:1010 2A 2A 2A 2A 2A 2A 2A 2A-2A 2A 2A 2A 2A 2A 2A 2A DS:1020 2A 2A 2A 2A 2A 2A 2A 2A-2A 2A 2A 2A 2A 2A 2A 2A DS:1030 2A 2A 2A 2A 2A 2A 2A 2A-2A 2A 2A 2A 2A 2A 2A 2ADS:1040 2A 2A 2A 2A 2A 2A 2A 2A-2A 2A 2A 2A 2A 2A 2A 2A DS:1050 2A 2A 2A 2A 2A 2A 2A 2A-2A 2A 2A 2A 2A 2A 2A 2A DS:1060 2A 2A 2A 2A 00 00 00 00 00 00 00 00 00 00 00 00,偏移地址DI,46,2. 堆栈操作指令,掌握:有关堆栈的概念栈顶、栈首、栈底堆栈指令的操作原理执行过程,执行结果,47,堆栈操作的原则,先进后出以字为单位,48,堆栈操作指令,压栈指令 PUSH 格式: PUSH OPRD出栈指令 POP 格式: POP OPRD,16位寄存器或存储器两单元,16位寄存器或存储器两单元,49,压栈指令 PUSH,指令执行过程:SP - 2 SP操作数高字节 SP+1操作数低字节 SP,SP,堆栈段,SP,高8位,低8位,50,压栈指令的操作,设AX=1234H,SP=1200H执行 PUSH AX 指令后堆栈区的状态:,1200H,堆栈段,SP-2=11FEH,12H,34H,1200H,堆栈段,12H 34H,AX,入栈后,入栈前,51,出栈指令POP,指令执行过程: SP SP+1 SP SP+2,操作数低字节,操作数高字节,SP,堆栈段,SP,高8位,低8位,52,出栈指令的操作,执行 POP AX,12H,34H,11FEH,堆栈段,代码段,PUSH,12 34,AX,SP+2,1200H,出栈后,出栈前,53,堆栈操作指令说明,指令的操作数必须是16位的;操作数可以是寄存器或存储器两单元,但不能是立即数;不能从栈顶弹出一个字给CS;PUSH和POP指令在程序中一般成对出现;PUSH指令的操作方向是从高地址向低地址,而POP指令的操作正好相反。,54,堆栈操作指令例,MOV AX,1234HMOV SP,AXMOV BX,5678HMOV BX,AHMOV BX+1,BLPUSH AXPUSH BXPUSH WORD PTRBX POP WORD PTRBXPOP AXPOP BX,如此,会使AX和BX的内容互换,55,3. 交换指令,格式: XCHG REG,MEM/REG注:两操作数必须有一个是寄存器操作数不允许使用段寄存器。例: XCHGAX,BXXCHG2000,CL,56,4. 查表指令,格式: XLAT说明:用BX的内容代表表格首地址,AL内容为表内位移量,BX+AL得到要查找元素的偏移地址操作:将BX+AL所指单元的内容送AL,57,查表指令例,数据段中存放有一张ASCII码转换表,设首地址为2000H,现欲查出表中第11个代码的ASCII码,30,31,32,.,39,41,42,.,45,46,2000H+0,2000H+11,0,1,2,9,A,B,E,F,58,查表指令例,可用如下指令实现:MOV BX,2000H ;BX表首地址MOV AL,0BH ;AL序号XLAT ;查表转换执行后:AL = 42H还可用其他方法实现,如:MOV BX,2000HMOV AL,BX+0BH,59,5. 字位扩展指令,将符号数的符号位扩展到高位;指令为零操作数指令,采用隐含寻址,隐含的操作数为AX及AX,DX无符号数的扩展规则为在高位补0,60,字节到字的扩展指令,格式:CBW操作:将AL内容扩展到AX规则:若最高位=1,则执行后AH=FFH若最高位=0,则执行后AH=00H,61,字到双字的扩展指令,格式:CWD操作:将AX内容扩展到DX AX规则:若最高位=1,则执行后DX=FFFFH若最高位=0,则执行后DX=0000H,62,字位扩展指令例,判断以下指令执行结果: MOV AL,44H CBW MOV AX,0AFDEH CWD MOV AL,86H CBW,63,二、输入输出指令,掌握:指令的格式及操作指令的两种寻址方式指令对操作数的要求,64,输入输出指令,专门面向I/O端口操作的指令指令格式:输入指令: IN acc,PORT输出指令 :OUT PORT,acc,端口地址,65,指令寻址方式,根据端口地址码的长度,指令具有两种不同的端口地址表现形式。直接寻址端口地址为8位时,指令中直接给出8位端口地址;寻址256个端口。间接寻址端口地址为16位时,指令中的端口地址必须由DX指定;可寻址64K个端口。,66,I/O指令例,IN AX,80HMOV DX,2400HIN AL,DXOUT 35H ,AXOUT AX,35H,67,三、地址传送指令,取偏移地址指令LEA*LDS指令*LES指令,68,取偏移地址指令LEA,操作:将变量的16位偏移地址取出送目标寄存器当程序中用符号地址表示内存偏移地址时,须使用该指令。格式: LEA REG,MEM 指令要求:源操作数必须是一个存储器操作数,目标操作数通常是间址寄存器。,符号地址,69,LEA指令,比较下列指令: MOV SI,DATA1 LEA SI,DATA1 MOV BX,BX LEA BX,BX,DATA1,符号地址,12H,34H,1100H,88H,77H,BX=1100H,执行结果:SI=1234H,执行结果:SI=DATA1,执行结果:BX=7788H,执行结果:BX=1100H,70,LEA指令在程序中的应用,将数据段中首地址为MEM1 的50个字节的数据传送到同一逻辑段首地址为MEM2的区域存放。编写相应的程序段 。,71,LEA指令在程序中的应用,开 始,取源地址,取目标地址,送数据块长度到CL,传送一个字节,修改地址指针,修改计数值,计数值=0?,结 束,N,Y,72,LEA指令在程序中的应用,LEA SI,MEM1 LEA DI,MEM2 MOV CL,50NEXT: MOV AL,SI MOV DI,AL INC SI INC DI DEC CL JNZ NEXT HLT,73,四、标志位操作指令,LAHFSAHFPUSHFPOPF,隐含操作数AH,隐含操作数FLAGS,74,1. LAHF,SAHF,LAHF 操作:将FLAGS的低8位装入AH,CF,PF,AF,ZF,CF,.,AH,FLAGS,D15,D0,D7,D0,SAHF,执行与LAHF相反的操作,75,2. PUSHF,POPF,针对FLAGS的堆栈操作指令 将标志寄存器压栈或从堆栈弹出,76,算术运算类指令,77,算术运算类指令,加法运算指令减法运算指令乘法指令除法指令,算术运算指令的执行大多对状态标志位会产生影响,78,一、加法指令,普通加法指令ADD 带进位位的加法指令ADC 加1指令INC,加法指令对操作数的要求与MOV指令相同,79,1. ADD指令,格式: ADD OPRD1,OPRD2操作: OPRD1+OPRD2,ADD指令的执行对全部6个状态标志位都产生影响,OPRD1,80,ADD指令例,MOV AL,78H ADD AL,99H指令执行后6个状态标志位的状态,81,ADD指令例,01111000 + 10011001 00010001,1,标志位状态: CF= SF= AF= ZF= PF= OF=,1,0,1,0,1,0,82,2. ADC指令,指令格式、对操作数的要求、对标志位的影响与ADD指令完全一样指令的操作: OPRD1+OPRD2+CF OPRD1ADC指令多用于多字节数相加,使用前要先将CF清零。,83,ADC指令应用例求两个20B数的和,LEA SI,M1LEA DI,M2MOV CX,20CLC ;使CF=0NEXT : MOV AL,SI ADC DI,ALINC SIINC DIDEC CX JNZ NEXTHLT,84,3. INC指令,格式: INC OPRD操作: OPRD+1 OPRD,常用于在程序中修改地址指针,不能是段寄存器或立即数,85,二、减法指令,普通减法指令SUB考虑借位的减法指令SBB减1指令DEC比较指令CMP求补指令NEG,减法指令对操作数的要求与对应的加法指令相同,86,1. SUB指令,格式:SUB OPRD1,OPRD2操作:OPRD1- OPRD2 OPRD1对标志位的影响与ADD指令同,87,2. SBB指令,指令格式、对操作数的要求、对标志位的影响与SUB指令完全一样指令的操作:OPRD1- OPRD2- CF OPRD1,88,3. DEC指令,格式:DEC OPRD操作:OPRD - 1 OPRD,指令对操作数的要求与INC相同指令常用于在程序中修改计数值,89,应用程序例,MOV BL,2NEXT1 :MOV CX,0FFFFHNEXT2: DEC CX JNZ NEXT2 ; ZF=0转NEXT2 DEC BL JNZ NEXT1 ; ZF=0转NEXT1 HLT ; 暂停执行,90,4. NEG指令,格式:NEG OPRD操作:0 - OPRD OPRD,8/16位寄存器或存储器操作数,用0减去操作数,相当于对该操作数求补码,91,5. CMP指令,格式:CMP OPRD1,OPRD2操作:OPRD1- OPRD2 指令执行的结果不影响目标操作数,仅影响标志位!,92,CMP指令,用途:用于比较两个数的大小,可作为条件转移指令转移的条件指令对操作数的要求及对标志位的影响与SUB指令相同,93,CMP指令,两个无符号数的比较: CMP AX,BX 若 AX BX 若 AX BX,CF=0,CF=1,94,CMP指令,两个带符号数的比较 CMP AX,BX 两个数的大小由OF和SF共同决定 OF和SF状态相同 AX BX OF和SF状态不同 AX BX,95,CMP指令例,LEA BX,MAX LEA SI,BUF MOV CL,20 MOV AL,SINEXT:INC SI CMP AL,SI JNC GOON ;CF=0转移 XCHG SI,AL,GOON:DEC CL JNZ NEXT MOV BX,AL HLT,96,程序功能,MAX,BUF,XXH,XXH,XXH,在20个数中找最大的数,并将其存放在MAX单元中。,97,三、乘法指令,无符号的乘法指令MUL*带符号的乘法指令IMUL,注意点:乘法指令采用隐含寻址,隐含的是存放被乘数的累加器AL或AX及存放结果的AX,DX.,98,1. 无符号数乘法指令,格式: MUL OPRD 不能是立即数操作: OPRD为字节数 OPRD为16位数,ALOPRD,AXOPRD,DXAX,AX,99,无符号数乘法指令例,MUL BYTE PTRBX,BX,XXH,AL XXH,AX,100,四、除法指令,无符号除法指令格式:DIV OPRD有符号除法指令格式:IDIV OPRD,101,除法指令的操作,若OPRD是字节数执行:AX/OPRD 结果:AL=商 AH=余数若OPRD是双字节数执行: DXAX/OPRD结果:AX=商 DX=余数,指令要求被除数是除数的双倍字长,102,五、BCD码调整指令,将指令执行的二进制运算结果调整为压缩BCD码或扩展BCD码表示的十进制数。共6条,均为隐含寻址方式,隐含的操作数是 AL或AL、AH;不能单独使用,要紧跟在相应的算术运算指令 之后;,103,逻辑运算和移位指令,104,指令类型,逻辑运算与,或,非,异或移位操作非循环移位,循环移位,105,一、逻辑运算,逻辑运算指令对 操作数的 要求大多与MOV指令 相同。“非”运算指令 要求操作数 不能是立即数;除“非”运算指令 外,其余指令的执行都会使标志位OF=CF=0,106,1.“与”指令:,格式: AND OPRD1,OPRD2操作: 两操作数相“与”,结果送目标地址。,107,“与”指令的应用,实现两操作数 按位相与的 运算AND BL,SI使目标操作数的 某些位不变,某些位清零AND AL,0FH在操作数 不变的 情况下使CF和OF清零AND AX,AX,108,“与”指令应用例,从地址为3F8H 端口中读入一个字节数,如果该数 bit1位为1,则可从38FH端口将DATA为首地址的 一个字输出,否则就不能进行数 据传送。 编写相应的 程序段。,109,“与”指令应用例,开 始,取待输出数的偏移地址,读入状态字,测试bit1位状态,Bit1=1?,取输入口地址,取输出口地址,输出一个字,N,Y,110,“与”指令应用例,LEA SI,DATA MOV DX,3F8HWATT:IN AL,DX AND AL,02H JZ WATT ;ZF=1转移 MOV DX,38FH MOV AX,SI OUT DX,AX,111,2.“或”运算指令,格式: OR OPRD1,OPRD2操作: 两操作数相“或”,结果送目标地址,112,“或”指令的应用,实现两操作数 相 “或”的 运算OR AX,DI使某些位不变,某些位置“1”OR CL,0FH在不改变操作数的 情况下使OF=CF=0OR AX,AX,113,“或”指令的应用例,OR AL,AL JPE GOON OR AL,80H GOON:.,PF=1转移,114,“或”指令的应用,将一个二进制数9变为字符9,如何实现?,115,3.“非”运算指令,格式:NOT OPRD操作:操作数按位取反再送回原地址注:指令中的操作数不能是立即数指令的执行对标志位无影响例:NOT BYTE PTRBX,116,4.“异或”运算指令,格式: XOR OPRD1,OPRD2操作:两操作数相“异或”,结果送目标地址例: XOR BL,80H XOR AX,AX,117,5.“测试”指令,格式: TEST OPRD1,OPRD2操作: 执行“与”运算,但运算的结果不送回目标地址。应用:常用于测试某些位的状态,118,例:,从地址为3F8H的 端口中读入一个字节数,当该数的 bit1, bit3, bit5位同时为1时,可从38FH端口将DATA为首地址的一个字输出,否则就不能进行数 据传送。 编写相应的 程序段。,119,源程序代码:,LEA SI,DATA MOV DX,3F8HWATT:IN AL,DX MOV DX,38FH MOV AX,SI OUT DX,AX,AND AL,2AHCMP AL,2AHJNZ WATT,TEST AL,02HJZ WATT ;ZF=1转移TEST AL,08HJZ WATTTEST AL,20HJZ WATT,AND AL,2AHXOR AL,2AHJNZ WATT,120,二、移位指令,非循环移位指令 循环移位指令,注: 移动一位时由指令直接给出; 移动两位及以上,则移位次数由CL指定。,121,1. 非循环移位指令,逻辑左移算术左移逻辑右移算术右移,122,算术左移和逻辑左移,算术左移指 令: SAL OPRD,1 SAL OPRD,CL逻辑左移指 令: SHL OPRD,1 SHL OPRD,CL,有符号数,无符号数,123,逻辑右移,格式: SHR OPRD,1 SHR OPRD,CL,0,CF,无符号数的右移,124,逻辑右移例:,MOV AL,68HMOV CL,2SHR AL,CL,0,CF,0 1 1 0 1 0,AL,0,0,0,0 0 1 1 0 1 0 0,AL,CF,0,0,0 0 0 1 1 0 1 0,AL,CF,0,0,移动1次,移动2次,125,算术右移,格式: SAR OPRD,1 SAR OPRD,CL,有符号数的右移,CF,126,非循环移位指令的应用,左移可实现乘法运算右移可实现除法运算,127,2. 循环移位指令,不带进位位的循环移位带进位位的循环移位,左移 ROL右移 ROR,左移 RCL右移 RCR,指令格式、对操作数的要求与非循环移位指令相同,128,不带进位位的循环移位,CF,CF,129,带进位位的循环移位,CF,CF,130,循环移位指令的应用,用于对某些位状态的测试;高位部分和低位部分的交换;与非循环移位指令一起组成32位或更长字长数的移位。,P124例3-34,P124例3-35,131,程序功能,将1000H开始存放的4个压缩BCD码转换为ASCII码存放在3000H开始的单元中去。,12H,34H,56H,78H,1000H,3000H,132,程序例,MOV SI,1000H MOV DI,3000H MOV CX,4Next:MOV AL,SI MOV BL,AL AND AL,0FH OR AL,30H MOV DI,AL INC DI MOV AL,BL,PUSH CXMOV CL,4SHR AL,CLOR AL,30HMOV DI,ALINC DIINC SIPOP CXDEC CXJNZ NextHLT,133,串操作指令,134,串操作指令说明,针对数据块或字符串的操作;可实现存储器到存储器的数据传送;待操作的数据串称为源串,目标地址称为目标串。,135,串操作指令的特点,源串一般存放在数据段,偏移地址由SI指定。允许段重设;目标串必须在附加段,偏移地址由DI指定;指令自动修改地址指针,修改方向由DF决定。 DF=0 DF=1数据块长度值由CX指定可增加自动重复前缀以实现自动修改CX内容。,增地址方向;,减地址方向;,136,重复前缀,无条件重复REP条件重复REPE 相等重复REPZ 为零重复REPNE 不相等重复REPNZ 不为零重复,CX0 ZF=1,CX0 ZF=0,CX0 重复,137,串操作指令流程(以传送操作为例),取源串地址,取目标串地址,设串长度,传送一个字节或字,修改地址指针,修改串长度值,传送完否?,N,Y,设操作方向,138,串操作指令,串传送 MOVS串比较 CMPS串扫描 SCAS串装入 LODS串送存 STOS,139,1. 串传送指令,格式: MOVS OPRD1,OPRD2 MOVSB MOVSW串传送指令常与无条件重复前缀连用,140,串传送指令,对比用MOV指令和MOVS指令实现将200个字节数据从内存的一个区域送到另一个区域的程序段。,141,串传送指令例,用串传送指令实现200个字节数据的传送: LEA SI,MEM1 LEA DI,MEM2 MOV CX,200 CLD REP MOVSB HLT,142,2. 串比较指令,格式: CMPS OPRD1,OPRD2 CMPSB CMPSW串比较指令常与条件重复前缀连用,指令的执 行不改变操作数,仅影响标志位。前缀的操作对标志位不影响,143,串比较指令例,测试200个字节数据是否传送正确:,LEA SI,MEM1LEA DI,MEM2MOV CX,200CLD REPE CMPSB TEST CX,00FFH,JZ STOP DEC SI MOV AL,SI MOV BX,SISTOP:HLT,144,3. 串扫描指令,格式: SCAS OPRD SCASB SCASW执行与CMPS指令相似的操作,只是这里的源 操作数是AX或AL,目 标操作数,145,串扫描指令的应用,常用于在指定存储区域中寻找某个关键字。,146,串装入指令,格式: LODS OPRD LODSB LODSW操作:对字节:对 字:,源操作数,DS:SI,DS:SI,AL,AX,147,4. 串装入指令,用于将内存某个区域的数据串依次装入累加 器,以便显示或输出到接口。LODS指令一般不加重复前缀。,148,5. 串存储指令,格式: STOS OPRD STOSB STOSW操作:对字节: AL对 字: AX,目 标操作数,ES:DI,ES:DI,149,串存储指令的应用,常用于将内存某个区域置同样的值此时:将待送存的数据放入AL(字节数)或AX(字数据);确定操作方向(增地址/减地址)和区域大小(串长度值);使用串存储指令+无条件重复前缀,实现数据传送。,150,串存储指令例 内存某个区域清零,将内存某单元清零设计思想:,区域首地址送ES:DI,串长度送CX,置方向标志DF,0送累加器AL,执行串送存指令,151,程序控制指令,转移指令循环控制过程调用中断控制,152,程序的执行方向,程序控制类指令的本质是:控制程序的执行方向决定程序执行方向的因素:CS,IP控制程序执行方向的方法:修改CS 和IP ,则程序转向另一个代码段执行;仅修改IP,则程序将改变当前的执行顺序,转向本代码段内其它某处执行。,153,一、转移指令,无条件转移指令 无条件转移到目标地址,执行新的指令有条件转移指令 在具备一定条件的情况下转移到目标地址,通过修改指令的偏移地址或段地址及偏移地址实现程序的转移,154,1. 无条件转移指令,格式: JMP OPRD,目标地址,与JMP在同一代码段,与JMP不在同一代码段,原则上可实现在整个内存空间的转移,155,无条件段内转移,转移的目标地址在当前代码段内,段地址不 改变。即:目标地址是16位偏移地址。,指令中直接给出目标地址,由指令中的寄存器或存储器操作数指出目标地址,段内直接转移,段内间接转移,156,段内直接转移,转移的目标地址由指令直接给出格式:JMP Label,近地址标号,157,段内直接转移示图,JMP,Label,代码段,位移量,下一条要执行指令的偏移地址=当前IP+位移量,JMP Label,158,段内间接转移,段内间接转移转移的目标地址存放在某个16位寄存器或存储器 的某两个单元中例:JMP BX若:BX=1200H则:转移的目标地址=1200H,JMP,代码段,1200H,MOV,159,段内间接转移例,JMP WORD PTRBX 设:BX=1200H,JMP,代码段,数据段,BX=1200,XXH,XXH,IP,指令码,160,无条件段间转移,转移的目标地址不在当前代码段内。目标地址为32位,包括段地址和偏移地址。,指令中直接给出目标地址,由指令中的32位存储器操作数指出目标地址,段间直接转移,段间间接转移,161,段间直接转移,段内直接转移转移的目标地址由指令直接给出格式:JMP FAR Label,远地址标号,162,段间直接转移示图,JMP,Label,代码段1,Label与JMP之间的位移量,代码段2,XXH,XXH,XXH,XXH,IP,CS,163,段间间接转移,段内间接寻址转移的目标地址由指令中的32位操作数给出 例:JMP DWORD PTRBX,XXH,XXH,XXH,XXH,BX,IP,CS,JMP,指令码,代码段1,代码段2,数据段,164,无条件转移指令例,(1) 2000:0100 MOV AX,1200H(2) 2000:0103 JMP NEXT (3) 2000:0120 NEXT: MOV BX,1200H (4) JMP BX (5) 2000:1200,165,无条件转移指令例,MOV SI,1122HMOV WORD PTRSI,0120HADD SI,2MOV WORD PTRSI,0122H,JMP DWORD PTRSI-2,JMP WORD PTRSI,IP,CS,IP,166,2. 条件转移指令,在满足一定条件下,程序转移到目标地址继续执行条件转移指令均为段内短转移,即转移 范围为: -128-+127,167,条件转移指令的应用,几种条件转移指令的应用JC/JNC判断CF的状态。常用于比大小JZ/JNZ判断ZF的状态。常用于循环体的结束判断JO/JNO判断OF的状态。常用于有符号数溢出的判断JP/JPE判断PF的状态。用于判断运算结果低8位中1的个数是否为偶数JA/JAE/JB/JBE判断CF或CF+ZF的状态。常用于无符号数的大小比较,168,转移指令例,统计内存数据段中以TABLE为首地址的100个8位符号数中正数、负数和零元数的个数。,169,转移指令例(流程图),将存放各元素个数的单元清零,取首地址设串长度,取一个字节数,正数个数加1,零元素加1,为负?,为零?,负数个数加1,N,Y,N,Y,p133,170,二、循环控制指令,循环范围:以当前IP为中心的-128+127范围内循环。循环次数由CX寄存器指定。循环指令:,LOOP *LOOPZ *LOOPNZ,无条件循环指令,条件循环指令,171,无条件循环指令,格式: LOOP LABEL循环条件: CX 0操作: DEC CX JNZ 符号地址,P133例3-44,172,三、过程调用和返回,用于调用一个子过程;子过程由程序员预先设计 并装入内存 子过程执行结束后要返回 原调用处,调用程序,断点,入口地址,子程序,173,调用指令的执行过程,保护断点;将调用指令的下一条指令的地址(断点)压入堆栈获取子过程的入口地址;子过程第1条指令的偏移地址执行子过程,含相应参数的保存及恢复;恢复断点,返回原程序。将断点偏移地址由堆栈弹出,174,过程调用,段内调用段间调用,段内直接调用段内间接调用,段间直接调用段间间接调用,175,1. 段内调用,被调用程序与调用程序在同一代码段调用前只需保护断点的偏移地址格式: CALL NEAR PROC执行过程:,近过程名,代码段1,调用程序,被调用程序,代码段1,将断点的偏移地址压入堆栈 根据过程名找子程序入口,176,段内调用例,(1)CALL TIMRE(2)CALL WORD PTRSI,直接调用,间接调用,44H,33H,CALL,代码段,数据段,设:SI=1200H CS=6000H,1200H,执行第(2)条指令后:,6000H,CS =,3344H,IP =,177,2. 段间调用,子过程与原调用程序不在同一代码段断点保护时的压栈顺序:先将断点的CS压栈,再压入IP。,调用前需保护断点的段基地址和偏移地址,178,段间调用例,格式: CALL FAR PROC格式例:CALL FAR TIMRECALL DWORD PTRSI,XXH,XXH,CALL,代码段,数据段,SI,XXH,XXH,CS,IP,179,3. 返回指令,功能:从堆栈中弹出断点地址,返回原程序格式: RETRET指令一般位于子程序的最后。,180,四、中断指令,中断中断源中断的类型中断指令引起CPU产生一次中断的指令,181,中断与过程调用:,中断是随机事件或异常事件引起,调用则是事 先已在程序中安排好 ; 响应中断请求不仅要保护断点地址,还要保护 FLAGS内容;调用指令在指令中直接给出子程序入口地址, 中断指令只给出中断向量码,入口地址则在向 量码指向的内存单元中。,182,1. 中断指令,格式: INT n说明: n4,中断类型码n=0 255,n 4,XXH,XXH,XXH,XXH,入口的段地址,入口的偏移地址,存放中断服务子程序入口地址的单元的偏移地址,代码段,数据段,该单元在数据段,段地址=DS,183,中断指令的执行过程,将FLAGS压入堆栈;将INT指令的下一条指令的CS、IP压栈;由n4得到存放中断向量的地址;将中断向量(中断服务程序入口地址)送CS和IP寄存器;转入中断服务程序。,184,中断指令的执行过程,n4,22H,11H,00H,67H,IP,CS,68122H,MOV,代码段,数据段,堆栈段,SP,FLAGSH,FLAGSL,IPH,CSL,CSH,IPL,SP,SP,SP,185,中断指令例,执行程序段: CS IP 6200H:0110H INT 21H6200H:0112H MOV AX,BX ,12H,01H,00H,62H,SP=1200,FLAGSL,FLAGSH,SP=11FA,执行INT指令后,堆栈段,186,中断指令例,执行INT 21H指令后 IP=21H4 CS=(21H4)+2,0084H,23H,11H,00H,20H,IP,CS,数据段,代码段,XX,21123H,中断服务子程序,187,2. 溢出中断指令,格式: INTO 若OF=1,则启动一个类型为4的中断过程,给出一个出错标志,如果OF

    注意事项

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

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




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开