资源描述:
《微型计算机原理与汇编语言 第4章-指令系统.ppt》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、4.1.38086/8088指令系统8086/8088CPU指令系统包含有133条基本指令。按其功能可以分为6类,它们是:⑴数据传送类指令⑵算术运算类指令⑶逻辑运算与移位类指令⑷字符串指令⑸控制转移类指令⑹处理器控制类指令。用到的符号意义如下:DST:目的操作数SRC:源操作数OPR:操作数MEM:存储器操作数REG:寄存器操作数(16位的AX,BX,CX,DX,BP,SP,SI,DI或8位的AH,AL,BH,BL,CH,CL,DH,DL)SEG:段寄存器(16位的CS,DS,ES,SS)Data:立即数port:8位的端口地址DST_ADDR:转移的目标地址COUNT:计数器一、
2、数据传送类指令数据传送类指令将数据、地址或立即数传送到寄存器或存储器单元中。它又可分为通用数据传送指令、累加器专用传送指令、地址传送指令和标志传送指令等四组。(一)通用数据传送指令1.最基本的传送指令指令格式及操作:MOVdst,src;(dst)←(src)dst是目的操作数Src是源操作数需说明一点,对于代码段寄存器CS和指令指针寄存器IP,通常无需用户利用传送指令改变其中的内容。但是CS可以作为源操作数。16位通用寄存器AXBXCXDXBPSPSIDIALBLCLDLAHBHCHDH段寄存器CSDSSSES存储器立即数16位816位816位816位MOV指令数据传送方向
3、说明:*DST和SRC的组合关系是:①REG/MEM<=data②REG/MEM<=>REG③REG/MEM<=>SEG*CS不能做目的操作数;*不能MEM<=>MEM,不能SEG<=>SEG,不能SEG<=data*MOV不改变源操作数,不影响标志位。例:MOVAL,80HMOV[BX],1020HMOVAX,BXMOVDH,ALMOV[BX+10H],DXMOVDX,[BX+SI]MOVSS,AXMOVSS,[1000H]MOVAX,DSMOV[3020H],DS2.堆栈操作指令堆栈操作指令是用来完成压入和弹出堆栈操作的。⑴压入堆栈指令指令格式及操作:PUSHsrc;(SP)←
4、(SP)-2,((SP)+1:(SP))←(src)⑵弹出堆栈指令指令格式及操作:POPdst;(dst)←((SP)+1:(SP)),(SP)←(SP)+2源操作数src和目的操作数dst可以是REG/MEM/SEG,且必须是16位的操作数,但不能是立即数。说明:*堆栈按后进先出原则组织。*堆栈操作以字为单位进行。*目的操作数dst不可以是CS。例:PUSH[BX+DI]PUSHAXPUSHCSPOP[BX+SI+1020H]POPBXPOPDS例:已知(AX)=1234H,(BX)=5678H,分析下面程序段的执行过程。1PUSHAX2PUSHAXPUSHBXPUSHBXPOP
5、AXPOPBXPOPBXPOPAX3.交换指令XCHG(Exchange)格式:XCHGOPR1,OPR2执行操作:OPR1<=>OPR2说明两个操作数中必有一个是寄存器REG<=>REG/MEM例:XCHGBX,[BP+SI]XCHGDL,BLXCHGBX,CXXCHG[2000H],AHXCHG[2000H],BXXCHGDXXCHGBL(二)累加器专用指令这类指令中的一个操作数必须是累加器。累加器操作数可以是8位的,也可以是16位的。1.输入/输出指令输入输出指令可以分为两大类:一类是直接端口地址的输入/输出指令:一类是通过DX寄存器间接端口地址的输入/输出指令。⑴输入指令①
6、直接寻址的输入指令指令格式及操作:INacc,port;(acc)←(port)②间接寻址的输入指令指令格式及操作:INacc,DX;(acc)←((DX))⑵输出指令①直接寻址的输出指令指令格式及操作:OUTport,acc;(port)←(acc)②间接寻址的输出指令指令格式及操作:OUTDX,acc;((DX))←(acc)2.字节转换指令指令格式及操作:XLATsrc_table;(AL)←((BX)+(AL))XLAT指令是用来将一种字节代码转换成另一种字节代码。常用该指令进行查表操作。使用前先建立一个字节表格,表格的首址存入BX,要转换的代码(即相对于表格首址的位移量)
7、放入AL,然后执行XLAT,在AL中得到转换以后的代码。XLAT指令还可以有以下几种表示形式:XLAT;不写操作数XLATB;有B就不允许再写操作数。XLATES:src_table;重设段寄存器为ES[例]在内存的数据段有一张16进制数的ASCII码表,其首地址为Hex_table,如下图所示,欲将十六进制数0AH转换成ASCII码,则可用以下几条指令实现:MOVBX,OFFSETHex_tale;(BX)←表首址MOVAL,0AH;(AL)←十六进制数AXLATH