《计算机接口技术及应用》课件-5.10 数据传送指令之堆栈指令和扩展指令_第1页
《计算机接口技术及应用》课件-5.10 数据传送指令之堆栈指令和扩展指令_第2页
《计算机接口技术及应用》课件-5.10 数据传送指令之堆栈指令和扩展指令_第3页
《计算机接口技术及应用》课件-5.10 数据传送指令之堆栈指令和扩展指令_第4页
《计算机接口技术及应用》课件-5.10 数据传送指令之堆栈指令和扩展指令_第5页
已阅读5页,还剩33页未读 继续免费阅读

下载本文档

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

文档简介

微机原理及应用第五章8086指令系统第十讲数据传送指令之堆栈指令和扩展指令数据传送指令之堆栈指令和扩展指令堆栈指令包括压栈指令,和弹出指令压栈指令堆栈指令弹出指令首先我们来看压栈指令,压栈指令的操作码是push,它的含义就是向堆栈中压入数据操作码压栈指令push向堆栈中压入数据我们知道,在堆栈中进行数据操作,都是按照字来进行的,压栈指令堆栈中数据操作按字进行所以,压栈指令就是将一个16位的数压入到堆栈中,这个16位的数是源操作数,它可以是寄存器,也可以是段寄存器,当然也可以是存储单元,而且一定是两个连续的存储单元压栈指令16位的数压入堆栈16位的数源操作数寄存器段寄存器存储单元2个举个例子pushax,这条指令的含义是将ax内容压入到堆栈中pushax将ax内容压入堆栈我们来详细的分解一下压入的过程,首先,将sp的值减1,将ax的高字节存入到sp-1所指向的存储单元,然后将sp再减1,就是在原来sp的基础上减2,然后将AX的低字节存入到sp-2指向的这个单元中,最后更新sp的内容为sp-2010203sp值-1将ax高字节存入sp-1所指存储单元将ax内容压入堆栈sp值-2将ax低字节存入sp-2所指的单元更新sp内容为sp-2这张图给出了一个具体的例子,假设AX的内容是1020hPUSH AX;将AX内容压栈低地址存储区(SS段)执行前[SP]-2[SP]高地址[SP]-1进栈方向低地址存储区(SS段)执行后[SP]高地址10H20H[AL][AH]设[AX]=1020H低地址[SP]存储区(SS段)[SP]-1[SP]-2执行前高地址低地址[SP]存储区(SS段)执行后高地址10h20h[AL][AH]进栈方向假设AX内容是1020h那么在执行pushax这条指令之前,sp指向的是这个蓝色的单元,低地址[SP]存储区(SS段)[SP]-1[SP]-2执行前高地址低地址[SP]存储区(SS段)执行后高地址10h20h[AL][AH]进栈方向假设AX内容是1020hpushax[SP]执行前在执行这条指令的时候,首先,在sp减一指向的这个位置会存入AX的高字节的内容就是10h,低地址[SP]存储区(SS段)[SP]-1[SP]-2执行前高地址低地址[SP]存储区(SS段)执行后高地址20h[AL][AH]进栈方向假设AX内容是1020hpushax执行时[SP]-110h然后,在sp-2的这个位置会存入AX的低字节的内容,就是20h,低地址[SP]存储区(SS段)[SP]-1[SP]-2执行前高地址低地址[SP]存储区(SS段)执行后高地址20h[AL][AH]进栈方向假设AX内容是1020hpushax执行时10h[SP]-2执行完以后,sp指向的是20h这个单元低地址[SP]存储区(SS段)[SP]-1[SP]-2执行前高地址低地址[SP]存储区(SS段)执行后高地址20h[AL][AH]进栈方向假设AX内容是1020hpushax10h[SP]执行后下面再来看一下弹出指令,压栈指令堆栈指令弹出指令弹出指令的操作码是popPOPDest操作码弹出指令POP它的功能是从堆栈中将数据取出来,传送到目的操作数中,从堆栈中取出数据POPDestPOP传送到目的操作数弹出指令所以,pop后面的这个操作数是目的操作数,POPDestDest弹出指令目的操作数同样的,弹出操作的对象也是16位的数,POPDestDest弹出指令操作对象是16位的数所以目的操作数必须是能够存储16位数据的空间,这个空间可以是寄存器,段寄存器,也可以是两个连续的内存单元目的操作数有存储16位数据空间寄存器段寄存器内存单元两个连续POPDestDest弹出指令我们来看一个例子,比如popbx,它是将堆栈中栈顶的内容弹出到bx中,popbx将栈顶内容弹出到bx操作的过程是,首先,将sp指向的堆栈单元的内容存入到bl中,然后,将sp+1指向的堆栈单元的内容存入到bh中,最后将sp的内容更改为sp加201将sp指向堆栈单元内容存入bl将栈顶内容弹出到bx02将sp+1指向堆栈单元内容存入bh03将sp内容更改为sp+2我们结合这个图示再理解一下,现在sp指向的堆栈单元中存储的是20h,低地址[SP]+2存储区(SS段)[SP]+1[SP]执行前高地址低地址[SP]存储区(SS段)执行后高地址[BL][BH]出栈方向10h20h低地址存储区(SS段)执行前[SP][SP]+2高地址[SP]+110H20H出栈方向低地址存储区(SS段)执行后[SP]高地址[BL][BH][SP]他的下一个单元存储的是10h,低地址[SP]+2存储区(SS段)[SP]+1[SP]执行前高地址低地址[SP]存储区(SS段)执行后高地址[BL][BH]出栈方向10h20h低地址存储区(SS段)执行前[SP][SP]+2高地址[SP]+110H20H出栈方向低地址存储区(SS段)执行后[SP]高地址[BL][BH][SP]+1在执行popbx的时候,首先,将sp指向堆栈单元的内容20h存储到bl中,低地址[SP]+2存储区(SS段)[SP]+1[SP]执行前高地址低地址[SP]存储区(SS段)执行后高地址[BL][BH]出栈方向10h20h低地址存储区(SS段)执行前[SP][SP]+2高地址[SP]+110H20H出栈方向低地址存储区(SS段)执行后[SP]高地址[BL][BH]popbx[SP][BL]然后将sp加一指向的堆栈单元的内容存入到bh中,最后sp的值修改为sp+2,所以,这条指令执行完以后,BX的内容是1020h低地址[SP]+2存储区(SS段)[SP]+1[SP]执行前高地址低地址[SP]存储区(SS段)执行后高地址[BH]出栈方向10h20h低地址存储区(SS段)执行前[SP][SP]+2高地址[SP]+110H20H出栈方向低地址存储区(SS段)执行后[SP]高地址[BL][BH]popbx[SP]+1[BH][BL][SP]+2执行后bx1020h好,我们再来总结一下弹出指令的使用规则压栈指令堆栈指令弹出指令使用规则首先,它是按字来进行操作的,其次,不能把栈顶的内容弹出到CS这个段寄存器中,但是可以使用push指令将CS的值存入到堆栈中,这个是没有问题的,使用规则堆栈操作总是按字进行不能从栈顶弹出一个字给CS堆栈指针为SS:SP,SP永远指向栈顶SP自动进行增减量(-2,+2)弹出指令使用规则按字操作不能把栈顶内容弹出到CS段寄存器可使用push指令将CS值存入堆栈还有就是,堆栈指令的逻辑地址是ss冒号sp,堆栈指令弹出指令逻辑地址SS:SPss它的段基址,sp是他的段内偏移量,sp指向堆栈的栈顶,弹出指令段基址堆栈指令逻辑地址SS:SPSS段内偏移量SP堆栈栈顶每次执行push或者pop指令的时候,sp会自动的进行减二或者是加二的处理,弹出指令堆栈指令逻辑地址SS:SPpushpopSP自动-2自动+2最后我们来看一下扩展指令,扩展指令是一个隐含寻址的指令,扩展指令隐含寻址它的指令格式就是cbw或者cwd,后面没有操作数,隐含寻址用于有符号数的除法若[AL]=A7H,则执行CBW后,AH的内容为FFHCBW;把AL的符号位复制到AHCWD;把AX的符号位复制到DX扩展指令cbwcwd后无操作数cbw的意思是将byte扩展成word,就是将字节扩展成字,这里被隐含的操作数是al,隐含寻址用于有符号数的除法若[AL]=A7H,则执行CBW后,AH的内容为FFHCBW;把AL的符号位复制到AHCWD;把AX的符号位复制到DX扩展指令byte扩展成word字节扩展成字cbwalcbw是将al的符号位扩展到ah中,构成ax这个字隐含寻址用于有符号数的除法若[AL]=A7H,则执行CBW后,AH的内容为FFHCBW;把AL的符号位复制到AHCWD;把AX的符号位复制到DX扩展指令al符号位扩展到ah构成axcbw再来看一下cwd,cwd的意思是将word扩展成doubleword,也就是把字扩展成双字,这里被隐含的操作数是ax,扩展指令cwdword扩展成doubleword字扩展成双字axcwd将ax的符号位扩展到了dx中,最后得到的是DX和AX构成的双字扩展指令cwdax符号位扩展到dxDX和AX构成双字扩展指令主要用于有符号数的除法,因为在计算除法的时候要求被除数一定是除数的两倍字长,所以在做除法之前,可能需要将被除数进行符号位的扩展,有符

温馨提示

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

评论

0/150

提交评论