书签 分享 收藏 举报 版权申诉 / 226
上传文档赚钱

类型微机原理及单片机应用技术第3章-汇编语言与汇编程序设计基础课件.ppt

  • 上传人(卖家):晟晟文业
  • 文档编号:4599711
  • 上传时间:2022-12-23
  • 格式:PPT
  • 页数:226
  • 大小:5.63MB
  • 【下载声明】
    1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
    2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
    3. 本页资料《微机原理及单片机应用技术第3章-汇编语言与汇编程序设计基础课件.ppt》由用户(晟晟文业)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
    4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
    5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
    配套讲稿:

    如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。

    特殊限制:

    部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。

    关 键  词:
    微机 原理 单片机 应用技术 汇编语言 汇编程序 设计 基础 课件
    资源描述:

    1、微机原理、汇编与接口技术第三章 程序设计的基本技术3.13.13.23.23.33.33.3.5 5符号指令的格式符号指令的格式8088/8086 CPU8088/8086 CPU的寻址方式的寻址方式8088/8086 CPU8088/8086 CPU的指令系统的指令系统汇编语言程序实现汇编语言程序实现3.3.4 4伪指令伪指令3.3.6 6程序设计举例程序设计举例操作助记符操作助记符 目的操作数目的操作数,源操作数源操作数;注释注释 操作助记符,它以符号形式给出该指令进行什么操作,如数据传送MOV 加ADD 减SUB和逻辑与AND等操作数可以是操作数本身,可以是寄存器,也可以是地址表达式有的

    2、操作数隐含在助记符中(形式上无操作数),有的只有1个操作数,有的有2个操作数,有的有3个操作数,故符号指令的表示中使用了可选择符号 。3.1 3.1 符号指令格式符号指令格式指令格式:指令格式:标号:标号:操作码操作码 ,操作数操作数 ;注释注释标号:内存码段中存放该指令的第一个字节的地址。标号:内存码段中存放该指令的第一个字节的地址。操作码:操作的性质。操作码:操作的性质。操作数:操作的对象,可以是操作数本身或存放操作数:操作的对象,可以是操作数本身或存放操作数的内存操作数的内存(I/O端口端口)地址。地址。注释:查看程序用,不参加编译运行。注释:查看程序用,不参加编译运行。寻址方式寻址方式

    3、:指令中如何求出操作数有效地址的方指令中如何求出操作数有效地址的方法法(1)(1)立即寻址立即寻址 (2)(2)寄存器寻址寄存器寻址(3)(3)直接寻址直接寻址 (4)(4)寄存器间接寻址寄存器间接寻址(5)(5)寄存器相对寻址寄存器相对寻址 (6)(6)基址变址寻址基址变址寻址(7)(7)相对基址变址寻址相对基址变址寻址3.2 3.2 8088/8086 CPU8088/8086 CPU的寻址方式的寻址方式寻址方式:寻找操作数的方式。寻址方式:寻找操作数的方式。计算机中操作数可以存放在以下几个地方:计算机中操作数可以存放在以下几个地方:指令代码中指令代码中,存放常量;,存放常量;MOV AX

    4、,2070H寄存器中寄存器中:MOV AX,BX内存中内存中:MOV AX,2000HI/O端口中端口中:IN AL,40H码段码段堆栈段堆栈段数据段数据段附加数附加数据段据段码段码段1堆栈段堆栈段数据段数据段码段码段2每段的长度均小每段的长度均小于于64KB,即即16位寄存器能表示位寄存器能表示的最大范围的最大范围。(1)立即寻址立即寻址操作数直接放在指令中,紧跟在操作码的后面,操作数直接放在指令中,紧跟在操作码的后面,与操作码一起放在存储器的码段区域中。与操作码一起放在存储器的码段区域中。MOV AX,2030H B8 20304004H4003H4002H4001H4000H30H20H

    5、B8H4004H4003H4002H4001H4000H20H30HB8H内存地址内存地址内存内容内存内容错误错误!高字节高字节 高地址高地址低字节低字节 低地址低地址AXAHAL20H30H(2)寄存器寻址寄存器寻址操作数放在操作数放在CPU内部的寄存器中,可以是内部的寄存器中,可以是8位或位或16位寄存器,位寄存器,注意源操作数和目的操作数的位数应注意源操作数和目的操作数的位数应一致。一致。MOV AX,BX;将将 BX中的内容传送到中的内容传送到AX中去中去MOV AL,BH;将将 BH中的内容传送到中的内容传送到AL中去中去MOV AL,BX错误错误!不匹配不匹配(3)直接寻址直接寻址

    6、操作数存放在内存中,在指令中给出存放操作数操作数存放在内存中,在指令中给出存放操作数的的偏移地址偏移地址,如果不加说明,如果不加说明,默认的段基址是数默认的段基址是数据段据段。MOV AX,0020H;将将 数据段偏移地址为数据段偏移地址为0020H的地址中的内容传的地址中的内容传送到送到AX中去,相当于中去,相当于:MOV AX,DS:0020H12H34H56H码段码段堆栈段堆栈段数据段数据段0000H0001H0020H0021H0022HDS:0000H偏移地址偏移地址内存内容内存内容MOV AX,0020HAXAHAL3412AX:3412H也可以传送内存中其他段的数据,在相应的偏也

    7、可以传送内存中其他段的数据,在相应的偏移地址前加段超越符移地址前加段超越符“:”。MOV AX,SS:0020H;将将 堆栈段偏移地址为堆栈段偏移地址为0020H的地址中的内容传的地址中的内容传送到送到AX中去中去MOV ES:0100H,BX如果不加段超越,默认为数据段的偏移地址。如果不加段超越,默认为数据段的偏移地址。(4)寄存器间接寻址寄存器间接寻址操作数存放在内存中,但其操作数存放在内存中,但其偏移地址偏移地址存放寄存器存放寄存器中。在指令中只给出这个寄存器。中。在指令中只给出这个寄存器。MOV AX,BXBX中存放操作中存放操作数的偏移地址数的偏移地址其中,作为间址的寄存器只能有其中

    8、,作为间址的寄存器只能有4个:个:BX,SI,DI,BP,其他寄存器无此功能。其他寄存器无此功能。用用BP寻址,段基址默认为堆栈段寻址,段基址默认为堆栈段SS,其余其余3个的段个的段基址默认为数据段基址默认为数据段DS,同时指令同时指令允许段超越允许段超越。12H34H56H码段码段堆栈段堆栈段数据段数据段0000H0001H0020H0021H0022HDS:0000H偏移地址偏移地址内存内容内存内容MOV AX,BXAXAHAL3412AX:3412HMOV BX,0020HMOV AX,ES:BX;传送的操作数在附加段传送的操作数在附加段ES中,偏移地址存放在中,偏移地址存放在BX中。中

    9、。MOV BP,BX;将将BX中的内容传送到堆栈段中,其目的地的偏中的内容传送到堆栈段中,其目的地的偏移地址存放在移地址存放在BP中。中。MOV DI,2000H;将立即数将立即数2000H传送到数据段中,其目的地的传送到数据段中,其目的地的偏移地址存放在偏移地址存放在DI中。中。(5)寄存器相对)寄存器相对寻址寻址操作数存放在内存中,但其操作数存放在内存中,但其偏移地址偏移地址需要计算。需要计算。偏移地址偏移地址寄存器内容寄存器内容指令中给定的偏移量指令中给定的偏移量MOV AX,SI+0200H;欲传送的操作数在欲传送的操作数在数据段数据段中,其偏移地址是中,其偏移地址是SI寄存器中的内容

    10、加上寄存器中的内容加上0200H同样,作为变址的寄存器只能有同样,作为变址的寄存器只能有4个:个:BX,SI,DI,BP,其他寄存器无此功能。其他寄存器无此功能。用用BP寻址,段基址默认为堆栈段寻址,段基址默认为堆栈段SS,其余其余3个的段个的段基址默认为数据段基址默认为数据段DS,同时指令同时指令允许段超越允许段超越。MOV AX,0200HBX变址寻址可以有多种格式:变址寻址可以有多种格式:MOV AX,BX+0200HMOV AX,0200H+BX例如:例如:DS:3000H,BX:1000H 数据所在的地址:数据所在的地址:高位:高位:31201H 低位:低位:31200H(6)基址加

    11、变址寻址基址加变址寻址操作数存放在内存中,但其操作数存放在内存中,但其偏移地址偏移地址由由两两部分相部分相加而成:加而成:基址寄存器内容基址寄存器内容变址寄存器内容变址寄存器内容MOV AX,BX+SI;欲传送的操作数在欲传送的操作数在数据段数据段中,其偏移地址是中,其偏移地址是BX寄寄存器中的内容存器中的内容加上加上SI寄存器中的内容寄存器中的内容基址寄存器只有基址寄存器只有2个:个:BX,默认的段基址为默认的段基址为DS;BP,默认的段基址为默认的段基址为SS。变址寄存器只有变址寄存器只有2个:个:SI和和DI。允许段超越。允许段超越。MOV AX,BX+SI+0200HMOV AX,02

    12、00HBX+SIMOV AX,0200HBXSIMOV AX,0200HBXBPMOV AX,0200HSIDI必须是基址(必须是基址(BX或或BP)加变址(加变址(DI或或SI)MOV AX,0200HBP+SI;欲取的数据在堆栈段欲取的数据在堆栈段(7)相对)相对基址加变址寻址基址加变址寻址操作数存放在内存中,但其操作数存放在内存中,但其偏移地址偏移地址是由三部分是由三部分相加而成:相加而成:基址寄存器内容基址寄存器内容变址寄存器内容变址寄存器内容偏移量偏移量MOV AX,BX+SI+0200H;欲传送的操作数在欲传送的操作数在数据段数据段中,其偏移地址是中,其偏移地址是BX寄寄存器中的内

    13、容存器中的内容加上加上SI寄存器中的内容寄存器中的内容加上加上0200H基址寄存器只有基址寄存器只有2个:个:BX,默认的段基址为默认的段基址为DS;BP,默认的段基址为默认的段基址为SS。变址寄存器只有变址寄存器只有2个:个:SI和和DI。允许段超越。允许段超越。MOV AX,BX+SIMOV AX,BX+SIMOV AX,BXSIMOV AX,BXBPMOV AX,SIDI必须是基址(必须是基址(BX或或BP)加变址(加变址(DI或或SI)MOV AX,BP+SI;欲取的数据在堆栈段欲取的数据在堆栈段12H34H56H78H9AHBCHDEHF0H21000H21001H21002H210

    14、03H21004H21005H21006H21007H10H20H30H40H50H60H70H80H23000H23001H23002H23003H23004H23005H23006H23007H1AH2AH3AH4AH5AH6AH7AH8AH31000H31001H31002H31003H31004H31005H31006H31007H1BH2BH3BH4BH5BH6BH7BH8BH33000H33001H33002H33003H33004H33005H33006H33007HDS:2000H SS:3000H BX:1000H BP:3000H SI:3004HMOV AX,3000HM

    15、OV AX,BXMOV AX,3000HMOV AX,BXMOV AX,BPMOV AX,BPMOV AX,SIMOV SI,0002HMOV AX,BXSIMOV AX,BP+02HMOV AL,BX+06HMOV AX,BX+SI+4HAX:3000HAX:1000HAX:2010HAX:3412HAX:3000HAX:2B1BHAX:6050HSI:0002HAX:7856HAX:4B3BHAL:DEHAX:F0DEH3.3 8086/8088指令系统指令系统数据传送指令数据传送指令算术运算指令算术运算指令逻辑指令逻辑指令串操作指令串操作指令程序控制指令程序控制指令处理机控制指令处理机控

    16、制指令3.3.1 数据传送指令数据传送指令 1.1)所有的所有的MOV传送指令都不能改变标志传送指令都不能改变标志2)CS,IP不能作为目的操作数不能作为目的操作数 MOV CS,AX3)两个段寄存器间不能直接传送两个段寄存器间不能直接传送 MOV SS,DS4)立即数不能直接传送给段寄存器立即数不能直接传送给段寄存器 MOV DS,2000H5)内存单元间不能直接传送内存单元间不能直接传送 MOV SI,2000H6)立即数不能作为目的操作数立即数不能作为目的操作数 MOV 1000H,AXMOV dest,srcMOV BL,AXMOV 100,CXMOV SI,AXMOV CS,AXMO

    17、V SI,DIMOV BX,2DIMOV AX,CSMOV SS,2400HMOV AX,BP+4错误,不匹配错误,不匹配错误,立即数不能赋值错误,立即数不能赋值正确正确错误,错误,CS不能赋值不能赋值错误,内存间不能直接传送错误,内存间不能直接传送正确正确正确正确错误,段寄存器不能赋立即数错误,段寄存器不能赋立即数正确正确:堆栈是按先进后出的原则组织的一段内存区域,堆栈是按先进后出的原则组织的一段内存区域,一般作临时存储器用一般作临时存储器用(仓库仓库)。其指针。其指针SP为为16位的寄位的寄存器,始终指向栈顶存器,始终指向栈顶(货物堆放的位置货物堆放的位置)。堆栈的空。堆栈的空间大小是用户

    18、指定的。间大小是用户指定的。SS:2000H ;堆栈段的段基址堆栈段的段基址 ;表示堆栈从表示堆栈从20000H处开始处开始20000H假设用户定义堆栈为假设用户定义堆栈为100个字节,个字节,则则SP自动设置为自动设置为0064H20064H100个字节个字节SP:0064H进栈:进栈:PUSH src出栈:出栈:POP destMOV AX,1234HPUSH AX20000H20064H100个字节个字节SP(1)SP-1SP AHSPSP12H(2)SP-1SP ALSPSP34H先减指针先减指针,再压数据再压数据,先高后低先高后低POP BX(1)SPBL SP+1SP(2)SPBH

    19、 SP+1SP先出数据先出数据,再加指针再加指针,先低后高先低后高BLBHSPSP只能对只能对16位数进行操作,一次压入弹出两个字节位数进行操作,一次压入弹出两个字节PUSH AH必须对寄存器的内容或内存单元的内容进行操作必须对寄存器的内容或内存单元的内容进行操作PUSH 2000H设设SP为为0100H,SS为为2000H,PUSH BP后,栈顶后,栈顶的物理地址是:的物理地址是:20100H2H=200FEH下列指令中,错误的是:下列指令中,错误的是:A)PUSH DS B)POP CS C)PUSH 30HBXSID)MOV SI,ES:BPB)POP CSMOV AX,1000HPUS

    20、H AXMOV BX,AXPUSH BXPUSH 1000H POP 1002HPOP AXPOP BX12H34H56H78H9AHBCHDEHF0H21000H21001H21002H21003H21004H21005H21006H21007H30000H30001H30060H30061H30062H30063H30064HDS:2000H SS:3000H SP:0064HSP:0064H100个字节个字节10H00HBX:1000H34H12H34H12H34H12HAX:3412HBX:1000HXCHG dest,src dest src在在寄存器之间寄存器之间,寄存器和内存之间

    21、寄存器和内存之间的的8位位,16位位数数据可以相互交换。据可以相互交换。XCHG AL,AHXCHG AX,BX1)内存之间的数据不可相互交换内存之间的数据不可相互交换2)CS,IP不能参与交换不能参与交换3)段寄存器不能作为一个操作数段寄存器不能作为一个操作数(只与只与AX或或AL有关,与有关,与AH无关无关)输入输出指令输入输出指令CPU存储器存储器输入输入输出输出INOUTAX或或AL只能用只能用IN、OUT指令向外设发命令;指令向外设发命令;外设只能与外设只能与CPU内部寄存器内部寄存器AL或或AX进行数据传输。进行数据传输。IN AL,40H OUT 40H,AL IN AX,40H

    22、 OUT 40H,AX8位位16位位(40H)AL(41H)AHAL (40H)AH (41H)IN AL,352H OUT 400H,AL 当外口地址大于当外口地址大于8位位(0FFH)时,用时,用DX作间址作间址MOV DX,352HIN AL,DX MOV DX,400HOUT DX,AL IN,OUT只能对只能对AL,AX操作,若传送的数据操作,若传送的数据为为16位,则外口地址只能取偶数。位,则外口地址只能取偶数。IN AX,35H XLAT使累加器使累加器AL中的一个值变换为存储器表格中的某中的一个值变换为存储器表格中的某一个值,一般用来实现编码码制的转换。一个值,一般用来实现编码

    23、码制的转换。用用BX指向表的首地址,指向表的首地址,AL中的内容为表中某一中的内容为表中某一项与首地址之间的位移项与首地址之间的位移量。在执行查表指令时,量。在执行查表指令时,将将BX与与AL中的内容相加,中的内容相加,把得到的值作为地址,把得到的值作为地址,然后将此地址所对应单然后将此地址所对应单元中的值取到元中的值取到AL中去。中去。DS段段表格首地址表格首地址BX+ALAL11H20H33H22HBX AL+BX+0BX+ALBX+2BX+1AL执行该指令前,应该先建立一张表格,该表的最执行该指令前,应该先建立一张表格,该表的最大容量为大容量为256字节。字节。例例:将十进制数字将十进制

    24、数字09变换成七段显示码的译码表变换成七段显示码的译码表+5Vabcdefgabcdefgabcdefg0100 00000abcdefg0111 1001140H79H40H79H24H30H19H12H02H78H00H10H0123456789例例:从从5号端口输入十进制数,转换为号端口输入十进制数,转换为7段码后输段码后输出到出到20号端口。号端口。40H79H24H30H19H12H02H78H00H10H01234567892000H2001H2002H2003H2004H2005H2006H2007H2008H2009HDS段段MOV BX,2000HIN AL,5HXLATOU

    25、T 20H,AL例:向端口例:向端口40H送字符送字符35。40H79H24H30H19H12H02H78H00H10H01234567892000H2001H2002H2003H2004H2005H2006H2007H2008H2009HDS段段MOV BX,2000HMOV AL,3XLATOUT 40H,ALMOV AL,5XLATOUT 40H,AL2.地址传送指令地址传送指令LEA:取存储器取存储器单元单元的偏移地址的偏移地址LEA AX,2728H;地址为地址为2728H,AX为为2728H功能:将存储器地址送到一个寄存器。功能:将存储器地址送到一个寄存器。要求源操作数必须为存储器

    26、单元地址,目的操作要求源操作数必须为存储器单元地址,目的操作数必须为一个数必须为一个16位的通用寄存器。位的通用寄存器。该指令通常用来使一个寄存器作为地址指针。该指令通常用来使一个寄存器作为地址指针。LEA BX,BP+SI;BX为为 BP+SI 的值的值 LDS 将指定内存中的将指定内存中的4个字节个字节(32位位)分别装入指定的寄分别装入指定的寄存器和段寄存器存器和段寄存器DS中。中。30H19H79H40H24H2133H2134H2131H2130H2132HDS段段例:例:2130H2133H这这4个单元中存放着一个地址个单元中存放着一个地址2130H 2131H 为该地址偏移量为该

    27、地址偏移量2132H 2133H 为该地址段值为该地址段值LDS DI,2130H执行后:执行后:DI:7940H DS:3024HLES 将指定内存中的将指定内存中的4个字节个字节(32位位)分别装入指定的寄分别装入指定的寄存器和段寄存器存器和段寄存器ES中。中。例:例:DS:1000H DI:0400H 10420H=FFH 10421H=00H LEA AX,20DI;AX:0420HLEA AX,DI;AX:0400H12H34H56H78H9AHBCHDEHF0H00H10H23000H23001H23002H23003H23004H23005H23006H23007H23008H2

    28、3009H例:例:DS:2000H MOV BX,3004HMOV AL,02HXLATLEA BX,3000HLES SI,BX+04HLDS DI,BX+02HAL:DEHBX:3000HSI:BC9AHES:F0DEHDI:7856HDS:BC9AH3.标志传送指令标志传送指令:LAHF(Load AH with Flags):将标志寄存器将标志寄存器FR中的低中的低8位位AH中中OF DF IF TF SF ZFAFPFCF15 14 13 12 11 109876543210D7 D6D4D2D0AHSAHF(Set Flags with AH)上述指令的反向传输上述指令的反向传输只

    29、提供只提供8位标志位指令位标志位指令,保保持对持对8位机指令的兼容性位机指令的兼容性:PUSHF:POPF:只有这个命令可以改变只有这个命令可以改变TF的内容。的内容。3.3.2 算术运算指令算术运算指令概念:算术运算涉及两种类型的数据:有符号型概念:算术运算涉及两种类型的数据:有符号型和无符号型,对加减法这两种类型采用同一套指和无符号型,对加减法这两种类型采用同一套指令,对乘除法不能采用同一套指令。令,对乘除法不能采用同一套指令。有符号数在有符号数在计算机中以补码的形式存储。计算机中以补码的形式存储。加减法:加减法:1)两个加数或减数同为一种数据类型;两个加数或减数同为一种数据类型;2)两种

    30、类型用不同的标准比较大小。两种类型用不同的标准比较大小。3)有符号数加减运算要考虑溢出。有符号数加减运算要考虑溢出。当相同符号数相加但结果变号时,产生溢出标志。当相同符号数相加但结果变号时,产生溢出标志。例如:例如:81240000 10000111 11001000 0100结果:结果:OF=1,CF=0例:例:8-5=8+(-5)0000 10001111 101110000 0011结果:结果:OF=0,CF=1有符号数和无符号数指令相同,结果相同,但结有符号数和无符号数指令相同,结果相同,但结果的意义不同。果的意义不同。当无符号数运算时,若当无符号数运算时,若CF=1,则超界。则超界。

    31、当有符号数运算时,若当有符号数运算时,若OF=1,则溢出,结果错误则溢出,结果错误若运算结果为若运算结果为0,则,则ZF=1若运算结果为负数,则若运算结果为负数,则SF=1,即即SF与最高位一致与最高位一致若运算结果中若运算结果中低低8位位有偶数个有偶数个1,则,则PF=1若运算过程中若运算过程中低低8位位的位的位3向位向位4有进位,则有进位,则AF=11.加减法指令一览表加减法指令一览表加法指令加法指令1)不带进位的加法不带进位的加法ADD dest,srcdest+src dest 结果影响标志位结果影响标志位两个操作数不可同为内存单元两个操作数不可同为内存单元ADD BX+DI,2000

    32、HADD BX+DI,2000HADD DX,50HBX+SI设设 AX=C544H,执行执行 ADD AH,AL后后,CF,OF?C 5 4 4 1 0 9CF=1,OF=0MOV AX,5049HADD AX,0E2D7H 5 0 4 9 E 2 D7 1 3 3 2 0结果:结果:CF=1,OF=0,ZF=0,SF=0,PF=0,AF=12)带进位的加法带进位的加法ADC dest,srcdest+src+CF dest 结果影响标志位结果影响标志位两个操作数不可同为内存单元两个操作数不可同为内存单元ADC BX+DI,2000HADC BX+DI,2000HADC DX,50HBX+S

    33、I该指令主要用于多字节数相加该指令主要用于多字节数相加例:两个四字节无符号数相加,这两个数分别放在以例:两个四字节无符号数相加,这两个数分别放在以2000H和和3000H开始的存储单元内开始的存储单元内,要求运算后得到的结果要求运算后得到的结果放在放在2000H开始的单元内。开始的单元内。40H79H24H30H2000H2001H2002H2003H40HB9HA4H30H3000H3001H3002H3003HCLCMOV SI,2000HMOV AX,SISIADD AX,3000HMOV SI,AXMOV AX,SI+2ADC AX,3002HMOV SI+2,AX3)增量指令增量指令

    34、INC destdest+1 dest不影响不影响CF,影响影响AF,OF,PF,SF和和ZFINC ALINC BXMOV AL,0FFHCF=0,ZF=1减法指令减法指令1)不带借位的减法不带借位的减法SUB dest,srcdest-src dest 结果影响标志位结果影响标志位两个操作数不可同为内存单元两个操作数不可同为内存单元SUB BX+DI,2000HSUB BX+DI,2000HSUB DX,50HBX+SIMOV AX,5049HSUB AX,0E2D7H 5 0 4 9 E 2 D7 6 D 7 2结果:结果:CF=1,OF=0,ZF=0,SF=0,PF=1,AF=02)带

    35、借位的减法带借位的减法SBB dest,srcdest-src-CF dest 结果影响标志位结果影响标志位两个操作数不可同为内存单元两个操作数不可同为内存单元SBB BX+DI,2000HSBB BX+DI,2000HSBB DX,50HBX+SI该指令主要用于多字节数相加该指令主要用于多字节数相加3)减量指令减量指令DEC destdest-1dest不影响不影响CF,影响影响AF,OF,PF,SF和和ZFDEC ALDEC BXMOV AL,00HCF=0,ZF=04)求补指令求补指令NEG dest;对操作数取补码后送回对操作数取补码后送回0 dest destNEG ALNEG CX

    36、指令影响标志位指令影响标志位AF,CF,OF,PF,SF和和ZF,此指令执行此指令执行时时,只有当操作数为只有当操作数为0时时,CF为为0,否则否则CF总为总为1。若操作数为若操作数为80H或或8000H,执行求补指令后,结果执行求补指令后,结果没有变化,但没有变化,但OF置置1。5)比较指令比较指令CMP dest,src;dest-src 不送回结果,只影响标志位不送回结果,只影响标志位 CMP AX,2000H;将将AX内容与内容与2000H相比较相比较,结结果影响标志位果影响标志位CMP AX,BX+DI+100;比较结果影响标志位比较结果影响标志位AF,CF,OF,PF,SF和和ZF

    37、。CMP AX,BX若结果若结果ZF=1,可以判断可以判断AX与与BX相等;相等;若若AX与与BX均为无符号数,若均为无符号数,若CF为为0,AXBX;CF为为1,AXBX;否则;否则AXBX。指令系统针对有符号数和无符号数的比较指令系统针对有符号数和无符号数的比较分别提分别提供了不同的判断指令供了不同的判断指令。用户只需在应用时根据数。用户只需在应用时根据数据类型选择不同的指令即可。据类型选择不同的指令即可。将字节扩展成字的指令:将字节扩展成字的指令:CBW将将AL中的符号位扩展到中的符号位扩展到AH中。当中。当AL=80H时,时,AH=0FFH。当遇到两个字节相除时,要预先执行当遇到两个字

    38、节相除时,要预先执行CBW指令,指令,扩展被除数,否则不能正确执行除法操作。扩展被除数,否则不能正确执行除法操作。将将AX中的符号位扩展到中的符号位扩展到DX中。当中。当AX=8000H时时,DX=0FFFFH。将字扩展成双字的指令:将字扩展成双字的指令:CWD2.扩展指令扩展指令3.乘法指令乘法指令约定:约定:1)两个两个8位数相乘,有一个乘数在位数相乘,有一个乘数在AL中,另一个中,另一个乘数在寄存器或内存中,乘积在乘数在寄存器或内存中,乘积在AX中;中;2)两个两个16位数相乘,有一个乘数在位数相乘,有一个乘数在AX中,另一个中,另一个乘数在寄存器或内存中,乘积的乘数在寄存器或内存中,乘

    39、积的高高16位在位在DX中,中,低低16位在位在AX中。中。3)乘法有乘法有有符号数有符号数和和无符号数无符号数两套指令两套指令8位数位数8位数位数 16位数位数16位数位数16位数位数 32位数位数1)无符号数乘法指令无符号数乘法指令MUL src;不出现不出现 AL 或或 AXMUL BL;AL BL AXMUL CX;AX CX DX(高位高位),AX(低位低位)MUL BYTE PTR DI;AL DI AXMUL WORD PTR SI;AX SI+1SI DX(高位高位),AX(低位低位)2)有符号数乘法指令有符号数乘法指令IMUL src;不出现不出现 AL 或或 AXIMUL

    40、BL;AL BL AXIMUL CX;AX CX DX(高位高位),AX(低位低位)IMUL BYTE PTR DI;AL DI AXIMUL WORD PTR SI;AX SI+1SI DX(高位高位),AX(低位低位)功能上与功能上与MUL相似相似,要求两个乘数必须为有符号数要求两个乘数必须为有符号数乘法运算时,结果影响乘法运算时,结果影响CF和和OF,AF,PF,SF,ZF标标志位无意义。志位无意义。对对MUL指令指令:当乘积的高半部分不为当乘积的高半部分不为0,CF=1,OF=1;否则,否则,CF=0,OF=0。对对IMUL指令:指令:当乘积的高半部分是低半部分最高位的扩展,当乘积的高

    41、半部分是低半部分最高位的扩展,乘乘积的高半部分每位与低半部分最高位相同时:积的高半部分每位与低半部分最高位相同时:CF=0,OF=0;否则,否则,CF=1,OF=1。CF=1,OF=1表示高半部表示高半部分包含有结果的有效数分包含有结果的有效数例例:MOV AL,0FBHMOV BH,02HIMUL BH结果:结果:AX=0FFF6H,即即-10,CF=0,OF=0MOV AL,0FBHMOV BH,02HMUL BH结果:结果:AX=01F6H,即即502,CF=1,OF=14.除法指令除法指令约定:约定:除数必须为被除数的一半字长除数必须为被除数的一半字长1)被除数为被除数为16位,放在位

    42、,放在AX中,除数为中,除数为8位,在寄位,在寄存器或内存中,存器或内存中,8位商在位商在AL中中,8位余数位余数AH中中;2)被除数为被除数为32位,放在位,放在DX(高位高位),AX(低位低位)中,除中,除数为数为16位,在寄存器或内存中,位,在寄存器或内存中,16位商在位商在AX中中,16位余数位余数DX中中。3)除法有除法有有符号数有符号数和和无符号数无符号数两套指令两套指令16位数位数8位数位数 8位数位数32位数位数 16位数位数 16位数位数无符号数除法指令无符号数除法指令DIV src;不出现不出现 AX 或或 DX AXDIV BL;AXBL AL(商商),AH(余数余数)D

    43、IV CX;DX AX CXAX(商商),DX(余数余数)DIV BYTE PTR DI;AXDI AL(商商)AH(余数余数)DIV WORD PTR SI;DX AX SI+1SI AX(商商),DX(余数余数)2)有符号数除法指令有符号数除法指令IDIV src;不出现不出现 AX 或或 DX AX功能上与功能上与DIV相似相似,要求被除数,除数必须为有符要求被除数,除数必须为有符号数。号数。IDIV BL;AXBL AL(商商),AH(余数余数)注意注意:1)除法运算所有的标志位都没有意义;除法运算所有的标志位都没有意义;2)用用IDIV指令时,如果是双字除以一个字,则商指令时,如果是

    44、双字除以一个字,则商的范围为的范围为-3276832767,如果是一个字除以一,如果是一个字除以一个字节,则商的范围为个字节,则商的范围为-128127。如果超出这。如果超出这个范围,会作为除数为个范围,会作为除数为0来处理,产生来处理,产生0号中断;号中断;3)8086系统规定余数的符号和被除数相同;系统规定余数的符号和被除数相同;4)当当8位数除以位数除以8位数,位数,16位数除以位数除以16位数时,必位数时,必须对被除数进行扩展。须对被除数进行扩展。5)无符号数被除数扩展:无符号数被除数扩展:将将AH或或DX清清0。6)有符号数被除数扩展:有符号数被除数扩展:对对AH或或DX符号扩展。符

    45、号扩展。5.BCD码运算指令码运算指令1.压缩压缩BCD码码:一个字节中有两一个字节中有两位位BCD码码 0100 01012.非非压缩压缩的的BCD码:一个字节只码:一个字节只用低用低4位表示一位位表示一位BCD码,高码,高4位为位为0。0000 0100 0000 0101BCD码:用二进制形式表示的十进制码。每一位十进制码:用二进制形式表示的十进制码。每一位十进制数用数用4位二进制表示,运算规则是逢十进一。位二进制表示,运算规则是逢十进一。十进制十进制BCD码码00000100012001030011401005010160110701118100091001BCD码运算时,先用一般的二

    46、进制码运算时,先用一般的二进制运算,然后再进行运算,然后再进行BCD码码调整调整。BCD码加法十进制码加法十进制调整调整指令指令1)非非压缩压缩BCD码运算调整指令码运算调整指令 AAA两个两个非非压缩压缩BCD码相加,结果在码相加,结果在AL中,执行该指中,执行该指令后将结果调整为十进制,放在令后将结果调整为十进制,放在AX中。中。MOV AL,7HADD AL,5HAAA;AL:0CH;AX:0102H CF=AF=1调整原则:调整原则:在调整前若在调整前若AL低半部包含的数值大于低半部包含的数值大于9或或AF=1,则则AAA完成下列操作:完成下列操作:AL加加6,AF和和CF置置1,AL

    47、的高的高4位清零位清零。7+5=12 用组合的用组合的BCD码表示运算过程:码表示运算过程:0000 01110000 0101 0000 1100BCD码逢十进一,码逢十进一,16进制逢进制逢16进进1,因为低,因为低4位大位大于于9,所以在个位上加,所以在个位上加6,使其产生进位,同时,使其产生进位,同时AF=1,CF=1。0000 11000000 0110 0001 001016进制加法进制加法AAA指令调整为指令调整为10进制结果进制结果9+9=18 用组合的用组合的BCD码表示运算过程:码表示运算过程:0000 10010000 1001 0001 0010BCD码逢十进一,码逢十

    48、进一,16进制逢进制逢16进进1,因为低,因为低4位有位有进位,进位,AF1,所以在个位上加,所以在个位上加6,使其成为十进,使其成为十进制运算结果,同时制运算结果,同时AF=1,CF=1。0001 00100000 0110 0001 100016进制加法进制加法AAA指令调整为指令调整为10进制结果进制结果2)压缩压缩BCD码运算调整指令码运算调整指令 DAA两个两个压缩压缩BCD码相加,结果在码相加,结果在AL中,执行该指令中,执行该指令后将结果调整为十进制,放在后将结果调整为十进制,放在AL中。中。MOV AL,56HADD AL,47HDAA;AL:9DH;AL:03H CF=1调整

    49、原则:调整原则:1.如果如果AF=1或或AL的低的低4位大于位大于9,则则AL加加06H并置并置AF=12.如果如果CF=1或或AL的高的高4位大于位大于9,则则AL加加60H并置并置CF=1。3.如果满足上述如果满足上述2条条,则则AL加加66H,并置并置AF=1,CF=1。MOV AX,1234HMOV BX,5678HADD AL,BLDAAMOV CL,ALMOV AL,AHADC AL,BHDAAMOV AH,ALMOV AL,CL;AL:ACH;AL:12H CF=1;CL:12H;AL:12H;AL:69H;AL:69H CF=0;AX:6912H CF=0MOV AX,8ADD

    50、 AL,9AAA;AX:0038H;AX:0071H AF=1;AX:0107H AF=1因为因为AF=1,所以所以AH=1,CF=1,AF=1,AL高高4位位清零。清零。BCD码减法调整指令与加法调整指令类似,只是码减法调整指令与加法调整指令类似,只是分别将加分别将加06H,60H,66H改为改为减减 06H,60H,66H。AAS:对对非非压缩压缩BCD码减法调整码减法调整DAS:对对压缩压缩BCD码减法调整码减法调整必须紧跟在相对应的加减法指令后进行调整。必须紧跟在相对应的加减法指令后进行调整。BCD码乘法十进制调整指令码乘法十进制调整指令 AAM1)BCD码均为无符号数,故只有用码均为

    展开阅读全文
    提示  163文库所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
    关于本文
    本文标题:微机原理及单片机应用技术第3章-汇编语言与汇编程序设计基础课件.ppt
    链接地址:https://www.163wenku.com/p-4599711.html

    Copyright@ 2017-2037 Www.163WenKu.Com  网站版权所有  |  资源地图   
    IPC备案号:蜀ICP备2021032737号  | 川公网安备 51099002000191号


    侵权投诉QQ:3464097650  资料上传QQ:3464097650
       


    【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。

    163文库