欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    微机原理第3章 8086指系统.ppt

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

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

    微机原理第3章 8086指系统.ppt

    微机原理及应用微机原理及应用微机原理及应用微机原理及应用第第3 3章章 指令系统指令系统2023/4/21第第 3 3 章章 指令系统指令系统主要内容主要内容学习目的学习目的知识点知识点重点难点重点难点28086/80888086/8088指令系统指令系统基本数据类型;基本数据类型;主要内容主要内容计算机指令格式;计算机指令格式;213480868086寻址方式;寻址方式;31掌握指令的寻址方式;2了解指令的机器语言格式;3掌握8086/8088的指令系统;学习目的学习目的4n3.1 80863.1 8086数据类型和指令码格式数据类型和指令码格式n3.2 80863.2 8086操作数寻址方式操作数寻址方式n3.3 3.3 程序转移地址的寻址方式程序转移地址的寻址方式n3.4 80863.4 8086指令系统指令系统n3.5 3.5 数据传送指令数据传送指令n3.6 3.6 算术运算指令算术运算指令n3.7 3.7 逻辑运算和移位指令逻辑运算和移位指令n3.8 3.8 串处理指令串处理指令n3.9 3.9 程序转移指令程序转移指令n3.10 3.10 处理器控制指令处理器控制指令知识点知识点51指令的寻址方式;2指令系统;重点重点6十进制调整指令;串操作指令;难点难点73.1 数据类型数据类型nIA32结构的基本数据类型结构的基本数据类型q字节:8位q字:16位,2个字节q双字:32位,4个字节q四字:64位,8个字节(80486CPU引入)q双四字:128位,16个字节(Pentium III)n数据在内存中的字节顺序数据在内存中的字节顺序q80X86多字节数据的存放原则是低位字节在低端地址,高位字节在高端地址。83.1 数据类型数据类型n字、双字、四字和双四字的对齐字、双字、四字和双四字的对齐q字、双字、四字和双四字不需要对齐至自然边界n自然边界:偶数编号的地址自然边界:偶数编号的地址n对其的理由:处理器只需一次存储器访问,否则需要访问对其的理由:处理器只需一次存储器访问,否则需要访问两次。两次。例:例:1234H存在存在1000H单元:数据在内存中的顺序为:单元:数据在内存中的顺序为:34H12H1000H单元单元1001H单元单元93.1 数据类型数据类型n数字数据类型数字数据类型q整数n无符号整数无符号整数n带符号整数带符号整数q浮点数据类型n单精度浮点数单精度浮点数n双精度浮点数双精度浮点数q指针数据类型:指针是内存单元地址n近指针:近指针:32位位n远指针:远指针:64位位103.1 数据类型数据类型n位字段数据类型位字段数据类型q一个位字段(见图3-5)是连续的位序列。它能在内存中任何字节的任一位位置开始并能包含最多至32位。n串数据类型串数据类型q串是位、字节、字或双字的连续序列。位串能从任一字节的任一位开始并能包含多至232-1位。字节串能包含字节、字或双字。113.2 8086指令系统指令系统n指令及指令系统指令及指令系统q指令控制计算机完成指定操作的命令q机器指令指令的二进制代码形式。例如:CD21Hq汇编指令助记符形式的指令。例如:INT 21Hq指令系统CPU所有指令及其使用规则的集合123.2 8086指令系统指令系统n8088/8086指令系统:q指令向后兼容(指令向后兼容(x86系列)系列)q应用广泛应用广泛,资料易于寻找资料易于寻找133.2 8086指令系统指令系统(1)数据传送类;)数据传送类;(2)算术运算类;)算术运算类;(3)逻辑运算和移位;)逻辑运算和移位;(4)串操作;)串操作;(5)控制转移类;)控制转移类;(6)处理器控制。)处理器控制。14部分部分8088常用指令常用指令指令类型助记符数数据据传传送送数据传送数据传送MOV,PUSH/POP,XCHG等等地址传送地址传送LEA,LDS,LES输入输出输入输出IN,OUT算算术术运运算算加法加法ADD,ADC,INC减法减法SUB,SBB,DEC,NEG,CMP乘乘/除法除法MUL,IMUL,DIV,IDIV逻辑逻辑AND,OR,NOT,XOR,TEST移位移位SHL/SHR/SAR,ROL/ROR,RCL/RCR串操作串操作MOVS,CMPS,SCAS,LODS,STOS控制转移控制转移JMP,JXX,LOOP,CALL/RET,INT/IRET153.2.1 指令的基本构成指令的基本构成说明说明要执行要执行的是什么操的是什么操作作操作对象,可操作对象,可以有以有0个、个、1个个或或2个个目的目的源源Label:标号16举例举例ADD AX,SI+6MOV AX,BX操作码 操作数INC BXHLTLoading:173.2.2 8086 CPU指令格式指令格式汇编指令汇编指令:用助记符表示机器指令的操作码和操:用助记符表示机器指令的操作码和操作数,例如上面指令的汇编指令是作数,例如上面指令的汇编指令是 MOV AL,62HMOV AL,62H机器指令机器指令:计算机能识别和执行的指令的二进制:计算机能识别和执行的指令的二进制代码。如:代码。如:10110000011000101011000001100010183.2.2 8086 CPU指令格式指令格式n8086 CPU指令格式指令格式立即数立即数位移量位移量寄存器寄存器方式方式操作码操作码1-21-2字字节节低低字字节节1-21-2字字节节1 1字节字节(寻址方式)(寻址方式)1 1字节字节高高字字节节高高字字节节低低字字节节r/mr/m3 3位位regreg3 3位位modmod2 2位位opcodeopcode193.2.3 8086的操作数的操作数1 1、立即数、立即数8位位16位位无符号数无符号数00H-FFH(0-255)0000H-FFFFH(0-65535)带符号数带符号数80H-7FH(-128127)8000H-7FFFH(-3276832767)MOV AX,0FA00H;正确正确MOV 8000H,DX;错误错误203.2.3 8086的操作数的操作数2 2、寄存器操作数、寄存器操作数213.2.3 8086的操作数的操作数只能存放字操作数只能存放字操作数段寄存器存放段寄存器存放当前操作数的当前操作数的段基地址段基地址不允许将立即数传送到段寄存器不允许将立即数传送到段寄存器SIDIBPSPCSDSESSS223.2.3 8086的操作数的操作数3 3、存储器操作数、存储器操作数存储器操作数存储器操作数字节字节字字双字双字124类型类型存储单元个数存储单元个数一般一般不允许不允许两个两个操作数同时为存储器操作数操作数同时为存储器操作数MOV AX,BX233.3 8086操作数的寻址方式操作数的寻址方式n寻址方式寻找操作数的方法q 寻找操作数的地址(一般指源操寻找操作数的地址(一般指源操作数)作数)q 寻找要执行的下一条指令的地址寻找要执行的下一条指令的地址243.3 8086操作数的寻址方式操作数的寻址方式n计算机中操作数数按存放的方法分为:计算机中操作数数按存放的方法分为:q立即数(指令中)q寄存器数q存储器数qI/O端口操作数操作数寻址方式寻址方式立即数立即数立即数寻址立即数寻址寄存器数寄存器数寄存器寻址寄存器寻址相对基址变址寻址相对基址变址寻址存储器数存储器数直接寻址直接寻址寄存器间接寻址寄存器间接寻址基址变址寻址基址变址寻址变址寻址变址寻址端口寻址端口寻址直接寻址直接寻址寄存器间接寻址寄存器间接寻址253.3.1 立即数寻址立即数寻址操作数操作数(为一常数为一常数)直接直接由指令给出由指令给出:例例:MOV AL,80 H MOV AX,1090 H MOV CX,100错误例:错误例:MOV 2A00H,AX ;1090H AH AL263.3.2 寄存器寻址寄存器寻址操作数在寄存器中。操作数在寄存器中。MOV AH,BL MOV AX,BX MOV CX,AX错误例:错误例:MOV AX,BL ;字长不同字长不同 MOV ES:AX,DX ;寄存器与段无关寄存器与段无关273.3.3 存储器操作数寻址方式存储器操作数寻址方式1 1、规定段寄存器规定段寄存器283.3.3 存储器操作数寻址方式存储器操作数寻址方式任何内存任何内存实际地址实际地址都由两部分组成:都由两部分组成:实际地址实际地址段基址段内偏移地址(此单元与段基段基址段内偏移地址(此单元与段基址的距离)址的距离)段内的段内的偏移地址偏移地址又称为又称为有效地址(有效地址(EA):8086:EA基地址寄存器内容索引位移量基地址寄存器内容索引位移量2 2、规定偏移量、规定偏移量293.3.3 存储器操作数寻址方式存储器操作数寻址方式BX SIBP DIEA=8 或 16 位移量+EA=8 或16 位移量BX BP SI DI +8086CPU,有效地址有效地址EA计算计算:303.3.3 存储器操作数寻址方式存储器操作数寻址方式 操作数在存储器中,其地址由指令提供操作数在存储器中,其地址由指令提供。例例:MOV AXMOV AX,1070 H 1070 H DS=2000 H DS=2000 H,物理地址为:,物理地址为:PA=20000H+1070H=21070 HPA=20000H+1070H=21070 H A1H70H10H.代码段代码段 20 H 30 H 数据段数据段2000:10702000:10712000:1072AH ALAX直接寻址直接寻址1313.3.3 存储器操作数寻址方式存储器操作数寻址方式操作数的偏移地址(有效地址EA)放在寄存器中只有SI、DI、BX和BP可作间址寄存器例:例:MOV AX,BX MOV CL,CS:DI错误例错误例:MOV AX,DX MOV CL,AX寄存器间接寻址寄存器间接寻址 2323.3.3 存储器操作数寻址方式存储器操作数寻址方式例:例:MOV AL,BX+5;若若DS=6000H,BX=2000H,寄存器相对寻址寄存器相对寻址3333.3.3 存储器操作数寻址方式存储器操作数寻址方式nEA=间址寄存器的内容加上一个间址寄存器的内容加上一个8/16位的位移位的位移量量EA=(BX)(BP)(SI)(DI)+8位16位位移量 343.3.3 存储器操作数寻址方式存储器操作数寻址方式例:例:MOV AXMOV AX,BX+SIBX+SIBX=2000H,SI=0006HBX=2000H,SI=0006H基址变址寻址方式基址变址寻址方式4353.3.3 存储器操作数寻址方式存储器操作数寻址方式nEA=一个基址寄存器的内容一个基址寄存器的内容+一个变址寄存器一个变址寄存器EA=(BX)(BP)+(SI)(DI)同一组内的寄存器不能同时出现同一组内的寄存器不能同时出现363.3.3 存储器操作数寻址方式存储器操作数寻址方式例:例:MOV AH,BX+DI+1234H相对基址变址寻址相对基址变址寻址5373.3.3 存储器操作数寻址方式存储器操作数寻址方式nEA=一个基址寄存器的内容一个基址寄存器的内容+一个变址寄存器一个变址寄存器+一个相对位移量一个相对位移量EA=(BX)(BP)+(SI)(DI)+8位16位位移量 383.3.4 I/O3.3.4 I/O端口寻址端口寻址I/OI/O端口寻址(当端口寻址(当I/OI/O端口按独立的端口按独立的I/OI/O空间编址时)空间编址时)1 1、直接端口寻址:、直接端口寻址:指令直接提供8位端口地址。例例:IN AL,63H;(AL)(63H)IN AL,63H;(AL)(63H)从从I/OI/O地址地址号为号为6363H H的端口中读取数据送到的端口中读取数据送到ALAL中中 393.3.4 I/O3.3.4 I/O端口寻址端口寻址例例:IN AL,DX;(AL)(DX)OUT DX,AL;将AL中的内容输出到地址由DX寄存器内容所指定的端口中2 2、间接端口寻址方式:间接端口寻址方式:由DX寄存器给出16位端口地址。403.4 IA-32通用指令通用指令8086汇编指令系统,分为汇编指令系统,分为6类:类:n数据传送指令数据传送指令n算术运算指令算术运算指令n逻辑运算、移位逻辑运算、移位n串操作指令串操作指令n控制转移指令控制转移指令n处理器控制指令处理器控制指令413.4.1 3.4.1 数据传送指令数据传送指令 80868086指令系统指令系统操作数符号表示操作数符号表示 DST:目的操作数 SRC:源操作数 TARGET:循环、转移和调用指令操作数 reg:寄存器操作数,字节或字 reg8:寄存器操作数,字节 reg16:寄存器操作数,字 mem:存储器操作数,字节或字 mem8:字节型存储器操作数 mem16:字型存储器操作数 mem32:双字型存储器操作数 acc:累加器AL或AX423.4.1 数据传送指令数据传送指令1 1、MOV MOV destdest,srcsrc;destsrcdestsrc 传送的是字节还是字取决于指令中涉及的寄传送的是字节还是字取决于指令中涉及的寄存器是存器是8 8位还是位还是1616位。位。具体来说可实现:具体来说可实现:MOV mem/reg1MOV mem/reg1,mem/reg2mem/reg2 指令中两操作数中至少有一个为寄存器指令中两操作数中至少有一个为寄存器 例例:MOV:MOVCLCL,DLDL MOV MOVAXAX,BXBXMOVMOVSISI,CXCXMOVMOVCLCL,BX+5BX+5433.4.1 数据传送指令数据传送指令 MOV MOV regreg,data ;data ;立即数送寄存器 MOV MOV memmem,data ;data ;立即数送存储单元 MOV accMOV acc,memmem ;存储单元送累加器 MOV MOV memmem,acc ;acc ;累加器送存储单元 MOV MOV segregsegreg,mem/regmem/reg;存储单元/寄存器送 段寄存器 MOV MOV mem/regmem/reg,segregsegreg;段寄存器送存储单 元/寄存器443.4.1 数据传送指令数据传送指令nMOV指令使用规则:指令使用规则:qIP不能作目的寄存器q不允许memmemq不允许segregsegregq立即数不允许作为目的操作数q不允许segreg立即数q源操作数与目的操作数类型要一致453.4.1 数据传送指令数据传送指令n几个不能传送的解决办法:用几个不能传送的解决办法:用AX作桥梁作桥梁q存储器存储器:MOV AXMOV AX,MEM1MEM1 MOV MEM2 MOV MEM2,AXAXq段寄存器段寄存器:MOV AXMOV AX,DSDS MOV ES MOV ES,AXAXq段寄存器立即数:MOV AXMOV AX,DATADATA MOV DS MOV DS,AXAX463.4.1 数据传送指令数据传送指令2 2、堆栈操作指令、堆栈操作指令什么是堆栈?按“后进先出(LIFO)”方式工作的存储区域。堆栈以字为单位以字为单位进行压入弹出操作。为什么要设置堆栈?为什么要按“后进先出”方式工作?参见下图47主程序IP继续执行主程序执行子程序转子程序压栈弹出返回主程序主程序IPIP(下)继续执行主程序转子程序1返回主程序IP执行子程序 2返回子程序1IP(下)执行子程序1继续执行子程序1(a)(b)子程序调用示意图(a)主程序调子程序;(b)子程序嵌套示意图压栈弹出IP(下)483.4.1 数据传送指令数据传送指令n规定由规定由SSSS指示堆栈段的段基址,堆栈指针指示堆栈段的段基址,堆栈指针SPSP始始终指向堆栈的顶部,终指向堆栈的顶部,SPSP的初值规定了所用堆栈的初值规定了所用堆栈区的大小。堆栈的最高地址叫栈底。区的大小。堆栈的最高地址叫栈底。SPSS堆栈段堆栈段进栈方向退栈方向栈底栈底栈顶栈顶49 2.12.1压栈指令压栈指令 PUSH src ;src为为16位操作数位操作数 例:例:PUSHAX;将;将AX内容压栈内容压栈 执行操作:(执行操作:(SP)-1高字节高字节AH (SP)-2低字节低字节AL (SP)(SP)-23.4.1 数据传送指令数据传送指令50设(AX)=1020H,执行示意图如图低地址存储区(SS段)执行前(AX)=1020(SP)存储区(SS段)进栈方向执行后2010(AL)(AH)2-8PUSH AX指令执行示意图指令执行示意图(SP)-2(SP)高地址低地址高地址(SP)-13.4.1 数据传送指令数据传送指令513.4.1 数据传送指令数据传送指令压栈指令的格式为:压栈指令的格式为:PUSHPUSH regreg PUSH PUSH mem/regmem/reg PUSH PUSH segregsegreg例如:例如:PUSH AXPUSH AX PUSH BX PUSH BX PUSH DS PUSH DS 注意进栈方向是注意进栈方向是高地址高地址向向低地址低地址发展。发展。523.4.1 数据传送指令数据传送指令2.2 2.2 弹出指令弹出指令 POPPOPdestdest例:例:POPPOPBXBX;将栈顶内容弹至;将栈顶内容弹至BXBX 执行操作:(执行操作:(BLBL)(SPSP)(BHBH)(SPSP)+1+1 (SPSP)(SPSP)+2+2533.4.1 数据传送指令数据传送指令低地址存储区(SS段)出栈方向执行前2010(SP)存储区(SS段)执行后(BX)=1020(SP)BX2010高地址低地址高地址POP BX指令执行示意图指令执行示意图543.4.1 数据传送指令数据传送指令堆栈指令使用时应注意几点:堆栈操作总是按堆栈操作总是按字字进行进行不能从栈顶弹出一个字给不能从栈顶弹出一个字给CSCS堆栈指针为堆栈指针为SS:SPSS:SP,SPSP永远指向栈顶永远指向栈顶SPSP自动进行增减量(自动进行增减量(-2-2,+2+2)553.4.1 数据传送指令数据传送指令3 3、交换指令、交换指令XCHGXCHG格式:格式:XCHG XCHG regreg,mem/regmem/reg功能:交换两操作数的内容。功能:交换两操作数的内容。要求:两操作数中必须有一个在寄存器中;要求:两操作数中必须有一个在寄存器中;操作数不能为段寄存器和立即数;操作数不能为段寄存器和立即数;源和目地操作数类型要一致。源和目地操作数类型要一致。举例:举例:XCHGXCHGAXAX,BXBX XCHG XCHG20002000,CLCL563.4.1 数据传送指令数据传送指令4 4、查表指令、查表指令XLATXLAT执行的操作:执行的操作:AL(BX)+(AL)AL(BX)+(AL)又又叫叫查查表表转转换换指指令令,它它可可根根据据表表项项序序号号查查出出表表中中对对应应代代码码的的内内容容。执执行行时时先先将将表表的的首首地地址址(偏移地址)送到(偏移地址)送到BXBX中,表项序号存于中,表项序号存于ALAL中。中。例例如如:内内存存数数据据段段有有一一张张1616进进制制数数的的ASCIIASCII码码表表,设设首首地地址址为为2000H2000H,如如欲欲查查出出表表中中第第1111个个代代码码(代代码码序序号号从从0 0开开始始)即即十十六六进进制制数数B B的的ASCIIASCII码码。ASCIIASCII表表 在在 DSDS段段 中中,并并 假假 设设(DS)=4000H(DS)=4000H。见下页图。见下页图。573.4.1 数据传送指令数据传送指令303132.394142.4546.42000H+042000H+0BH0129ABEF十六进制数十六进制数ASCIIASCII码表码表存储器583.4.1 数据传送指令数据传送指令则可用如下几条指令实现则可用如下几条指令实现:MOV BX,2000H;(BX)表首地址MOV AL,0BH ;(AL)序号XALT ;查表转换执行后得到:(AL)=42H=B注意:转换表长度最大为注意:转换表长度最大为256256个表项个表项(字节字节)。593.4.1 数据传送指令数据传送指令5 5、字节、字节-字转换指令字转换指令格式:格式:CBW ;把把AL的符号位复制到的符号位复制到AH CWD ;把把AX的符号位复制到的符号位复制到DX用途:用于有符号数的除法。用途:用于有符号数的除法。例:例:(AL)=A7H,则执行,则执行CBW后,后,AH的内的内 容为容为FFH。603.4.1 数据传送指令数据传送指令6 6、输入输出(、输入输出(I/OI/O)指令)指令只限于用只限于用累加器累加器ALAL或或AXAX来传送信息。来传送信息。功能功能:(:(累加器累加器)I/OI/O端口端口6.1 6.1 输入指令输入指令ININ格式格式:IN IN acc,PORTacc,PORT;PORT;PORT端口号端口号0 0255255 IN IN acc,DXacc,DX ;DX ;DX表示的端口范围达表示的端口范围达64K64K例例:IN ALIN AL,80H80H ;(AL ;(AL)(80H(80H端口端口)IN ALIN AL,DXDX ;(AL ;(AL)(DX)(DX)613.4.1 数据传送指令数据传送指令6.2 6.2 输出指令输出指令OUTOUT格式:格式:OUT port,acc OUT DX,acc例:例:OUT 68HOUT 68H,AXAX ;(69H ;(69H,68H68H)(AXAX)OUT DXOUT DX,ALAL ;(DX)(AL);(DX)(AL)在在使使用用间间接接寻寻址址的的IN/OUTIN/OUT指指令令时时,要要事事先先用用传传送送指令把指令把I/OI/O端口号设置到端口号设置到DXDX寄存器,如:寄存器,如:MOV DXMOV DX,220H220H IN ALIN AL,DXDX ;将将220H220H端口内容读入端口内容读入ALAL623.4.1 数据传送指令数据传送指令7 7、地址传送指令、地址传送指令共有三条共有三条:格式:格式:LEA LEA regreg,memmem;将指定存储器的将指定存储器的1616位偏移位偏移 地址送指定寄存器地址送指定寄存器 LDS LDS regreg,mem32,mem32;DS:regDS:reg(mem(mem开始的四开始的四 个内存单元个内存单元)LES LES regreg,mem32,mem32;同上,但同上,但DSDS改为改为ES ES 要要求求源源操操作作数数必必须须是是一一个个内内存存操操作作数数,目目的的操操作作数数必必须须是一个是一个1616位的通用寄存器。位的通用寄存器。633.4.1 数据传送指令数据传送指令例:例:LEABX,SI+10H设:(设:(SISI)=1000H=1000H则执行该指令后,(则执行该指令后,(BXBX)=1010H=1010H注意以下两条指令差别:注意以下两条指令差别:LEA BXLEA BX,BUFFER BUFFER MOV BX MOV BX,BUFFERBUFFER前前者者表表示示将将符符号号地地址址为为BUFFERBUFFER的的存存储储单单元元的的偏偏侈侈地地址址取取到到 BXBX中中;后后者者表表示示将将BUFFERBUFFER存存储储单单元元中中的内容取的内容取到到 BXBX中中.643.4.1 数据传送指令数据传送指令下面两条指令等效:LEA BX,BUFFER MOV BX,OFFSET BUFFER其中OFFSET BUFFER表示存储器单元BUFFER的偏移地址。二者都可用于取存储器单元的偏移地址,但LEA指令可以取动态的地址,OFFSET只能取静态的地址。653.4.1 数据传送指令数据传送指令8 8、标志传送指令、标志传送指令共有四条:8.1 读标志指令读标志指令LAHF LAHF把标志寄存器低8位中的5个标志位传送到AH中的指定位,如下图所示:OF DF IF TF SF ZFAFPFCFAHFLAG663.4.1 数据传送指令数据传送指令8.2 8.2 设置标志指令设置标志指令SAHF SAHF的功能与LAHF的功能正好相反,用图来示意,只要将上图中5个箭头方向反一下即可。OF DF IF TF SF ZFAFPFCFAHFLAG673.4.1 数据传送指令数据传送指令9 9、标志寄存器出入栈、标志寄存器出入栈9.1 9.1 把标志寄存器推入栈顶指令把标志寄存器推入栈顶指令PUSHF执行的操作执行的操作:(SP)-1:(SP)-1标志寄存器高标志寄存器高8 8位位 (SP)-2(SP)-2标志寄存器低标志寄存器低8 8位位 (SP)(SP)(SP)-2(SP)-29.2 9.2 从栈顶弹出标志寄存器指令从栈顶弹出标志寄存器指令POPF 执行的操作执行的操作:标志寄存器标志寄存器低低8 8位位(SP)(SP)标志寄存器标志寄存器高高8 8位位(SP)+1(SP)+1 (SP)(SP)(SP)+2(SP)+2PUSHF和和POPF指令用于保护和恢复标志寄存器内容。指令用于保护和恢复标志寄存器内容。683.4.1 数据传送指令数据传送指令例如:PUSHPUSHAXAX PUSH PUSHCXCX PUSHFPUSHF ;保护标志寄存器内容保护标志寄存器内容 ;这段程序要用到这段程序要用到AX,CXAX,CX以及标志位以及标志位 POPFPOPF ;恢复标志寄存器内容恢复标志寄存器内容 POPPOPCXCX POP POPAXAX693.4.1 数据传送指令数据传送指令数据传送指令中,除数据传送指令中,除SAHF和和POPF这两条指令外,这两条指令外,其余所有指令均不影响标志位。其余所有指令均不影响标志位。703.4.2 算术运算指令算术运算指令涉及涉及两种类型数据两种类型数据:无符号数和有符号数。对加无符号数和有符号数。对加减法指令,无符号和有符号数可采用同一套指减法指令,无符号和有符号数可采用同一套指令,但应注意:令,但应注意:l 参加的操作数必须都是无符号数或都是有符参加的操作数必须都是无符号数或都是有符号数。号数。l 需使用不同的标志位来检查无符号数和有符需使用不同的标志位来检查无符号数和有符号数的运算结果是否溢出。号数的运算结果是否溢出。713.4.2 算术运算指令算术运算指令两个两个8 8位数相加时有位数相加时有4 4种情况:种情况:无符号数和有符号数均不溢出无符号数和有符号数均不溢出二进制相加 无符号数加 有符号数加 0000 1000 8 +8+0001 1110 +30 +(+30)0010 0110 38 +38 结果38 CF=0 OF=0723.4.2 算术运算指令算术运算指令 无符号数溢出无符号数溢出 0000 1000 8 +8+1111 1101 +253 +(-3)10000 0101 261 +5 结果5 CF=1 OF=0 有符号数溢出有符号数溢出 0000 1000 8 +8+0111 1101 +125 +(+125)1000 0101 133 +133结果-123 CF=0 OF=1(补码表示)补码表示)733.4.2 算术运算指令算术运算指令 无符号数和有符号数均溢出无符号数和有符号数均溢出 1000 1000 136 -120+1111 0111 +247 +(-9)10111 1111 383 -129 结果127 CF=1 OF=1上面四种情况说明,CF标志可用来表示无符号数的溢出,OF标志可用来表示有符号数的溢出。有有符符号号数数的的溢溢出出是是一一种种出出错错状状态态,在在运运算算过过程程中应当避免。中应当避免。743.4.2 算术运算指令算术运算指令1.1.加法指令加法指令共有5条:1.1 1.1 不带进位的加法指令不带进位的加法指令ADDADD 格式:ADDADD acc,dataacc,data ADD ADD mem/reg,datamem/reg,data ADD ADD mem/reg1,mem/reg2mem/reg1,mem/reg2例:ADDADDALAL,30H 30H ADD ADDAXAX,BX+20HBX+20H ADD ADDCXCX,SISI ADD ADDDIDI,200H200HADD指令对标志位(指状态标志)都有影响。753.4.2 算术运算指令算术运算指令1.21.2带进位位的加法指令带进位位的加法指令ADCADC ADCADC指令在形式上和功能上都有与指令在形式上和功能上都有与ADDADD类似,类似,只是相加时还要包括进位标志只是相加时还要包括进位标志CFCF的内容,例的内容,例如:如:ADC ALADC AL,68H68H ;AL ;AL(AL)+68H+(CF)(AL)+68H+(CF)ADC AXADC AX,CXCX ;AX ;AX(AX)+(CX)+(CF)(AX)+(CX)+(CF)ADC BXADC BX,DIDI ;BX ;BX(BX)+DI+1DI(BX)+DI+1DI +(CF)+(CF)763.4.2 算术运算指令算术运算指令nADC指令主要用于多字节加法运算中指令主要用于多字节加法运算中例例:有两个有两个4 4字节的无符号数相加:字节的无符号数相加:2C56F8AC+309E47BE=2C56F8AC+309E47BE=?设被加数、加数分别存放在设被加数、加数分别存放在BUFFER1BUFFER1及及BUFFER2BUFFER2开始的两个存储区内,结果放回开始的两个存储区内,结果放回BUFFER1BUFFER1存储区,如下页图所示。存储区,如下页图所示。因因CPUCPU只只能能进进行行8 8位位或或1616位位的的加加法法运运算算,为为此此可将加法分可将加法分4 4次进行。次进行。773.4.2 算术运算指令算术运算指令56H2CHBEH47HBUFFER1BUFFER2ACHF8H9EH30H被加数加数数据段多字节加法多字节加法示意图示意图.783.4.2 算术运算指令算术运算指令1.3 1.3 加加1 1指令指令INCINC(单操作数指令)(单操作数指令)格式:格式:INC INC reg/memreg/mem功能:类似于功能:类似于C C语言中的语言中的+操作:对指定的操作操作:对指定的操作数加数加1 1 例:例:INC ALINC AL INC SI INC SI INC BYTE PTRBX+4 INC BYTE PTRBX+4注:本指令不影响注:本指令不影响CFCF标志。标志。793.4.2 算术运算指令算术运算指令nADD/ADC对对条件标志位条件标志位(CF/OF/ZF/SF)的影的影响:响:CF位表示无符号数相加的溢出。位表示无符号数相加的溢出。OF位表示带符号数相加的溢出。位表示带符号数相加的溢出。1 结果为负结果为负0 否则否则SF=1 结果为结果为00 否则否则ZF=1 和的最高有效位有向高位的进位和的最高有效位有向高位的进位0 否则否则CF=1 两个操作数符号相同,而结果符号与之相反两个操作数符号相同,而结果符号与之相反0 否则否则OF=803.4.2 算术运算指令算术运算指令2.2.减法指令减法指令2.1 2.1 不考虑借位的减法指令不考虑借位的减法指令SUBSUB 格式:格式:SUB SUB destdest,srcsrc 操作:操作:destdest(dest)-(src(dest)-(src)注:注:1.1.源和目的操作数不能同时为存储器操作数源和目的操作数不能同时为存储器操作数 2.2.立即数不能作为目的操作数立即数不能作为目的操作数指令例子:指令例子:SUB AL,60H SUB BX+20H SUB BX+20H,DXDX SUB AX SUB AX,CXCX813.4.2 算术运算指令算术运算指令2.2 2.2 考虑借位的减法指令考虑借位的减法指令SBBSBBSBBSBB指令主要用于多字节的减法。指令主要用于多字节的减法。格式:格式:SBB SBB destdest,srcsrc操作:操作:destdest(dest)-(src)-(CF(dest)-(src)-(CF)指令例子:SBB AXSBB AX,CXCX SBB WORD PTRSI SBB WORD PTRSI,2080H2080H SBB SI,DX SBB SI,DX823.4.2 算术运算指令算术运算指令例例:x、y、z均均为为32位位数数,分分别别存存放放在在地地址址为为X,X+2;Y,Y+2;Z,Z+2的的 存存 储储 单单 元元 中中,用用 指指 令令 序序 列列 实实 现现wx+y+24-z,结果放在,结果放在W,W+2单元中。单元中。MOV AX,X MOV DX,X+2 ADD AX,Y ADC DX,Y+2 ;x+y ADD AX,24 ADC DX,0 ;x+y+24 SUB AX,Z SBB DX,Z+2 ;x+y+24-z MOV W,AX MOV W+2,DX ;结果存入结果存入W,W+2单元单元833.4.2 算术运算指令算术运算指令2.3 2.3 减减1 1指令指令DECDEC作用类似于作用类似于C C语言中的语言中的”操作符。操作符。格式:格式:DEC DEC opropr 操作:操作:opropr(opr)-1(opr)-1对标志对标志CFCF无影响无影响指令例子:DEC CLDEC CL DEC BYTE PTRDI+2 DEC BYTE PTRDI+2 DEC SI DEC SI 843.4.2 算术运算指令算术运算指令2.4 2.4 求补指令求补指令NEGNEG格式:格式:NEG NEG opropr操作:操作:opropr 0-0-(opr)(opr)对一个操作数取补码相当于用对一个操作数取补码相当于用0 0减去此操作数,减去此操作数,故利用故利用NEGNEG指令可得到负数的绝对值。指令可得到负数的绝对值。例:若例:若(AL)=0FCHAL)=0FCH,则执行,则执行 NEG ALNEG AL后,后,(AL)=04HAL)=04H,CF=1CF=1本例中,本例中,0FCH0FCH为为-4-4的补码的补码,执行求补指令后执行求补指令后,即即得到得到4(-44(-4的绝对值的绝对值)。85SUB/SBBSUB/SBB对标志位对标志位对标志位对标志位(CF/OF/ZF/SF)(CF/OF/ZF/SF)的影响的影响的影响的影响 CF=1表示无符号数减法溢出。表示无符号数减法溢出。OF=1表示带符号数减法溢出。表示带符号数减法溢出。NEGNEG指令对指令对CF/OFCF/OF的影响:的影响:CF:操作数为操作数为0时,求补的结果使时,求补的结果使CF=0,否则,否则CF=1。OF:字节运算对字节运算对-128求补或字运算对求补或字运算对-32768求补时求补时OF=1,否则否则OF=0。1 被减数的最高有效位有向高位的借位被减数的最高有效位有向高位的借位0 否则否则CF=1 两个操作数符号相反,而结果的符号与减数相同两个操作数符号相反,而结果的符号与减数相同0 否则否则OF=863.4.2 算术运算指令算术运算指令3.3.比较指令比较指令CMPCMP格式:格式:CMP CMP destdest,srcsrc操作:操作:(dest)-(srcdest)-(src)CMPCMP也是执行两个操作数相减也是执行两个操作数相减,但结果不送目标操但结果不送目标操作数作数,其结果只反映在标志位上。其结果只反映在标志位上。指令例子:CMP ALCMP AL,0AH0AH CMP CX CMP CX,SISI CMP DI CMP DI,BX+03BX+0387根据标志位来判断比较的结果根据标志位来判断比较的结果1)1)根据根据ZF判断两个数是否相等。若判断两个数是否相等。若ZF=1,=1,则两数则两数相等。相等。2)2)若两个数不相等若两个数不相等,则分两种情况考虑则分两种情况考虑:比较的是两个无符号数比较的是两个无符号数 若若CF=0,=0,则则destdestsrcsrc;若若CF=1

    注意事项

    本文(微机原理第3章 8086指系统.ppt)为本站会员(hwp****526)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

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




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开