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

上传人:s****8 文档编号:67312072 上传时间:2022-12-24 格式:PPT 页数:19 大小:104.50KB
返回 下载 相关 举报
微型计算机原理及应用第三版 (3).ppt_第1页
第1页 / 共19页
微型计算机原理及应用第三版 (3).ppt_第2页
第2页 / 共19页
点击查看更多>>
资源描述

《微型计算机原理及应用第三版 (3).ppt》由会员分享,可在线阅读,更多相关《微型计算机原理及应用第三版 (3).ppt(19页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

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

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

3、周期访问存储器,故称之为立即数。(*)立即数可以是一个8位或16位数。例如:MOV 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 以下介绍的几个寻址方式将针对以下介绍的几个寻址方式将针对存储器操作数存储器操作数而言的。若操作数而言的。若操作

4、数在存储器中,一般位于数据段、堆栈段或附加段中,这时指令中在存储器中,一般位于数据段、堆栈段或附加段中,这时指令中给出的是给出的是操作数所在单元的地址操作数所在单元的地址(EA)EA)或或产生产生EAEA的计算方式的计算方式。显然。显然执行这类指令时:执行这类指令时:CPUCPU首先要首先要计算出有效地址计算出有效地址EAEA(EAEA是一个不带符号的是一个不带符号的1616位数位数)再由总线接口部件再由总线接口部件BIUBIU计算出物理地址计算出物理地址再执行总线周期按该物理地址访问存储器并取出操作数送给再执行总线周期按该物理地址访问存储器并取出操作数送给EUEU,由由EUEU具体执行该指令

5、。具体执行该指令。3、直接寻址:操作数在存储器中的16位有效地址由指令直接给出。例如:MOV AX,1070H MOV AL,1070H(*)要用方括号括起地址以免与立即数寻址混淆(*)默认是从数据段取数,如果不是数据段则要在前面加段跨越 前缀例如:MOV BX,2000H MOV BX,ES:2000H4、间接寻址(4A)寄存器间接寻址:操作数的有效地址在指令中指定的某个寄存 器中。例如:MOV AX,BX(*)可用的寄存器只有四个BX,BP,SI,DI 错误:MOV AX,DX(*)如果间址寄存器为BP则默认为是堆栈段,如果间址寄存器为 BX,SI,DI则默认为是数据段。(*)在一条指令中

6、,不能同时有两个存储器操作数(避免指令过长)。错误:MOV BX,1200H(4B)寄存器相对间接寻址:有效地址EA等于指令所指示的寄存器中的内容再加上指令中给定的816位的位移量。例如:MOV AX,SI+100 MOV AX,SI+100 MOV AX,100SI(*)寄存器相对寻址有以上三种写法(*)寄存器相对寻址可以用来寻址一维表中的数据(4C)基址变址寻址:基址变址寻址是操作数的有效地址EA由指令指定的一个基址寄存器(BX或BP)和一个变址寄存器(SI或D1)内容之和。例如:MOV AX,BXDI MOV AX,BX+DI(*)基址变址寻址可以用来寻址二维表中的数据(*)要注意只能是

7、基址和变址的组合而不能用两个基址或两个变址的组合 错误: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)MOV AX,SIBX (4)MOV BP,BX(5)MOV DI,2130H (6)MOV DL,BX十SI十20H(7)MOV DI,BX十100测试题二:指出下列

8、指令的错误之处(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)65H试说明下列各条指令执行后AX寄存器的内容(1)MOV AX,1200H (2)MOV AX,BX(3)MOV AX,1200H (4)MOV AX,BX(

9、5)MOV AX,1100BX(6)MOV AX,BX+SI5.2 8086指令系统8086/8088指令系统共包含133条基本指令,按功能可分为六类 (1)数据传送类指令 (4)字符串处理指令 (2)算术运算类指令 (5)控制转移类指令 (3)逻辑运算与移位类指令 (6)处理器控制类指令指令类型指令书写格式通用数据传送MOV OPD,OPSPUSH OPSPOP OPDXCHG OPS,OPDXLAT目标地址传送LEA OPD,OPSLDS OPD,OPSLES OPD,OPS标志位传送LAHFSAHFPUSHFPOPFI/O数据传送IN AL/AX,PORTOUT PORT,AL/AX一、

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

11、H AX PUSH DS PUSH 1234H(*)源操作数OPS和目的操作数OPD可以为16位通用寄存器、段寄存器或存储单元中的字数据,但不能是立即数,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(*)不能同时为存储器操作数。段

12、寄存器也不能作为操作数。(四)XLAT换码指令指令格式:XLAT(*)XLAT相当于MOV AL,BX+(AL)转换步骤为:建立转换表 待转换码放入AL中 执行XLAT例题:将十六进制数0F转换为ASCII码。TABLE DB 30H,31H,39H,41H,45H2、目标地址传送指令(一)LEA取有效地址指令指令格式:LEA OPD,OPS(*)该指令传送的内容是地址(*)源操作数必须是存储器操作数,目的操作数必须是除段寄存器之外的16位通用寄存器。例题:设(S1)3000H,(4000H)7788,求下两条指令执行完后 BX和SP的值。LEA BX,SI十1000H MOV SP,4000

13、H(二)LDS(LES)将双字地址指针送DS(ES)和一个寄存器指令格式:LDS OPD,OPS(*)从源操作数指示的存储单元地址开始,将连续4个字节单元中的内容分别 送入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 标志出栈指令指令格式:POPF4、输入/输出数据传送指令 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

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 生活休闲 > 生活常识

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

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