第4讲1 80x86数据传送指令_第1页
第4讲1 80x86数据传送指令_第2页
第4讲1 80x86数据传送指令_第3页
第4讲1 80x86数据传送指令_第4页
第4讲1 80x86数据传送指令_第5页
已阅读5页,还剩38页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

4指令系统指令系统是微处理器所能执行的各种指令的集合微处理器的主要功能是通过它的指令系统来实现的不同的处理器拥有不同的指令系统。8086的指令系统数据传送指令算术指令逻辑指令串处理指令控制转移指令处理机控制与杂项操作指令重点关注指令的格式指令的基本功能例题分析指令支持的寻址方式指令的执行对标志位的影响指令的特殊要求4.1数据传送指令数据传送指令是计算机中最基本、最重要、最常用的一种操作。数据传送指令负责把数据或地址传送到寄存器或存储单元中。一、通用数据传送指令1.MOV功能:源操作数的内容传送到目标操作数中去格式:MOV目标操作数,源操作数例题例题例题传送方式:MOVreg/mem,imm;立即数送寄存器或主存MOVreg/mem/seg,reg;寄存器送(段)寄存器或主存MOVreg/seg,mem;主存送(段)寄存器MOVreg/mem,seg;段寄存器送寄存器或主存例题next例:立即数传送moval,4

;al←4,字节传送movsi,200h

;si←0200h,字传送movbyteptr[si],78h

;78h送到存储单元[si],字节传送明确指令是字节操作还是字操作

传送演示高高低低原则传送178MOVAX,5678H??例:寄存器传送movax,bx ;ax←bx,字传送movah,al ;ah←al,字节传送movds,ax ;ds←ax,字传送mov[si],al ;[si]←al,字节传送高高低低演示高高低低原则传送2例:存储器传送moval,[10H] ;al←ds:[10H]movdx,[bp] ;dx←ss:[bp]moves,[si+di] ;es←ds:[si+di]高高低低演示高高低低原则传送3例:段寄存器传送mov[si],es ;ds:[si]←esmovax,es ;ax←esmovax,cs ;ax←csMOV指令传送功能立即数段寄存器CSDSESSS通用寄存器AXBXCXDXBPSPSIDI存储器MOV也并非任意传送MOV指令的注意事项:不破坏源操作数的内容立即数只能出现在源操作数位置,不能作为目的操作数两个操作数的类型一致两个操作数不能都是存储器段寄存器的操作有一些限制IP、CS是专用寄存器,不能作为目的操作数示例示例示例next示例两个操作数的类型要一致绝大多数双操作数指令,除非特别说明,目的操作数与源操作数必须类型一致,否则为非法指令。MOVAL,050AH×寄存器有明确的字节或字类型。MOVAL,[BX]MOVAX,34H对于存储器单元与立即数同时作为操作数的情况,必须显式指明:byteptr指示字节类型,wordptr指示字类型。movbyteptr[si],01hDOS演示两个操作数不能都是存储器8086指令系统不允许两个操作数都在存储单元(除串操作指令),要实现这种传送,可通过寄存器间接实现movax,[BX]mov[100H],ax要小心段寄存器的操作不允许立即数传送给段寄存器MOVDS,100H不允许段寄存器之间的直接数据传送MOVDS,ESDOS演示IP、CS是专用寄存器不允许直接改变CS值MOVCS,[SI] 不允许直接改变IP的值MOVIP,BXMOV指令对标志寄存器的影响没有影响2.XCHG交换指令功能:可以实现通用寄存器与通用寄存器或存储单元间的数据交换。格式:XCHGreg,reg/mem XCHGreg/mem,reg;regreg/mem交换方式:寄存器与寄存器之间对换数据寄存器与存储器之间对换数据示例示例next例:movax,1234h movbx,5678h xchgax,bxxchgah,al ;ax=1234h;bx=5678h;ax=5678h,bx=1234h;ax=7856h例:xchgax,[2000h] ;字交换;等同于xchg[2000h],axxchgal,[2000h] ;字节交换;等同于xchg[2000h],al(2000h)=1234hAx=5678h????指令的特殊要求:不能在存储器与存储器之间对换数据,也不能使用段寄存器和立即数。XCHG[1234],[BX][SI]×XCHGDS,AX×XCHGAX,1234H×对标志位的影响:没有影响DOS演示二、堆栈操作指令采用后进先出方式来管理数据的内存区域引入……存储区域底部存储区域123456存入:123456放入数据取出:563412移走数据只能对栈顶进行操作栈顶堆栈管理堆栈段栈底栈顶采用后进先出方式来管理数据的内存区域SS段寄存器记录其段地址;堆栈指针寄存器SP指定栈顶栈顶地址较小,栈底不变堆栈指令堆栈有两种基本操作:保存数据恢复数据入栈出栈堆栈指令:PUSH(入栈)POP(出栈)入栈指令PUSH功能:把后面16位操作数的内容入栈格式:PUSH操作数PUSHAL×PUSHBL×例题:PUSHAX

;AX=1234…………栈底低地址高地址堆栈段<--栈顶SP<--栈顶SP1234<--栈顶SPPUSH执行过程:先高半部分入栈;先移栈顶指针再入栈后低半部分入栈;先移栈顶指针再入栈先高后低,先移后入出栈指令POP功能:把栈顶的内容弹出来传送给16位操作数格式:POP操作数执行过程:和入栈过程相反例题POPDX;DX=…………低地址高地址<--栈顶SP<--栈顶SP<--栈顶SP栈底堆栈段12123434POP执行过程:低半部分内容出栈;先出栈再移栈顶指针高半部分内容出栈;先出栈再移栈顶指针先低后高,先出再移PUSH执行过程:先高后低,先移后入PUSHPUSH;进栈指令先使堆栈指针SP减2,然后把一个字操作数存入堆栈顶部(高高低低)PUSHAXPUSHr16/m16/seg;SP←SP-2;SS:[SP]←r16/m16/segPOPPOP;出栈指令把栈顶的一个字传送至指定的目的操作数(高高低低)

,然后堆栈指针SP加2。POPr16/m16/seg;r16/m16/seg←SS:[SP];SP←SP+2POPDX注意8086~80286堆栈操作必须以字为单位。不要写出“PUSHAL”

8086不能用立即寻址方式

PUSH1234H堆栈中的数据弹出后,数据并没有在堆栈中消失,除非压入新数据,DOS演示对标志位的影响不影响标志位课堂练习请分别用一条汇编指令完成如下功能:把1234H传送给bx寄存器把5678h传送到存储单元的数据段中,bx指出该单元的偏移地址把上面存储单元的内容传送给ax寄存器将ax的内容入栈执行一次出栈操作,出栈内容传送给cx三、地址传送指令:地址传送指令用来传送操作数的地址LEA,LDS,LES有效地址传送指令LEA指令格式:LEAr16,mem指令功能: 把源操作数的有效地址(不是物理地址)传送到指定寄存器中。源操作数是一个存储单元。举例movbx,0400hmovsi,3chleabx,[bx+si+0f62h];BX=0400h+003ch+0f62h=139EH注意:用来传送操作数的地址,而不是存储单元的内容目的操作数必须为通用寄存器操作数,常用的寄存器是BX、BP、SI、DI。一般不使用其他寄存器。该指令不影响标志位。MOVBX,[BX+SI+0F62H],执行后BX为139EH存储单元的内容。LDS指令指令格式:LDSr16,mem指令功能: 将存储单元存放的4个字节送指定的寄存器和DS寄存器中,其中(SRC)→REG,(SRC+2)→DS举例movwordptr[3060h],0100hmovwordptr[3062h],1450hldssi,[3060h] ;ds=1450h,si=0100h注意:本组指令的目的操作数不能使用段寄存器。不影响标志位。作业1、在debug中写出以下程序片段给存储单元ds:[1234]的传送内容1111H;

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论