微机原理第3章8086寻址方式及指令系统-课件.ppt
- 【下载声明】
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为什么?为什么?执行该指令前,应该先建立一张表格,该表
展开阅读全文