指令系统及汇编语言程序设计

指令系统及汇编语言程序设计

ID:11244754

大小:508.00 KB

页数:22页

时间:2018-07-10

指令系统及汇编语言程序设计_第1页
指令系统及汇编语言程序设计_第2页
指令系统及汇编语言程序设计_第3页
指令系统及汇编语言程序设计_第4页
指令系统及汇编语言程序设计_第5页
资源描述:

《指令系统及汇编语言程序设计》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、第2章指令系统及汇编语言程序设计2.38086/8088指令系统8086/8088的指令大致可分成以下六种:数据传送、算术运算、位操作、串操作、程序控制和处理器控制指令。2.3.1数据传送指令数据传送指令是将数据、地址或立即数传送到寄存器或存储单元中。这类指令不影响状态标志位,只有FLAGS的指令(SAHF和POPF)例外。1.通用数据传送指令(1)数据传送指令指令格式:MOVDST,SRC功能:DST ←SRC操作说明:MOV指令将源操作数SRC的内容传送到目的操作数DST。指令执行后目的操作数DST与源操作数SRC的内容相等,即DST=SRC,源操作数本身不变。操作数的类型和传送

2、方向如图2.1所示。从上图可以看出,在MOV指令中:1)源操作数可以为:存储器、通用寄存器、段寄存器和立即数。2)目的操作数可以为:存储器、通用寄存器和段寄存器(CS除外)。3)目的操作数和源操作数不能同时为存储器、段寄存器;立即数不能送段寄存器,其余可以任意搭配。4)立即送存储器时难以确定长度,需要在存储器操作数的前面加类型说明BYTEPTR或WORDPTR,例如:MOVBYTEPTR[SI+10H],30;8位立即数30送偏移地址为SI+10H的字节单元。MOVWORDPTR[BX+DI],2;16位立即数2送偏移地址为BX+DI的字单元。【例2.7】数据传送指令举例。①立即数送

3、寄存器MOVAL,10HMOVBX,2100H②寄存器之间传送MOVDX,CXMOVAH,DLMOVDS,AXMOVDX,ES③通用寄存器与存储器之间传送MOVAX,[1000H]MOV[BP],DX④段寄存器与存储器之间传送MOV[BX][DI],ESMOVDS,10[BP+DI]【例2.8】指出下列数据传送指令中的错误。①MOV10H,AX;立即数不能作为目的操作数②MOVDS,2000H;立即数不能送段寄存器③MOVCS,AX;CS不能作为目的操作数④MOVDS,ES;目的操作数和源操作数不能同时为段寄存器⑤MOV[DI],[SI];目的操作数和源操作数不能同时为存储器⑥MOV

4、AL,BX;类型不匹配,AL为8位、BX为16位寄存器⑦MOVDL,300;类型不匹配,DL为8位寄存器,300超过1B(2)堆栈操作指令堆栈是内存中的一个特定的区域,其操作原则是“后进先出(LastIn,FirstOut)”。由段寄存器SS确定堆栈段的起始地址,由堆栈初始化时寄存器SP的值设定堆栈底的地址。堆栈的形态如图2.2所示。堆栈操作有入栈和出栈两种。1)入栈指令指令格式:PUSHSRC功能:SP←SP-2,[SP+1][SP]←SRC操作说明:PUSH指令先将SP的内容减2,然后再将操作数SRC的内容送入由SP指出的栈顶即偏移地址为SP和SP+1的两个连续字节中。指令中的操

5、作数SRC可以是存储器、通用寄存器和段寄存器,但不能是立即数。【例2.9】PUSHAX;通用寄存器内容入栈PUSHCS;段寄存器内容入栈PUSH[SI];字存储单元内容入栈2)出栈指令指令格式:POPDST功能:DST←[SP+1][SP],SP←SP+2操作说明:POP指令先将堆栈指针SP所指示的栈顶存储单元的值弹出到操作数DST中,然后再将SP的内容加2。指令中的操作数DST可以是存储器、通用寄存器或段寄存器(但不能是CS),同样,不能是立即数。【例2.10】POPAX;栈顶内容弹出至通用寄存器POPES;栈顶内容弹出段寄存器POPMEM[DI];栈顶内容弹出至字存储单元入栈和出

6、栈操作如图2.3所示。使用堆栈时还应注意:1)堆栈操作指令中的操作数必须是16位的字操作数。2)由SP指示现行堆栈顶的位置。堆栈顶是浮动的。3)编程中PUSH、POP指令应成对使用,以保持栈的平衡。(3)数据交换指令指令格式:XCHGOPR1,OPR2功能:OPR1←→OPR2操作说明:XCHG指令将两个操作数内容进行交换。交换的内容可以是一个字节(8位),也可以是一个字(16位),两个操作数的长度必须一致。参加交换的两个操作数各自均可以是寄存器或存储器,但不能二者同时为存储器。即可以在寄存器与寄存器之间,或寄存器与存储器之间进行交换。段寄存器不能参加交换。【例2.11】XCHGAL

7、,CL;8位寄存器间内容交换XCHGAX,DX;16位寄存器间内容交换XCHGBX,DATA[SI];寄存器与存储单元间内容交换(4)字节转换指令指令格式:XLATSRC-table功能:AL←[BX+AL]操作说明:XLAT指令完成一字节的查表转换。具体操作为:将BX和AL的内容相加后作为偏移地址,取出该存储单元的内容送AL。使用这条指令之前应预先把表头地址存入BX寄存器,AL中存放表元素的序号。表中元素的序号依次是0,1,2,3,……,表的最大长度为2

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。