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

类型微机原理第3章8086寻址方式及指令系统-课件.ppt

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

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

    特殊限制:

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

    关 键  词:
    微机 原理 8086 寻址 方式 指令系统 课件
    资源描述:

    1、第第3章章 8086/8088寻址与指令系统寻址与指令系统基本概念基本概念微机工作过程中其内部信息有两类:微机工作过程中其内部信息有两类:一类是控制信息(指令);一类是被加工处理的信息(数据)。l 指令:指令:微机中的控制信息就是使计算机进行某种操作的命令,这些命令就称为指令。l 指令系统:指令系统:一台计算机所能执行的全部指令的集合称为指令系统。不同的计算机其指令系统是不同的。基本概念基本概念l汇编语言指令或符号指令:汇编语言指令或符号指令:用字母和其它一些符号组成的“助记符”与操作数等表示的指令称为汇编语言指令或符号指令。例如:MOV AX,BX;AXMOV AX,BX;AXBXBX 其二

    2、进制代码(机器代码)为89D8H89D8H,就是 1000 1001 1101 1000 B 1000 1001 1101 1000 B 不易理解,不易记忆。l汇编程序与汇编过程:汇编程序与汇编过程:把符号指令变成机器代码的过程叫汇编,完成汇编任务的程序叫汇编程序。3.1 8086/80883.1 8086/8088寻址方式寻址方式指令格式:指令格式:标号:标号:操作码操作码,操作数操作数 ;注释注释标号:标号:内存码段中存放该指令的第一个字节的地址内存码段中存放该指令的第一个字节的地址操作码:操作的性质。操作码:操作的性质。操作数:操作的对象,可以是操作数本身或存放操作数:操作的对象,可以是

    3、操作数本身或存放操作数的内存操作数的内存(I/OI/O端口端口)地址。地址。注释:注释:查看程序用,不参加编译运行。查看程序用,不参加编译运行。寻址方式:寻找操作数所在地址的方式寻址方式:寻找操作数所在地址的方式计算机中操作数可以存放在以下几个地方:计算机中操作数可以存放在以下几个地方:指令代码中指令代码中,存放常量;,存放常量;MOV AX,MOV AX,2070H寄存器中寄存器中:MOV AXMOV AX,BX内存中内存中:MOV AX,MOV AX,2000HI/OI/O端口中端口中:IN AL,IN AL,40H一、一、立即数寻址立即数寻址操作数直接放在指令中,紧跟在操作码的后面,操作

    4、数直接放在指令中,紧跟在操作码的后面,与操作码一起放在存储器的码段区域中。与操作码一起放在存储器的码段区域中。MOV AX,2030H B8 20304004H4003H4002H4001H4000H30H20HB8H4004H4003H4002H4001H4000H20H30HB8H内存地址内存地址内存内容内存内容错误错误!高字节高字节 高地址高地址低字节低字节 低地址低地址AXAHAL20H30H例:例:MOV AX,1234H二、二、寄存器寻址寄存器寻址操作数放在操作数放在CPUCPU内部的寄存器中,可以是内部的寄存器中,可以是8 8位或位或1616位寄存器,位寄存器,注意源操作数和目的

    5、操作数的位数应注意源操作数和目的操作数的位数应一致。一致。MOV AX,BX;将将 BX BX中的内容传送到中的内容传送到AXAX中去中去MOV AL,BH;将将 BH BH中的内容传送到中的内容传送到ALAL中去中去MOV AL,BX错误错误!不匹配不匹配三、三、直接寻址直接寻址操作数存放在内存中,在指令中给出存放操作数操作数存放在内存中,在指令中给出存放操作数的的偏移地址,偏移地址,如果不加说明,如果不加说明,默认的段基址是数默认的段基址是数据段据段。MOV AX,0020H;将将 数据段偏移地址为数据段偏移地址为00200020H H的地址中的内容传的地址中的内容传送到送到AXAX中去,

    6、相当于中去,相当于:MOV AX,DS:0020H12H34H56H码段码段堆栈段堆栈段数据段数据段0000H0001H0020H0021H0022HDS:0000H偏移地址偏移地址内存内容内存内容MOV AX,0020HAXAHAL3412AX:3412H也可以传送内存中其他段的数据,在相应的偏也可以传送内存中其他段的数据,在相应的偏移地址前加移地址前加段超越符段超越符 “:”“:”。MOV AX,SS:0020H;将堆栈段偏移地址为将堆栈段偏移地址为00200020H H的地址中的内容传的地址中的内容传送到送到AXAX中去中去MOV ES:0100H,BX如果不加段超越,如果不加段超越,默

    7、认为约定段默认为约定段的偏移地址的偏移地址直接寻址四、四、寄存器间接寻址寄存器间接寻址操作数存放在内存中,但其操作数存放在内存中,但其偏移地址偏移地址存放寄存器存放寄存器中。在指令中只给出这个寄存器。中。在指令中只给出这个寄存器。MOV AX,BXBXBX中存放操作数中存放操作数的偏移地址的偏移地址其中,作为间址的寄存器只能有其中,作为间址的寄存器只能有4 4个:个:BX,SI,BX,SI,DI,BPDI,BP,其他寄存器无此功能。其他寄存器无此功能。用用BPBP寻址,段基址默认为堆栈段寻址,段基址默认为堆栈段SSSS,其余其余3 3个的段个的段基址默认为数据段基址默认为数据段DSDS,同时指

    8、令同时指令允许段超越允许段超越。12H34H56H码段码段堆栈段堆栈段数据段数据段0000H0001H0020H0021H0022HDS:0000H偏移地址偏移地址内存内容内存内容MOV AX,BXAXAHAL3412AX:3412HMOV BX,0020HMOV AX,ES:BX;传送的操作数在附加段传送的操作数在附加段ESES中,偏移地址存放在中,偏移地址存放在BXBX中。中。MOV BP,BX;将将BXBX中的内容传送到堆栈段中,其目的地的偏中的内容传送到堆栈段中,其目的地的偏移地址存放在移地址存放在BPBP中。中。MOV DI,2000H;将立即数将立即数20002000H H传送到数

    9、据段中,其目的地址传送到数据段中,其目的地址的偏移地址存放在的偏移地址存放在DIDI中。中。寄存器间接寻址五、五、寄存器相对寻址寄存器相对寻址操作数存放在内存中,但其操作数存放在内存中,但其偏移地址偏移地址需要计算。需要计算。偏移地址偏移地址寄存器内容寄存器内容指令中给定的位移量指令中给定的位移量MOV AX,SI+0200H;欲传送的操作数在欲传送的操作数在数据段数据段中,其偏移地址是中,其偏移地址是SISI寄存器中的内容加上寄存器中的内容加上02000200H H同样,作为变址的寄存器只能有同样,作为变址的寄存器只能有4 4个:个:BX,SI,BX,SI,DI,BPDI,BP,其他寄存器无

    10、此功能。其他寄存器无此功能。用用BPBP寻址,段基址默认为堆栈段寻址,段基址默认为堆栈段SSSS,其余其余3 3个的个的段基址默认为数据段段基址默认为数据段DSDS,同时指令同时指令允许段超越允许段超越。MOV AX,0200HBX变址寻址可以有变址寻址可以有多种格式多种格式:MOV AX,BX+0200HMOV AX,0200H+BX例如:例如:DS:3000H,BX:1000H DS:3000H,BX:1000H 数据所在的地址:数据所在的地址:高位:高位:31201 31201H H 低位:低位:31200 31200H H例:例:MOV AX,BP+1223H 假设:假设:(SS)=5

    11、000H,(BP)=3678HAXAHAL55AA操作码操作码12H23HM代代码码段段堆堆栈栈段段55HAAH5489B50000536781223SS50000+5489B3678BP1223寄存器相对寻址六、六、基址加变址寻址基址加变址寻址操作数存放在内存中,但其操作数存放在内存中,但其偏移地址偏移地址是由两部分是由两部分相加而成:相加而成:基址寄存器内容基址寄存器内容变址寄存器内容变址寄存器内容MOV AX,BXSI;欲传送的操作数在欲传送的操作数在数据段数据段中,其偏移地址是中,其偏移地址是BXBX寄寄存器中的内容存器中的内容加上加上SISI寄存器中的内容寄存器中的内容基址寄存器基址

    12、寄存器只有只有2 2个:个:BXBX,默认的段基址为默认的段基址为DSDS;BPBP,默认的段基址为默认的段基址为SSSS。2 2个个变址寄存器变址寄存器:DI:DI、SISI例:例:MOV AX,BX+DI 假设:假设:(DS)=5000H,(BX)=1223H,(DI)=54HAXAHAL55AAM数数据据段段55HAAH512775000051223DS50000+512771223BX0054DI指令中必须是基址寄存器与变址寄存器的组合,不允许同时出现两个基址寄存器或2个变址寄存器的组合。MOV AX,BXBP错误错误!不允许不允许MOV AX,SIDI七、七、基址基址-变址变址-相对

    13、寻址相对寻址操作数存放在内存中,但其操作数存放在内存中,但其偏移地址偏移地址是由三部分是由三部分相加而成:相加而成:基址寄存器内容基址寄存器内容变址寄存器内容变址寄存器内容位移量位移量MOV AX,BX+SI+0200H;欲传送的操作数在欲传送的操作数在数据段数据段中,其偏移地址是中,其偏移地址是BXBX寄寄存器中的内容存器中的内容加上加上SISI寄存器中的内容寄存器中的内容加上加上02000200H H基址寄存器只有基址寄存器只有2 2个:个:BXBX,默认的段基址为默认的段基址为DSDS;BPBP,默认的段基址为默认的段基址为SSSS。变址寄存器只有变址寄存器只有2 2个:个:SISI和和

    14、DIDI。允许段超越。允许段超越。MOV AX,BX+SI+0200HMOV AX,BX+SI+0200HMOV AX,0200HBX+SIMOV AX,0200HBX+SIMOV AX,0200HBXSIMOV AX,0200HBXSIMOV AX,0200HBXBPMOV AX,0200HBXBPMOV AX,0200HSIDIMOV AX,0200HSIDI必须是基址(必须是基址(BXBX或或BPBP)加变址(加变址(DIDI或或SISI)MOV AX,0200HBP+SIMOV AX,0200HBP+SI;欲取的数据在堆栈段欲取的数据在堆栈段错误格式错误格式例:例:MOV AX,BX+

    15、SI+1030H 或或 MOV AX,1030BXSI 若若 BX=2100H,SI=1400H,偏移量1030H,DS=1200H,基址基址-变址变址-相对寻址相对寻址存储器寻址时的约定存储器寻址时的约定存储器操作类型默认段寄存器允许超越的段寄存器偏移地址寄存器取指令代码CS无IP堆栈操作SS无SP源串数据访问DSCS、ES、SSSI目的串数据访问ES无无DI通用数据访问DSCS、ES、SSSI、DI、BX以BP、SP间接寻址的指令SSCS、DS、ESBP、SP程序只能在程序只能在CSCS段、堆栈操作数只能在段、堆栈操作数只能在SSSS段、目的段、目的串操作数只能在串操作数只能在ESES;其

    16、他操作虽然也有默认段,;其他操作虽然也有默认段,但允许段超越。但允许段超越。12H34H56H78H9AHBCHDEHF0H21000H21001H21002H21003H21004H21005H21006H21007H10H20H30H40H50H60H70H80H23000H23001H23002H23003H23004H23005H23006H23007H1AH2AH3AH4AH5AH6AH7AH8AH31000H31001H31002H31003H31004H31005H31006H31007H1BH2BH3BH4BH5BH6BH7BH8BH33000H33001H33002H3300

    17、3H33004H33005H33006H33007HDS:2000H SS:3000H BX:1000H BP:3000H SI:3004HMOV AX,3000HMOV 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.2

    18、 8086/80883.2 8086/8088指令系统指令系统9292种指令,按照功能分为种指令,按照功能分为6 6大类大类1)1)数据传送类指令数据传送类指令2)2)算术运算类指令算术运算类指令3)3)逻辑运算与移位指令逻辑运算与移位指令 4)4)串操作指令串操作指令5)5)控制转移类指令控制转移类指令 6)6)处理器控制指令处理器控制指令3.2 8086/80883.2 8086/8088指令系统指令系统一、数据传送指令一、数据传送指令1.1.通用数据传送指令通用数据传送指令 MOV OPRD1,OPRD2;1)1)所有的所有的MOVMOV传送指令都不能改变标志传送指令都不能改变标志2)2

    19、)CS,IPCS,IP不能作为目的操作数不能作为目的操作数 MOV CS,AX MOV CS,AX 3)3)两个段寄存器间不能直接传送两个段寄存器间不能直接传送 MOV SS,DSMOV SS,DS4)4)立即数不能直接传送给段寄存器立即数不能直接传送给段寄存器 MOV MOV DS,2000HDS,2000H5)5)内存单元间不能直接传送内存单元间不能直接传送 MOV SI,2000HMOV SI,2000H6)6)立即数不能作为目的操作数立即数不能作为目的操作数 MOV 1000H,AXMOV 1000H,AXMOV BL,AXMOV 100,CXMOV SI,AXMOV CS,AXMOV

    20、 SI,DIMOV BX,2DIMOV AX,CSMOV SS,2400HMOV AX,BP+4错误,不匹配错误,不匹配错误,立即数不能赋值错误,立即数不能赋值正确正确错误,错误,CSCS不能赋值不能赋值错误,内存间不能直接传送错误,内存间不能直接传送正确正确正确正确错误,段寄存器不能赋立即数错误,段寄存器不能赋立即数正确正确通用数据传送指令传送方向123456 堆栈操作指令堆栈操作指令 PUSH src,POP dest堆栈是按堆栈是按先进后出先进后出的原则组织的一段内存区域,的原则组织的一段内存区域,一般作临时存储器用一般作临时存储器用(仓库仓库)。其。其指针指针SPSP为为1616位的位

    21、的寄存器,寄存器,始终指向栈顶始终指向栈顶(货物堆放的位置货物堆放的位置)。堆栈。堆栈的空间大小是用户指定的。的空间大小是用户指定的。SS:2000H ;堆栈段的段基址堆栈段的段基址;表示堆栈从表示堆栈从20000H处开始处开始20000H20000H假设用户定义堆栈为假设用户定义堆栈为100100个字节,个字节,则则SPSP自动设置为自动设置为00640064H H20064H20064H100100个字节个字节SP:0064HSP:0064HMOV AX,1234HPUSH AX20000H20000H20064H100个字节个字节SP(1)SP-2SP12H(2)AHSP ALSPSP3

    22、4H先减指针先减指针,再压数据再压数据,先高后低先高后低POP BX(1)SPBL SPBH(2)SP+2SPBLBHSP先出数据先出数据,再加指针再加指针,先低后高先低后高只能对只能对1616位数进行操作,一次压入弹出两个字节位数进行操作,一次压入弹出两个字节PUSH AH必须对寄存器的内容或内存单元的内容进行操作必须对寄存器的内容或内存单元的内容进行操作PUSH 2000H设设SPSP为为01000100H H,SSSS为为20002000H H,PUSH BP PUSH BP后,栈顶的后,栈顶的物理地址是:物理地址是:20100H2H=200FEH下列指令中,错误的是:下列指令中,错误的

    23、是:A)PUSH DS B)POP CS C)PUSH 30HBXSID)MOV SI,ES:BPB)POP CS堆栈操作MOV AX,1000HPUSH AXMOV BX,AXPUSH BXPUSH 1000H POP 1002HPOP AXPOP BX12H34H56H78H9AHBCHDEHF0H21000H21001H21002H21003H21004H21005H21006H21007H30000H30001H30060H30061H30062H30063H30064HDS:2000H SS:3000H SP:0064HSP:0064H100个字个字节节10H00HBX:1000H3

    24、4H12H34H12H34H12HAX:3412HBX:1000H交换指令交换指令XCHG OPRD1,OPRD2OPRD1 OPRD2在在寄存器之间,寄存器和内存之间寄存器之间,寄存器和内存之间的的8 8位位,1616位位数据可以相互交换。数据可以相互交换。XCHG AL,AHXCHG AX,BX1)1)内存之间的数据不可相互交换内存之间的数据不可相互交换2)2)CSCS,IPIP不能参与交换不能参与交换3)3)段寄存器不能作为一个操作数段寄存器不能作为一个操作数表格查找指令表格查找指令(换码指令换码指令)XLAT使累加器使累加器ALAL中的一个值变换为存储器表格中的某中的一个值变换为存储器

    25、表格中的某一个值,一般用来实现编码码制的转换。一个值,一般用来实现编码码制的转换。用用BXBX指向表的首地址,指向表的首地址,ALAL中的内容为表中某一中的内容为表中某一项与首地址之间的位移项与首地址之间的位移量。在执行查表指令时,量。在执行查表指令时,将将BXBX与与ALAL中的内容相加,中的内容相加,把得到的值作为地址,把得到的值作为地址,然后将此地址所对应单然后将此地址所对应单元中的值取到元中的值取到ALAL中去。中去。DS段段表格首表格首地址地址BX+ALAL11H20H33H22HBX AL+BX+0BX+ALBX+2BX+1AL为什么?为什么?执行该指令前,应该先建立一张表格,该表

    26、的最执行该指令前,应该先建立一张表格,该表的最大容量为大容量为256256字节。字节。例例:将十进制数字将十进制数字0 0-9-9变换成七段显示码的译码表变换成七段显示码的译码表+5Vabcdefgabcdefg0100 00000abcdefg0111 1001140H79H40H79H24H30H19H12H02H78H00H10H0123456789abcdefgALAL存放表内元素位移量存放表内元素位移量例例:从从5号端口输入十进制数,转换为号端口输入十进制数,转换为7段码后输段码后输出到出到20号端口。号端口。40H79H24H30H19H12H02H78H00H10H0123456

    27、7892000H2001H2002H2003H2004H2005H2006H2007H2008H2009HDS段段MOV BX,2000HIN AL,5HXLATOUT 20H,AL例:例:向端口向端口40H送字符送字符35。40H79H24H30H19H12H02H78H00H10H01234567892000H2001H2002H2003H2004H2005H2006H2007H2008H2009HDS段段MOV BX,2000HMOV AL,3XLATOUT 40H,ALMOV AL,5XLATOUT 40H,AL2 输入输出指令输入输出指令 IN OUTCPU存储器存储器输入输入输出输

    28、出INOUTAX或或AL只能用只能用IN、OUT指令向外设发命令;指令向外设发命令;外设只能与外设只能与CPU内部寄存器内部寄存器AL或或AX进行数据传输进行数据传输累加器专用指令累加器专用指令(只与只与AX或或AL有关,与有关,与AH无关无关)IN AL,40H OUT 40H,AL IN AX,40H 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,A

    29、L 3 地址传送指令地址传送指令取有效地址指令取有效地址指令LEA:取存储器地址的取存储器地址的偏移地址偏移地址LEA AX,2728H;地址为地址为2728H,AX为为2728H功能:将存储器地址送到一个寄存器。功能:将存储器地址送到一个寄存器。要求源操作数必须为存储器单元地址,目的操作要求源操作数必须为存储器单元地址,目的操作数必须为一个数必须为一个1616位的通用寄存器。位的通用寄存器。该指令通常用来使一个寄存器作为地址指针。该指令通常用来使一个寄存器作为地址指针。LEA BX,BP+SI;BX为为 BP+SI 的值的值LEA reg16,memBUFF=0123454800FEFFLD

    30、S 取内存中的数取内存中的数 LDS reg16,mem32 将指定内存中的将指定内存中的4 4个字节个字节(32(32位位)分别装入指定的寄分别装入指定的寄存器和段寄存器存器和段寄存器DS(DS(高高1616位位)中。中。30H19H79H40H24H2133H2134H2131H2130H2132HDS段段例:例:2130H2133H这这4 4个单元中存放着一个地址个单元中存放着一个地址2130H 2131H 为该地址偏移量为该地址偏移量2132H 2133H 为该地址段值为该地址段值LDS DI,2130H执行后:执行后:DI:7940H DS:3024HLES 取内存中的数取内存中的数

    31、 LES reg16,mem32 将指定内存中的将指定内存中的4个字节个字节(32位位)分别装入指定的寄分别装入指定的寄存器和段寄存器存器和段寄存器ES(高高16位位)中。中。例:例:DS:1000H DI:0400H 10420H=FFH 10421H=00H 10422H=10H 10423H=23H LEA AX,20DIAX:00FFH ES:2310H执行后:执行后:12H34H56H78H9AHBCHDEHF0H00H10H23000H23001H23002H23003H23004H23005H23006H23007H23008H23009H例:例:DS:2000H MOV BX,

    32、3004HMOV AL,02HXLATLEA BX,3000HLES SI,BX+04HLDS DI,BX+02HAL:DEHBX:3000HSI:BC9AHES:F0DEHDI:7856HDS:BC9AH4 标志传送指令标志传送指令LAHF(Load AH with Flags):读取标志读取标志将标志寄存器将标志寄存器FR中的低中的低8位位AH中中OF DFIF TF SF ZFAFPFCF15 14 13 12 11 109876543210D7 D6D4D2D0AHSAHF(Set Flags with AH):设置标志设置标志 上述指令的反向传输上述指令的反向传输只提供只提供8 8位

    33、标志位指令位标志位指令,保保持对持对8 8位机指令的兼容性位机指令的兼容性PUSHF:标志寄存器入栈命令标志寄存器入栈命令POPF:将栈内内容进入标志寄存器将栈内内容进入标志寄存器FR只有这个命令可以改变只有这个命令可以改变TF的内容。的内容。5 字位扩展指令字位扩展指令 CBW/CWDl功能:功能:CBW将将AL符号数的符号扩展到符号数的符号扩展到AH中,中,CWD将将AX符号数的符号扩展到符号数的符号扩展到DX中。中。l扩展规则如下(对带符号数)扩展规则如下(对带符号数):1.若若ALBX;CF为为1,AXBX;否则;否则AXBX。指令系统针对有符号数和无符号数的比较指令系统针对有符号数和

    34、无符号数的比较分别分别提供了不同的判断指令提供了不同的判断指令。用户只需在应用时根。用户只需在应用时根据数据类型选择不同的指令即可。据数据类型选择不同的指令即可。乘法指令乘法指令约定:约定:1)两个两个8位数相乘,有一个乘数在位数相乘,有一个乘数在AL中,另一个中,另一个乘数在寄存器或内存中,乘积在乘数在寄存器或内存中,乘积在AX中;中;2)两个两个16位数相乘,有一个乘数在位数相乘,有一个乘数在AX中,另一中,另一个乘数在寄存器或内存中,乘积的个乘数在寄存器或内存中,乘积的高高16位在位在DX中,中,低低16位在位在AX中。中。3)乘法有乘法有有符号数有符号数和和无符号数无符号数两套指令两套

    35、指令8 8位数位数8 8位数位数 1616位数位数1616位数位数1616位数位数 3232位数位数1)无符号数乘法指令无符号数乘法指令MUL OPRD;不出现不出现 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 OPRD;不出现不出现 AL 或或 AXIMUL BL;AL BL AXIMUL CX;AX CX DX(高位高位),AX(低位低

    36、位)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指令:指令:当乘积的高半部分是低半部分最高位的扩展,当乘积的高半部分是低半部分最高位的扩展,乘乘积的高半部分每位与低半部分最高位相同时

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

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

    39、数余数)DIV CX;DX AX CXAX(商商),DX(余数余数)DIV BYTE PTR DI;AXDI AL(商商)AH(余数余数)DIV WORD PTR SI;DX AX SI+1SI AX(商商),DX(余数余数)2)2)有符号数除法指令有符号数除法指令IDIV OPRD;不出现不出现 AX 或或 DX AX功能上与功能上与DIVDIV相似相似,要求被除数,除数必须为要求被除数,除数必须为有符号数。有符号数。IDIV BL;AXBL AL(商商),AH(余数余数)注意注意:1)除法运算后,所有的标志位都是不确定的,没除法运算后,所有的标志位都是不确定的,没有意义;有意义;2)用用I

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

    41、被除数扩展:对对AH或或DX进行符号扩展。进行符号扩展。将字节扩展成字的指令:将字节扩展成字的指令:CBW 将将AL中的符号位扩展到中的符号位扩展到AH中。当中。当AL=80H时,时,AH=0FFH当遇到两个字节相除时,要预先执行当遇到两个字节相除时,要预先执行CBW指令,指令,扩展被除数,否则不能正确执行除法操作。扩展被除数,否则不能正确执行除法操作。将将AX中的符号位扩展到中的符号位扩展到DX中。当中。当AX=8000H时时,DX=0FFFFH。将字扩展成双字的指令:将字扩展成双字的指令:CWDBCD码运算指令码运算指令1.组合的组合的BCD码码:一个字节中有两一个字节中有两位位BCD码码

    42、 0100 01012.非组合的非组合的BCD码:码:一个字节只一个字节只用低用低4位表示一位位表示一位BCD码,高码,高4位为位为0。0000 0100 0000 0101BCD码:用二进制形式表示的十进制码。每一位十进制码:用二进制形式表示的十进制码。每一位十进制数用数用4位二进制表示,运算规则是逢十进一。位二进制表示,运算规则是逢十进一。十进制十进制BCD码码00000100012001030011401005010160110701118100091001BCD码运算时,先用一般的二进制码运算时,先用一般的二进制运算,然后再进行运算,然后再进行BCD码码调整调整。BCD码加法十进制码加

    43、法十进制调整调整指令指令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,,AH加加1,AL的高的高4位清零。位清零。7+5=12 用组合的用组合的BCDBCD码表示运算过程

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

    45、为低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调整原则:调整原则:1.如果如果AF=1

    46、或或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 AL,9AAA;AX:0038H;

    47、AX:0071H AF=1;AX:0107H CF=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码均为码均为无符号数无符号数,故只有用,故只有用MUL乘法指乘

    48、法指令才能调整;令才能调整;2)BCD码乘法调整指令只能对两个码乘法调整指令只能对两个8位位非组合的非组合的BCD码码相乘的结果(相乘的结果(AX)进行调整;)进行调整;MOV AL,05HMOV BH,06HMUL BHAAM;AX:001EH;AX:0300H(AH)(AL)/0AH(AL)(AL)%0AH1)BCD码均为码均为无符号数无符号数,故只有用,故只有用DIV除法指令除法指令才能调整,并且才能调整,并且在两个数相除前进行调整在两个数相除前进行调整;2)BCD码除法调整指令只能对码除法调整指令只能对非组合的非组合的BCD码码相相乘结果进行调整;乘结果进行调整;MOV AX,0400

    49、HMOV BL,02HAADDIV BLAAM;AX:0028H BCD码除法十进制调整指令码除法十进制调整指令 AAD(AL)(AH)*0AH+AL(AH)00H将将AX寄存器中非压寄存器中非压缩型缩型BCD码转换成为码转换成为真正的二进制数,并真正的二进制数,并存放在存放在AL寄存器中寄存器中;AX:0014H;AX:0200H 三、逻辑运算指令三、逻辑运算指令1)NOT 按位取反按位取反NOT OPRDAX:73H DX:85HMOV AX,DXNOT AXADD AX,DXINC AX0000 0000 1000 01011111 1111 0111 10101111 1111 111

    50、1 11110000 0000 0000 0000对标志位没有影响对标志位没有影响2)AND与与 OR或或 XOR异或异或AND OPRD1,OPRD2OPRD1 AND OPRD2 OPRD1这三条指令执行后,这三条指令执行后,CF=0,OF=0,SF,PF,ZF发生发生变化。变化。MOV AX,2050HAND AX,0FFHAX:0050H PF=1,SF=0,ZF=00010 0000 0101 00000000 0000 1111 11110000 0000 0101 0000XOR :相同出相同出0,相异出相异出1AL:00001111XOR AL,0FFH0000 1111111

    展开阅读全文
    提示  163文库所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
    关于本文
    本文标题:微机原理第3章8086寻址方式及指令系统-课件.ppt
    链接地址:https://www.163wenku.com/p-3142149.html

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


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


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

    163文库