微型计算机原理及应用第三版.ppt

上传人:牧羊曲112 文档编号:6572702 上传时间:2023-11-13 格式:PPT 页数:19 大小:315.15KB
返回 下载 相关 举报
微型计算机原理及应用第三版.ppt_第1页
第1页 / 共19页
微型计算机原理及应用第三版.ppt_第2页
第2页 / 共19页
微型计算机原理及应用第三版.ppt_第3页
第3页 / 共19页
微型计算机原理及应用第三版.ppt_第4页
第4页 / 共19页
微型计算机原理及应用第三版.ppt_第5页
第5页 / 共19页
点击查看更多>>
资源描述

《微型计算机原理及应用第三版.ppt》由会员分享,可在线阅读,更多相关《微型计算机原理及应用第三版.ppt(19页珍藏版)》请在三一办公上搜索。

1、5.1 8086指令的寻址方式,指令:微处理器提供的某一种基本操作功能。(*)进行什么操作(操作码)(*)对什么进行操作(操作数或操作数的来源)操作后的结果数据可以存放到某个原来的操作数位置指令系统:计算机提供所有的指令的集合。(*)指令系统随CPU的不同而不同机器语言:采用二进制的机器码表示指令、数据和指令数据的地址等信息的。10111000 00000101 00000000,汇编语言:采用助记符表示的程序设计语言。汇编语言源程序是机器语言程序的符号表示。(编译器处理)MOV AX,O3H汇编语言指令的格式:标号:指令助记符 操作数;注释例如:LINE1:INCCX;计数器加一 ADD A

2、X,BX DAA(*)标号的命名规则(*)指令助记符不可缺省(*)操作数在不同的情况下可以有2个,1个或者是没有(*)注释必须以分号开头,注释不生成目标代码(*)四个部分可以用制表符隔开。,寻址方式:指令中给出操作数的方式操作数的寻址,例如 MOV AX,1234H指令的寻址,例如 JUMP LAB操作数的来源:指令代码中直接给出。MOV AX,1200H 存放在寄存器中。MOV AX,BX 存放在指定的存储单元中。MOV AX,3456H1、立即寻址:操作数直接包含在指令中,在操作码之后。,(*)不必执行总线周期访问存储器,故称之为立即数。(*)立即数可以是一个8位或16位数。例如:MOV

3、AL,80H MOV AX,1090H(*)立即数寻址方式只能用于源操作数,不能用于目的操作数。错误:MOV 1200,AX(*)一条指令中源操作数和目的操作数可能有不同的寻址方式,2、寄存器寻址:操作数包含在CPU内的某个寄存器中,指令中直接给出该寄存器名,16位:AX,BX,CX,DX,SI,DI,SP,BP 8位:AL,BL,CL,DL,AH,BH,CH,DH例如:INC CX MOV AX,BX 以下介绍的几个寻址方式将针对存储器操作数而言的。若操作数在存储器中,一般位于数据段、堆栈段或附加段中,这时指令中给出的是操作数所在单元的地址(EA)或产生EA的计算方式。显然执行这类指令时:C

4、PU首先要计算出有效地址EA(EA是一个不带符号的16位数)再由总线接口部件BIU计算出物理地址再执行总线周期按该物理地址访问存储器并取出操作数送给EU,由EU具体执行该指令。,3、直接寻址:操作数在存储器中的16位有效地址由指令直接给出。例如:MOV AX,1070H MOV AL,1070H(*)要用方括号括起地址以免与立即数寻址混淆(*)默认是从数据段取数,如果不是数据段则要在前面加段跨越 前缀例如:MOV BX,2000H MOV BX,ES:2000H,4、间接寻址(4A)寄存器间接寻址:操作数的有效地址在指令中指定的某个寄存 器中。例如:MOV AX,BX(*)可用的寄存器只有四个

5、BX,BP,SI,DI 错误:MOV AX,DX(*)如果间址寄存器为BP则默认为是堆栈段,如果间址寄存器为 BX,SI,DI则默认为是数据段。(*)在一条指令中,不能同时有两个存储器操作数(避免指令过长)。错误:MOV BX,1200H,(4B)寄存器相对间接寻址:有效地址EA等于指令所指示的寄存器中的内容再加上指令中给定的816位的位移量。例如:MOV AX,SI+100 MOV AX,SI+100 MOV AX,100SI(*)寄存器相对寻址有以上三种写法(*)寄存器相对寻址可以用来寻址一维表中的数据,(4C)基址变址寻址:基址变址寻址是操作数的有效地址EA由指令指定的一个基址寄存器(B

6、X或BP)和一个变址寄存器(SI或D1)内容之和。例如:MOV AX,BXDI MOV AX,BX+DI(*)基址变址寻址可以用来寻址二维表中的数据(*)要注意只能是基址和变址的组合而不能用两个基址或两个变址的组合 错误:MOV AX,SIDI MOV AX.BXBP,(4D)相对基址变址寻址:例如:MOV AX,100BXSI MOV AX,BX+SI+100H MOV AX,100BX+SI(*)所有的存储器操作数寻址方式都支持段跨越前缀。(*)使用BP寄存器做间接寻址时注意默认的段。,测试题一:写出下列指令中源操作数的寻址方式:(1)MOV SI,1000(2)MOV BH,AL(3)M

7、OV AX,SIBX(4)MOV BP,BX(5)MOV DI,2130H(6)MOV DL,BX十SI十20H(7)MOV DI,BX十100测试题二:指出下列指令的错误之处(1)MOV 1000H,AX(2)MOV AX,DX(3)MOV AX,SIDI(4)MOV BX,SI(5)MOV BP,AL,测试题三:设有关寄存器及有关存储单元的内容如下:(DS)2000H,(BX)0100H,(SI)0002H,(20100H)=12H(20101H)34H,(20102H)56H,(20103H)=78H(21200H)2AH,(21201H)4CH,(21202H)0B7H(21203H)

8、65H试说明下列各条指令执行后AX寄存器的内容(1)MOV AX,1200H(2)MOV AX,BX(3)MOV AX,1200H(4)MOV AX,BX(5)MOV AX,1100BX(6)MOV AX,BX+SI,5.2 8086指令系统,8086/8088指令系统共包含133条基本指令,按功能可分为六类(1)数据传送类指令(4)字符串处理指令(2)算术运算类指令(5)控制转移类指令(3)逻辑运算与移位类指令(6)处理器控制类指令,一、传送指令,1、通用数据传送指令(一)MOV数据传送指令格式:MOV OPD,OPS例如:MOV AX,1234H MOV AX,BX MOV BX,SI M

9、OV SI,DS MOV DS,AX MOV DS,BX MOV 1234H,1234H(*)源和目的操作数不能同为存储器操作数,如需要传送应通过 寄存器转送。(*)不能用CS和IP作目的操作数。(*)不允许在段寄存器间直接传送数据。(*)类型要匹配。(*)传送指令一般不影响标志寄存器。(*)不允许直接向段寄存器传送立即数,如果需要,则应通过通 用寄存器转送。,(二)PUSH,POP堆栈操作指令格式:PUSH OPS POP OPD例如:PUSH AX PUSH DS PUSH 1234H(*)源操作数OPS和目的操作数OPD可以为16位通用寄存器、段寄存器或存储单元中的字数据,但不能是立即数

10、,CS不能是目的操作数。(*)PUSH是 先移后入 POP是 先出后移(*)要符合先入后出的原则.例题:(AX)=1234H(BX)=7890H(SP)=0056H请画出以下四条指令执行时这三个寄存器的内容变化和堆栈段内容的变化。PUSH AXPUSH BXPOP AXPOP BX,(三)XCHG交换指令指令格式:XCHG OPD,OPS例如:XCHG AX.BX XCHG AX,SI+3(*)不能同时为存储器操作数。段寄存器也不能作为操作数。(四)XLAT换码指令指令格式:XLAT(*)XLAT相当于MOV AL,BX+(AL)转换步骤为:建立转换表 待转换码放入AL中 执行XLAT例题:将

11、十六进制数0F转换为ASCII码。TABLE DB 30H,31H,39H,41H,45H,2、目标地址传送指令(一)LEA取有效地址指令指令格式:LEA OPD,OPS(*)该指令传送的内容是地址(*)源操作数必须是存储器操作数,目的操作数必须是除段寄存器之外的16位通用寄存器。例题:设(S1)3000H,(4000H)7788,求下两条指令执行完后 BX和SP的值。LEA BX,SI十1000H MOV SP,4000H,(二)LDS(LES)将双字地址指针送DS(ES)和一个寄存器指令格式:LDS OPD,OPS(*)从源操作数指示的存储单元地址开始,将连续4个字节单元中的内容分别 送入

12、OPD和DS(ES)中,(*)即前二个字节单元中的内容送OPD指示的寄存器中,后两个字节单元中的内容送入DS(ES)。(*)作用是取内存中存放的地址指针例题:设DS3200H,(33550H)3A78H,(33552H)1998H 求执行指令LDS SI,33550H 后SI和DS中的值,3、标志位传送指令1、LAHF 标志寄存器低8位送AH指令指令格式:LAHF2、SAHF 累加器AH送标志寄存器低8位指令指令格式:SAHF3、PUSHF 标志寄存器人栈指令指令格式:PUSHF4、POPF 标志出栈指令指令格式:POPF,4、输入/输出数据传送指令 IO指令可有两种格式:直接寻址I/O指令:当I/O端口地址值小于256时用直接格式。间接寻址I/O指令:当I/O端口地址值大于256时用间接寻址格式(*)间址寄存器只能用DX(*)接口地址是两个字节,0000HFFFFH(*)与外设接口进行通信必须通过累加器AL或AX。IN AL,PORT IN AX,PORT IN AL,DX IN AX,DX例题:将数据12H送到端口地址为300H的外设接口上去 MOVAL,12H MOVDX,300H OUTDX,AL,

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号