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

    微型计算机技术与应用第3章Pentium的指令系统课件.ppt

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

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

    微型计算机技术与应用第3章Pentium的指令系统课件.ppt

    第3章 Pentium的 指令系统,博学 审问 慎思 明辨 笃行,2,2023/3/9,第3章 Pentium的指令系统,3.1 Pentium的寻址方式 3.2 Pentium的指令系统 3.3 汇编语言中的标记、表达式和伪指令,教学重点:寻址方式;传送指令中的堆栈指令、交换指令、换码指令、输入/输出指令;算术运算指令中的比较指令;串操作指令;转移指令;中断调用示例;规范程序;伪指令DB、DW、PTR。,第3章 Pentium的指令系统,3,2023/3/9,指令的基本格式:MOV AX,1235H(双操作数)INC CX(单操作数)寻址方式:说明操作数所在地址(来源)的方法,操作码,操作数或操作数地址,指令的两个问题:指出进行什么操作 涉及的操作数和操作结果放在何处,第3章 Pentium的指令系统,3.1 Pentium的寻址方式,4,2023/3/9,操作数直接存放在指令中,紧跟在操作码之后,MOVAL,80H MOVAX,1090H MOVEAX,10002000H,(Immediate addressing),作为指令的一部分,直接存放在代码段里,这种操作数称为立即数。立即数可以是位或16、32位的。高位字节放在高地址,低位字节放在低地址。使用场合:经常用于给寄存器赋初值。注意:只能用于源操作数字段,不能用于目的操作数字段。,第3章 Pentium的指令系统,3.1.1 立即数寻址,5,2023/3/9,例:MOV AL,05H 指令执行后:(AL)=05H,例:MOV AX,3064H 指令执行后:(AX)=3064H,立即寻址方式,机器代码:1011 0000 0000 0101操作码:B0立即数:05H,机器代码:1011 1000 0110 0100 0011 0000 操作码:B8立即数:3064H,第3章 Pentium的指令系统,例:,6,2023/3/9,7,2023/3/9,8,2023/3/9,(Register addressing)INCCX ROLAH,1 MOV ECX,EAX,操作数在寄存器中,指令只须指定寄存器号。,这种寻址方式因为操作数在寄存器中,操作在CPU内部,不执行总线周期,不需要访问存储器,因此运算速度较高。既可用于源操作数,也可用于目的操作数。,32位通用寄存器:EAX EBX ECX EDX 16位通用寄存器:AX BX CX DX 8位通用寄存器:AH AL BH BL,第3章 Pentium的指令系统,3.1.2 寄存器寻址,9,2023/3/9,指令执行前:(AX)3064(SS)1234 MOV SS,AX 指令执行后:(AX)保持不变。(SS)3064H,指令执行前:,指令执行后:,SS,AX,3064H,3064H,1234H,3064H,寄存器寻址方式,第3章 Pentium的指令系统,例:,10,2023/3/9,第3章 Pentium的指令系统,11,2023/3/9,第3章 Pentium的指令系统,12,2023/3/9,I/O直接寻址:地址在指令中直接提供(0255)INAL,82H OUT80H,AX INEAX,80HI/O间接寻址:利用DX设置端口地址(065535)MOV DX,80H INAL,DX OUTDX,AX OUTDX,EAX,第3章 Pentium的指令系统,3.1.3 输入/输出端口寻址,13,2023/3/9,3.1.4 存储器寻址,操作数在主内存中,通过存储器地址指示,1.直接寻址(Direct addressing)MOV AX,1070HMOV EAX,ES:1000H,注意:(1)直接寻址方式适用于处理单个变量。(2)直接寻址方式隐含的段寄存器是 DS,8086/8088允许段跨越,即允许使用 CS SS ES作为段寄存器,这时,必须在指令中特别标明。(3)IBM PC机中规定双操作数指令必须有一个操作数使用寄存器方式,这就是常常先要把一个变量送到寄存器去的原因。,第3章 Pentium的指令系统,14,2023/3/9,则:(AX)=3050H,直接寻址方式,MOV AX,3100H(DS)=6000H(63100H)=3050H,必须先求出操作数的物理地址,然后再访问存储器才能取得操作数。,第3章 Pentium的指令系统,例:,15,2023/3/9,第3章 Pentium的指令系统,16,2023/3/9,第3章 Pentium的指令系统,17,2023/3/9,2.寄存器间接寻址(Register indirect addressing)操作数的有效地址存放在寄存器中(寄存器内容偏移地址)MOVAX,BX MOV EAX,EBX,注:若选择BP、SP、ESP、EBP寄存器作为间接寻址 操作数在堆栈段区域中,用SS寄存器的内容作为段地址。在指令中可以指定段跨越前缀来取得其他段中的数据。例:MOV ES:DI,AX MOV DX,DS:BP,操作数在存储器存储单元中,第3章 Pentium的指令系统,18,2023/3/9,MOV BX,DI(DS)=6000H(DI)=2000H PA=62000H(62000H)=50A0H(BX)=50A0H,寄存器间接寻址方式 MOV BX,DI,第3章 Pentium的指令系统,例:,19,2023/3/9,MOV BP,AX执行前:(SS)=1000H,(BP)=3000H,(AX)=1234H执行后:PA=13000H(13000H)=1234H,寄存器间接寻址方式 MOV BP,AX,若选择BP寄存器作为间接寻址,操作数在堆栈段区域中,用SS寄存器的内容作为段地址。操作数物理地址:PA=16d(SS)+(BP),第3章 Pentium的指令系统,例:,20,2023/3/9,第3章 Pentium的指令系统,21,2023/3/9,第3章 Pentium的指令系统,22,2023/3/9,3.寄存器相对寻址(Register relative addressing)操作数的有效地址是一个基址或变址寄存器的内容和指令中指定的8位或16、32位位移量之和。MOV AX,SI+100H4.基址加变址的寻址(Based indexed addressing)操作数的有效地址是一个基址寄存器和一个变址寄存器的内容之和,基址寄存器名和变址寄存器名均有指令指定。MOVAX,BX+SI MOV EDX,EBX+ESI MOVEDX,EBX ESI,第3章 Pentium的指令系统,23,2023/3/9,寄存器相对寻址方式MOV AX,COUNTBP,OP,OP,40H,20H,.,.,48H,55H,.,55H,48H,存储器,操,作,码,位移量,COUNT,代,码,段,堆,栈,段,55040H,50000H,AH,AL,第3章 Pentium的指令系统,例:,MOV AX,COUNT BPMOV AX,COUNT+BPMOV AX,COUNT+BP COUNT为16位位移量。指令执行前:(SS)=5000H,(BP)=3000H,COUNT=2040H,(AX)=1234H指令执行后:EA=5040HPA=55040H(55040H)=5548H(AX)=5548H,24,2023/3/9,MOV AX,BXSI或 MOV AX,BX+SI执行指令前:(DS)=3200H,(BX)=0456H,(SI)=1094H(334EAH)=4567H执行指令后:EA=14EAH PA=334EAH(AX)=4567H,基址加变址寻址方式 MOV AX,BX+SI,第3章 Pentium的指令系统,例:,25,2023/3/9,第3章 Pentium的指令系统,26,2023/3/9,第3章 Pentium的指令系统,27,2023/3/9,第3章 Pentium的指令系统,28,2023/3/9,第3章 Pentium的指令系统,29,2023/3/9,5 相对的基址加变址寻址(Relative based indexed addressing)MOV AX,BP+SI+0050,操作数有效地址是一个基址寄存器和一个变址寄存器的内容和8位或16、32位位移量之和。,第3章 Pentium的指令系统,30,2023/3/9,MOV AX,MASKBXDIMOV AX,MASK BX+DIMOV AX,MASX+BX+DI执行指令前:(DS)=3000H(BX)=1346H(DI)=0500HMASK=1234H(32A7AH)=4050H执行指令后:EA=2A7AHPA=32A7AH(AX)=4050H,相对基址加变址MOV AX,MASK+BX+DI,第3章 Pentium的指令系统,例:,31,2023/3/9,32,2023/3/9,33,2023/3/9,32位有效地址基址寄存器(变址寄存器*比例)位移量,其中的4个组成部分是:基址寄存器任何8个32位通用寄存器之一;变址寄存器除ESP之外的任何32位通用寄存器之一;比例可以是1248(因为操作数的长度可以是1248字节);位移量可以是816、32位值。,32位存储器寻址方式的组成公式为:,第3章 Pentium的指令系统,34,2023/3/9,设DS=2000H,SS=3000H,BP=0200H,SI=4000H,BUF=1000H,EAX=00001000H,EBX=00002000H。假设按16位实模式操作,确定下列每条指令访问内存的物理地址,并且指出源操作数及目的操作数的寻址方式,源操作数所在逻辑段。(1)MOV AL,1234H(2)MOV EDX,BX(3)MOV CL,ES:BX100H(4)MOV SI,EBX(5)MOV AH,BUFBXSI(6)MOV EAX,BP1234H,习 题,第3章 Pentium的指令系统,35,2023/3/9,3.2 Pentium的指令系统,Pentium的指令分为如下几类:传送指令;串操作指令;算术运算指令;逻辑运算和移位指令;转移和调用指令;标志操作和处理器指令;控制指令;条件测试和字节设置指令;系统管理指令;支持高级语言的指令。,第3章 Pentium的指令系统,36,2023/3/9,3.2.1 传送指令,功能:负责把数据、地址或立即数在寄存器、存储单元、I/O端口 之间传送。特点:计算机最基本、最重要的一种操作,使用比例最高。种类(分七种):通用传送指令 堆栈操作指令指令 交换指令 输入/输出指令 换码指令 地址传送指令 标志传送指令,第3章 Pentium的指令系统,37,2023/3/9,通用传送指令(General Purpose Transfer),1)MOV DEST,SRC,两个操作数的数位相同,功 能:把一个字节(B)或一个字(W)、一个双字(DW)操作数由源传送至目的。源操作数可以是 通用寄存器、段寄存器、立即数、内存单元;目的操作数可以是 通用寄存器、段寄存器(除CS)、内存单元,源操作数不是立即数时,两操作数之一必为寄存器。源操作数与目的操作数的类型要一致。不能用立即数、CS和IP(EIP)做目的操作数。不允许在段寄存器之间、内存单元之间直接传送数据。,第3章 Pentium的指令系统,38,2023/3/9,2)扩展传送指令 MOVZX DEST,SRC MOVSX DEST,SRC,两个操作数的数位不相同,例:MOV BL,80H MOVSX AX,BL;AX=FF80H(符号扩展)MOVZX AX,BL;AX=0080H(零扩展)MOVSX EAX,BL;AX=FFFF FF80H MOVZX EAX,BL;AX=0000 0080H,目的操作数为通用寄存器(16位或32位)源操作数长度必须小于目的操作数长度,为通用寄存器或 存储器操作数(8位或16位)所有的传送操作不影响标志位,第3章 Pentium的指令系统,39,2023/3/9,符号扩展:符号扩展是指用一个操作数的符号位(即最高位)形成另一个操作数,那么所形成的后一个操作数的 各位是全0(正数)或全1(负数)。符号扩展不改变数据大小对于数据64H(表示数据100),其最高位D7为0,符号扩展后高8位都是0,成为0064H(仍表示数据100)对于数据ff00H(表示有符号数256),其最高位D15为1,符号扩展后高16位都是1,成为ffffff00H(仍表示有符号数256),40,2023/3/9,2.堆栈操作指令(Stack),堆栈按照先进后出原则组织的一段内存区域特点:只有一个出入口,出入口用堆栈指针SP来表示。SP在任何时候都是指向堆栈当前的栈顶。下推式的(规定堆栈设置在堆栈段内)改变SP 的内容,随着推入堆栈内容增加,SP的值减少。,.,(SP)-2,(SP)-1,(SP),堆,栈,段,Word 1,Word 2,Word 3,Word 4,Word 5,Stack,PUSH,POP,第3章 Pentium的指令系统,41,2023/3/9,存放CPU寄存器或存储器中暂时不使用的数据,使用数据时将其弹出;调用子程序,或响应中断时都要用到堆栈。调用子程序(或过程)或发生中断时要保护断点的地址,子程序或中断返回时恢复断点。,子程序:在一个实际程序中,有些操作要执行多次,把要重复执行操作编为子程序。也常把一些常用的操作编成标准化、通用化的子程序。,第3章 Pentium的指令系统,堆栈用途:,42,2023/3/9,入栈指令:PUSH src;(SP)(SP)-2/(SP)-4 出栈指令:POP dest;(SP)(SP)+2/(SP)+4,PUSH EAX PUSH CS PUSH BX+DI PUSH 0870H PUSH DWORD PTR EBX+ESI POP BX POP ES POP EAX,堆栈操作都按字、双字操作。PUSH,POP 指令的操作数可能有三种:寄存器(通用寄存器,地址指针,变址寄存器),段寄存器(CS除外,PUSH CS 合法,POP CS 非法),存储器。PUSH,POP指令应该成对使用,保持原有状态。,POP不能用立即寻址方式 POP 1234H,第3章 Pentium的指令系统,43,2023/3/9,假设(AX)=2107 H,执行 PUSH AX,(SP),低地址,高地址,(SP),07H 21H,低地址,高地址,进栈方向,*,*,*,*,PUSH AX 执行前,PUSH AX 执行后,(SP)-2,第3章 Pentium的指令系统,例:,44,2023/3/9,POP BX,(SP),低地址,高地址,(SP),07H 21H,低地址,高地址,出栈方向,07H21H,(BX)2107H(SP)(SP)+2,POP BX 执行前,POP BX 执行后,*,*,*,*,第3章 Pentium的指令系统,例:,45,2023/3/9,PUSHA POPAPUSHADPOPAD,堆栈成组操作指令:,将8个16位通用寄存器的内容按AX、CX、DX、BX、SP、BP、SI、DI的次序推入推栈,SP-16,从推栈中弹出8个16位数据分别按DI、SI、BP、SP、BX、DX、CX、AX的次序送入寄存器中,SP+16,将8个32位通用寄存器的内容按EAX、ECX、EDX、EBX、ESP、EBP、ESI、EDI的次序推入推栈,SP-32,从推栈中弹出8个32位数据分别按EDI、ESI、EBP、ESP、EBX、EDX、ECX、EAX的次序送入寄存器中,SP+32,第3章 Pentium的指令系统,46,2023/3/9,XCHG dest,src,3.交换指令(Exchange),功 能:一个字节、字、双字源操作数与目的操作数相交换。可以实现:寄存器之间、寄存器和存储器之间,存储器之间(两个存储单元之间)不能交换;两个操作数中必须有一个在寄存器中;段寄存器、IP、EIP不能作为一个操作数;不影响标志位。,第3章 Pentium的指令系统,47,2023/3/9,处理器执行空操作该指令,需要化费时间,在主存中也要占用一个字节空间,实现短时间延时,临时占用代码空间,特殊应用:,空操作指令 NOP XCHG EAX,EAX,第3章 Pentium的指令系统,48,2023/3/9,BSWAP 32位寄存器,BSWAP EAX,EAX=67452301H,寄存器内部字节交换指令,EAX=01234567H,,操作:将32位寄存器的4个字节通过两两交换实现反序排列使数据次序按字节为单位反过来,以改变数据的存放方式。,例:,第3章 Pentium的指令系统,49,2023/3/9,4./5.累加器专用传送指令(只限于使用EAX、AX或AL),1)输入/输出指令,IN ac,PORT OUT PORT,ac,两操作数分别是端口地址内容和累加器内容(AL或AX或EAX)寻址:直接寻址(8位端口地址,0255)PORT=0FFH 间接寻址(16位端口地址由DX指定,寻址64K)PORTFFH 每个端口数据长度均为8位,第3章 Pentium的指令系统,50,2023/3/9,直接的I/O指令 IN AL,50H IN AX,70H IN EAX,70H OUT 80H,AX间接的I/O指令:MOV DX,80H IN AL,DX IN AX,DX IN EAX,DX OUTDX,AX OUTDX,EAX,第3章 Pentium的指令系统,51,2023/3/9,2)换码指令(Translate 字节转换指令),XLAT;(AL)(BX)+(AL)XLATB;(AL)(EBX)+(AL),功 能:将一种字节代码转换成另一种字节代码 隐含规定将代码表格的首地址存入BX/EBX中,将AL存放待查某编码在表格内的偏移量。把BX/EBX和AL的内容相加作为有效地址,并 据此读出其内存单元的内容送AL中。,第3章 Pentium的指令系统,52,2023/3/9,格雷码编码规则如下:011000100011200101300110401001501010601100710001810010910100,第3章 Pentium的指令系统,例:,53,2023/3/9,例:MOV BX,OFFSET TABLE;(BX)=0040H MOV AL,3 XLAT TABLE 指令执行后(AL)=33H注意:,不影响标志位 字节表格(长度不超过256)首地址(BX)需转换代码(AL),第3章 Pentium的指令系统,54,2023/3/9,6.地址传送指令,LEA Reg,Mem EA;EA(Reg)dst src 功 能:加载有效地址,把指令中指定的存储器操作 数有效地址装入指定的寄存器。这是一条特殊指令,传送的不是操作数本身,而是操作数的有效地址。,目的操作数不允许是段寄存器。源操作数的寻址方式不允许是立即数和寄存器方式。源操作数必须是一个存储器。当目标寄存器位数多而数据位数少时,可进行高位零扩展。,1)取有效地址指令(Load Effective Address),第3章 Pentium的指令系统,55,2023/3/9,第3章 Pentium的指令系统,注意:设(DS)=3000H BUFFER=1000H(31000H)=0040H,(1)LEA 指令与MOV 的区别LEA BX,BUFFER;(BX)=1000HMOV BX,BUFFER;(BX)=0040H(2)LEA 指令与MOV等价 LEA BX,BUFFER;(BX)=1000H MOV BX,OFFSET BUFFER;(BX)=1000H,56,2023/3/9,设(BX)=0400H,(SI)=003CH 执行指令后:EA=(BX)+(SI)+0F62H=0400H+003CH+0F62H=139EH(BX)=139EH,LEA BX,BX+SI+0F62H,139EH,第3章 Pentium的指令系统,例:,57,2023/3/9,2)取段码和偏移量的指令(Load pointer using DS/ES),dst src 功 能:将指令指定的32位/64位的地址指针送到指令指定 寄存器和DS 或ES。将指令指定 Mem 单元的前两/四个单元内容(16/32位偏移量)装入指定通用寄存器,把后两 个单元内容(段地址)装入到DS/ES/SS/FS/GS段寄存器。,LES,Reg,Mem;(Reg)(EA),(DS)(EA)+2),LDS,LSS,LGS,LFS,第3章 Pentium的指令系统,目的操作数不允许是段寄存器。源操作数不允许是立即数和寄存器方式。,58,2023/3/9,假设:(DS)=C 000H 指令:LDS SI,0010H 执行指令后:(SI)=0180H(DS)=2000H,第3章 Pentium的指令系统,例:,59,2023/3/9,指令:LSS ESP,EBX 执行指令后:(ESP)=12345678H(SS)=9ABCH,78H,56H,34H,12H,BCH,.,存储器,BCH,09H,EBX,第3章 Pentium的指令系统,例:,60,2023/3/9,7.标志传送指令(Flag register transfer),功 能:LAHF 将标志寄存器的低8位取到AH中。SAHF 将AH的内容送入标志寄存器低8位中。,LAHF;(AH)(PSW的低字节)SAHF;(PSW的低字节)(AH),AH,Flag,LAHF不影响标志位,SAHF由装入的值确定标志位的值,即影响标志位。,第3章 Pentium的指令系统,61,2023/3/9,PUSHFPOPF,PUSHFDPOPFD,对标志寄存器的推入和弹出堆栈指令,功 能:PUSHF 将标志寄存器的低16位推入到堆栈中。POPF 从堆栈中弹出一个字的内容送入标志寄存器低16位中。,功 能:PUSHFD 将标志寄存器的32位推入到堆栈中。POPFD 从堆栈中弹出一个字的内容送入32位标志寄存器中。,第3章 Pentium的指令系统,62,2023/3/9,设:(DS)=5000H TABLE=1000H 各单元内容如图 分析下列指令执行结果:MOV BX,TABLE;(BX)=MOV BX,OFFSET TABLE;(BX)=LEA BX,TABLE;(BX)=LES BX,TABLE;(BX)=,(ES)=LDS BX,TABLE;(BX)=,(DS)=,习题:,63,2023/3/9,第3章 Pentium的指令系统,3.2.2 算术运算指令(Arithmetic),功能:提供加、减、乘、除、类型转换五种基本算术操作;利用十进制调整指令和ASCII调整指令对BCD码表示的 十进制数进行算术运算;对带符号数与无符号数进行乘、除运算。,特点:大部分都影响标志位,不同指令影响不同:都可以用于字节、字、双字的运算;双操作数指令当源不为立即数时,必须有一个操作数为 寄存器;单操作数指令不能为立即数。,64,2023/3/9,1)数的表示范围 a.无符号数 N位二进制数可表示的无符号数范围为02N-1。例如,8位二进制数00H0FFH表示0255,16位二进制数0000H0FFFFH表示065535。b.有符号数 N位二进制补码数可以表示的带符号数范围为-2N-12N-1-1。例如,8位二进制数可以表示-128127,16位二进制数可以表示-3276832767。,CF=1,OF=1,第3章 Pentium的指令系统,溢出问题,65,2023/3/9,这样两个有/无符号数进行加减运算时,如果运算结果超出可表示的数值范围,会发生出错,产生溢出现象。溢出只能出现在两个同号数相加和两个异号数相减的情况下。通常判别溢出的方法用双高位法:所谓双高位判别,即规定符号位(用CS表示)有进位时,CS=1,否则 CS=0。数值部分最高位(CP表示)有进位时CP=1,否则 CS=0。若CSCP=1(异或运算),则有溢出产生。,CS,CP,CSCP=1,溢出,第3章 Pentium的指令系统,如何判别溢出,66,2023/3/9,1.加法类指令(Addition),ADD dest,src;(dest)(dest)+(src),立即数,寄存器,存储器,寄存器,存储器,1)不带进位位的加法指令ADD,ADDCX,1000H ADDDI,SI ADD BX+DI,AX ADDEAX,BX+2000H,第3章 Pentium的指令系统,67,2023/3/9,MOV AL,7EH;(AL)=7EHMOV BL,5BH;(BL)=5BHADD AL,BL;(AL)=7EH+5BH=D9H影响标志位的情况:SF=1,结果最高位1 ZF=0,结果不等于0 AF=1,D3 位向D4 有进位 PF=0,”1”的个数为奇数 CF=0,无进位 OF=1,和超过127(两个正数相加,结果为负;反之亦是),第3章 Pentium的指令系统,例:,68,2023/3/9,ADCAX,SI ADCDX,SIADCBX,3000H,2)带进位位的加法指令ADC,ADC dest,src;(dest)(dest)+(src)+CF,CF:进位标志CF的现行值(上条指令CF值),用途:主要用于多字节运算中。,第3章 Pentium的指令系统,69,2023/3/9,计算两个多字节数相加3B74AC60F8H+20D59E36C1H=?,流程图,多字节数内存存放,两个多字节数存放在:DATA1,DATA2的开始单元。,举例:,第3章 Pentium的指令系统,70,2023/3/9,程序:MOV CX,5MOV SI,0;清SICLC;清CFLOOPER:MOV AL,DATA2SIADC DATA1SI,ALINC SI;(SI)+1(SI)DEC CX;(CX)-1(CX)JNZ LOOPER;(CX)0转HLT;停机,第3章 Pentium的指令系统,71,2023/3/9,3)字交换加法指令XADD,XADD dest,src;(dest)(src),(dest)+(src)(dest),例:已知EAX=20000002H,1000H开始的内存单元中为30000003H 执行指令XADD 1000H,EAX,EAX=30000003H,1000H开始的内存单元中为50000005H,源操作数必须是寄存器。目的操作数可以是存储器和寄存器方式。,第3章 Pentium的指令系统,72,2023/3/9,4)增量指令INC,INC dest;(dest)(dest)+1,寄存器、存储器。不能是段寄存器,(Increment by 1),功能:对指定的目标操作数+1 操作数单元。用途:用于在循环程序中修改地址指针和循环次数。标志位影响情况:影响SF,ZF,AF,PF,OF。不影响CF。,第3章 Pentium的指令系统,73,2023/3/9,2.减法类指令(Subtraction),1)不考虑借位的减法指令SUB,SUB dest,src;(dest)(dest)-(src),立即数,寄存器,存储器,寄存器,存储器,SUB EBX,ECXSUB BP+2,CLSUB SI,5010HSUB WORD PTR DI,1000H,第3章 Pentium的指令系统,74,2023/3/9,2)考虑借位的减法指令SBB(Subtraction with borrow),SBB AX,2530HSBB WORD PTREDI+2,1000H,SBB dest,src;(dest)(dest)-(src)-CF,用途:用于多字节数相减,3)减量指令DEC(Decrement by 1),DEC dest;(dest)(dest)-1,寄存器、存储器。不能是段寄存器,第3章 Pentium的指令系统,75,2023/3/9,DEC 用途举例:MOV AX,0FFFFHCYC:DEC AX JNZ CYC HLT 用于延时时间。,第3章 Pentium的指令系统,76,2023/3/9,4)求补指令NEG(Negate),NEG dest;(dest)0-(dest),寄存器、存储器,操作:把操作数按位求反后末位+1。(dest)0FFFFH-(dest)+1,1。操作数的原值为正数,求补后变为其负数的补码。2。操作数的原值为负数(以补码形式表示),求补后变为其对应的正数。3。影响各标志位。4。操作数不能为段寄存器。,NEG EAX NEG ECX,第3章 Pentium的指令系统,77,2023/3/9,求绝对值在内存中,从AREA1开始存放100个带符号数。求各数的绝对值将其存于AREA2的开始单元。,流程图,第3章 Pentium的指令系统,应用举例,78,2023/3/9,程序:LEA SI,AREA1LEA DI,AREA2 MOV CX,100CHECK:MOV AL,SIOR AL,AL;(AL)内容不变,置标志JNS NEXT;SF=0转NEXTNEG AL;负数求补 NEXT:MOV DI,AL;送目标INC SIINC DIDEC CXJNZ CHECKHLT,79,2023/3/9,5)比较指令CMP(Compare),CMP dest,src;(dest)-(src),立即数,寄存器,存储器,寄存器,存储器,影响标志:A、C、O、P、S、Z。只置标志位,CMP AX,2000HCMP EAX,EBX+EDI+100CMP EDX,EDI,第3章 Pentium的指令系统,80,2023/3/9,用途:用比较指令来比较两个数之间的关系:两者是否相等,两个数中哪个大。(1)根据Z标志,判断两者是否相等;(2)根据CF标志,判断两个无符号数的大小;(3)用SF、OF标志,判断二个带符号数的大小。,CMP AX,BXZF=1,(AX)=(BX),两者相等ZF=0,(AX)=(BX),两者不相等,比较AX,BX寄存器,将大数(AX)CMP AX,BX JNC NEXT;CF=0转NEXT XCHG AX,BX NEXT:结论:CF=0,(AX)(BX);CF=1,(AX)(BX),第3章 Pentium的指令系统,81,2023/3/9,四种情况讨论(操作数以8位为例):,第3章 Pentium的指令系统,82,2023/3/9,6)比较并交换指令 CMPXCHG,CMPXCHG dest,src;目的数与累加器比较,寄存器,寄存器,存储器,只影响ZF标志:ZF=1 源操作数目的 ZF=0 目的操作数累加器,举例:EBX=76543210H,ECX=01234567H,EAX=01234567H,则执行指令CMPXCHG ECX,EBX后:,EBX=76543210H,ECX=76543210H,EAX=01234567H,,第3章 Pentium的指令系统,83,2023/3/9,7)8字节比较指令 CMPXCHG8B,CMPXCHG8B dest,存储器,举例:EAX=11111111H,EBX=22222222H,ECX=33333333H,EDX=44444444H,设DS段1000H所指单元开始的8字节为4444444411111111H,执行指令 CMPXCHG8B1000H,功能:1.EDX:EAX中存储8个字节与存储器中的8个字节比较2.ZF=1,将ECX:EBX中8个字节送到目的操作数中去3.ZF=0,将目的操作数送入EDX:EAX,只影响ZF标志,第3章 Pentium的指令系统,84,2023/3/9,3.乘法类指令(Multiplication),1)无符号数的乘法指令 MUL,MUL Src;无符号字节/字/双字乘法,MUL CXMUL BYTE PTR DIMUL WORD PTR SI,对标志没有定义:指令执行后这些标志是任意的、不可预测(就是谁也不知道是0还是1)对标志没有影响:指令执行不改变标志状态,第3章 Pentium的指令系统,85,2023/3/9,IMUL DX,BX,300IMULCX,23IMULEBP,200IMULECX,EDX,2000,2)有符号数的乘法指令 IMUL,IMUL CLIMULBX,100IMUL BYTE PTR BX IMUL WORD PTR DI,3)有符号数乘法指令的扩充形式,IMULBX,CX IMULEDX,ECX IMULDI,MEM_WORD IMULEDX,MEM_DWORD,IMUL Src;有符号字节/字/双字乘法,第3章 Pentium的指令系统,86,2023/3/9,4.除法类指令(Division),DIV Src;无符号字节/字/双字除法,1)无符号数的除法指令DIV,DIVCLDIVWORD PTR DI,第3章 Pentium的指令系统,87,2023/3/9,2)有符号数的除法指令IDIV,IDIV BXIDIV BYTE PTRDI,【例】:写出实现带符号数0400H/0B4H运算的程序段。MOV AX,0400H;(AX)=0400H=1024 MOV BL,0B4H;(BL)=0B4H=-76 IDIV BL;商(AL)=0F3H=-13,余数(AH)=24H=36,IDIV Src;有符号字节/字/双字除法,第3章 Pentium的指令系统,88,2023/3/9,5.转换指令,CBW;AXAL,CWD;DX、AXAX,CWDE;EAXAX,CQD;EDX、EAXEAX,功能:在两个长度不等的数进行运算时,将长度短的数的位数扩展,以使两数的长度一致,类型相同。对无符号数,只须将高位字节或字、双字补0;对带符号数,扩展时高位补0或补1取决被扩展数的符号位,正数则高位补0,负数补1。,第3章 Pentium的指令系统,89,2023/3/9,mov al,80h;al=80hcbw;ax=ff80hmov ax,0BA45H;ax=0BA45Hcwd;dx=0ffffh,ax=0ba45h,单操作码指令 隐含对AL或AX进行符号扩展 不影响标志位,第3章 Pentium的指令系统,90,2023/3/9,MOV AX,X IMUL Y;x*y(DX,AX)MOV CX,AX MOV BX,DX;(DX,AX)(BX,CX)MOV AX,Z CWD;WORD DWORD ADD CX,AX ADC BX,DX;x*y+z SUB CX,540 SBB BX,0;x*y+z-540 MOV AX,V CWD SUB AX,CX SBB DX,BX;v-(x*y+z-540)IDIV X;(v-(x*y+z-540)/x,第3章 Pentium的指令系统,例:,x,y,z,v均为16位带符号数,计算(v-(x*y+z-540)/x,91,2023/3/9,6.BCD码指令,BCD码:用二进制编码的十进制数,又称二-十进制数组合BCD码:用4位二进制数表示1位十进制数 例:(59)10(0101 1001)BCD非组合(分离)BCD码:用8位二进制数表示1位十进制数 例:(59)10(0000 0101 0000 1001)BCD 数字的ASCII码是一种组合BCD码DIGITASCII BCD0 0011 0000 0000 00001 0011 0001 0000 00012 0011 0010 0000 0010 9 0011 1001 0000 1001,第3章 Pentium的指令系统,92,2023/3/9,BCD数的运算结果,19 组合BCD:0001 1001,+08+0000 1000,27 0010 0001,问题的提出:,08 组合BCD:0000 1000,+07+0000 0111,15 0000 1111,第3章 Pentium的指令系统,93,2023/3/9,1)加减法的组合BCD调整指令:,;AL将AL中和调整为组合BCD码,差,DAA和DAS指令的调整方法:AF1或(AL)03AF,则(AL)(AL)06H,AF1CF1或(AL)47AF,则(AL)(AL)60H,CF1(DAA做+,DAS做-),注意:*隐含的操作寄存器为AL*紧接在加减指令之后使用*影

    注意事项

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

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




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开