欢迎来到天天文库
浏览记录
ID:36775848
大小:655.67 KB
页数:80页
时间:2019-05-15
《微机原理80x86指令系统》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、第4章80x86指令系统4.1.38086/8088指令系统8086/8088CPU指令系统包含有133条基本指令。按其功能可以分为6类,它们是:⑴数据传送类指令⑵算术运算类指令⑶逻辑运算与位移类指令⑷字符串指令⑸控制转移类指令⑹处理器控制类指令。第4章80x86指令系统一、数据传送类指令数据传送类指令时将数据、地址或立即数传送到寄存器或存储器单元中。可完成寄存器与寄存器之间、寄存器与存储器之间、寄存器与I/O端口之间的字节或字传送。它又可分为通用数据传送指令、输入/输出指令、目标地址传送指令和标
2、志传送指令四组。特点:除SAHF和POPF不影响标志寄存器内容。(一)通用数据传送指令1.最基本的传送指令指令格式及操作:MOVdst,src;(dst)←(src)将源操作数s指定的内容送到d目的操作数dst是目的操作数,它可以是存储器、通用寄存器(不能为IP)和段寄存器(不能为CS),不能为立即数。Src是源操作数,它可以是存储器、通用寄存器、段寄存器和立即数。第4章80x86指令系统16位段寄存器通用寄存器CSDSSSES816位AXBXCXDX816立即数BPSPSIDI16位ALBL
3、CLDL位存储器AHBHCHDH816位MOV指令数据传送方向需说明一点,对于代码段寄存器CS和指令指针寄存器IP,通常无需用户利用传送指令改变其中的内容。但是CS可以作为源操作数。第4章80x86指令系统MOVE指令需要注意的问题:①MOVE指令可传送8位数据,也可传送16位数据。②MOVE指令中的两操作数s和d,必用1个寄存器,不允许同时为存储单元。③不能用CS和IP做目的操作数。④不允许段寄存器之间直接数据传送。⑤不允许立即数做目的操作数。⑥不能向段寄存器送立即数。第4章80x86指令系统
4、2.堆栈操作指令堆栈操作指令是用来完成压入和弹出堆栈操作的。8086/8088指令系统中提供了完成这两种操作的相应指令。⑴压入堆栈指令指令格式及操作:PUSHsrc;(SP)←(SP)-2,((SP)+1:(SP))←(src)src源操作数可以是寄存器操作数和存储器操作数,且必须是16位的操作数,但不能是立即数。第4章80x86指令系统⑵弹出堆栈指令指令格式及操作:POPdst;(dst)←((SP)+1:(SP)),(SP)←(SP)+2dst目的操作数可以是寄存器操作数和存储器操作数,且必须
5、是16位的操作数,但不能是立即数。第4章80x86指令系统特点:①s和d可以是16位寄存器或存储器两相邻单元;②堆栈按字操作;③每执行一条入栈指令,堆栈地址指针SP减2,入栈的数据位于栈顶;④高位字节先入栈,放在高位地址单元,低位字节后入栈,放在较低地址单元;先进先出原则;⑤执行弹出指令时,过程相反,栈顶指针的值加2;⑥CS段寄存器的值可以入栈,但不能反过来弹出一个字到CS第4章80x86指令系统3.交换指令将源操作数和目的操作数(字或字节)相互对应交换位置。指令格式及操作:XCHGopr1,op
6、r2;(opr1)←→(opr2)第4章80x86指令系统4.字节转换指令通过查表来完成代码转换,用于实现字节翻译的功能。指令格式及操作:XLATsrc_table;(AL)←((BX)+(AL))XLAT指令是用来将一种字节代码转换成另一种字节代码。执行的结果放在AL中。使用指令前:BX寄存器的内容指向表格首址;AL中存放待查的码,即某一项与表首地址的距离。XLAT指令还可以有以下几种表示形式:XLAT;不写操作数XLATB;有B就不允许再写操作数。XLATES:src_table;重设段寄存器
7、为ES第4章80x86指令系统[例]在内存的数据段有一张16进制数的ASCII码表,其首地址为Hex_table,如下图所示,为了查出第10个元素,即十六进制数A的ASCII码,则可用以下几条指令实现:MOVBX,OFFSETHex_tale;(BX)←表首址MOVAL,0AH;(AL)←序号XLATHex_table;查表转换Hex_table=1000H…60000HDS:60000HHex_table30H61000HBX:1000HEA+AX:000AHHex_table+131H6100
8、1HAAHex_table+232H61002H6100AHSS…CCIHex_table+AI41H6100AHIHex_table+BI42H6100BH表表…AL0AH41HHex_table+F46H6100FH第4章80x86指令系统(二)输入/输出指令只能用累加器作为执行I/0数据传送的机构。输入输出指令可以分为两大类:一类是直接端口地址的输入/输出指令:一类是通过DX寄存器间接端口地址的输入/输出指令。⑴输入指令①直接寻址的输入指令寻址范围0-255(少于8位地址)指
此文档下载收益归作者所有