汇编语言指令集.doc

上传人:飞****9 文档编号:137856435 上传时间:2020-07-12 格式:DOC 页数:17 大小:45.50KB
返回 下载 相关 举报
汇编语言指令集.doc_第1页
第1页 / 共17页
汇编语言指令集.doc_第2页
第2页 / 共17页
汇编语言指令集.doc_第3页
第3页 / 共17页
汇编语言指令集.doc_第4页
第4页 / 共17页
汇编语言指令集.doc_第5页
第5页 / 共17页
点击查看更多>>
资源描述

《汇编语言指令集.doc》由会员分享,可在线阅读,更多相关《汇编语言指令集.doc(17页珍藏版)》请在金锄头文库上搜索。

1、汇编语言程序设计1.1 8086微处理器的寻址方式 为了找到操作数所存放的位置的操作成为寻址方式。8086汇编语言共有四种寻址方式。8086CPU内部寄存器可用助记符表示如下:8位寄存器名称;AL,AH,BL,BH,CL,CH,DL,DH.16位寄存器名称;AX, BX, CX,DX, SI, DI,SP,BP.段寄存器名称:CS,DS,ES,SS。 3. 2.1 立即数寻址立即数寻址方式指令中包含有操作数,此类指令一般用于对CPU中的寄存器赋值。例如: MOV AL,8 ;将8位数据送到寄存器AL中 MOV AX,16H ;将16位的数据0016H送到寄存器AX中,因为AX寄存器 ;是16位

2、的,它由AH和AL组成,执行这条指令后AH中内 ;容为00,AL中内容为16H。所以(AX)= 0016H立即数寻址的特点是数据直接在指令中给出,操作直接在CPU中进行,不需要总线周期。3.2.2寄存器寻址 寄存器寻址指操作数在指令的寄存器中。此类指令的操作都在CPU内部的寄存器中进行,所以执行时间短。例如: ADD AL,BL ;把寄存器AL中内容和寄存器BL中内容相加的结果送AL寄存器寄存器寻址的特点是,操作在CPU的寄存器间进行,不需要总线周期。3.2.3直接寻址 直接寻址指操作数在CPU外部的存储器中需要通过数据总线才能把数据取出进行操作。例如: MOV AL,2010 ;把内存201

3、0单元中的内容送到CPU的AL寄存器中 直接寻址的特点是指令中有个操作数在内存中,指令执行时需要总线周期操作。3.2.4寄存器间接寻址 寄存器间接寻址指操作数以寄存器中的内容作为地址指向内存的某一单元。例如: MOV AL,BX ;以BX中的内容作为内存单元的地址,把该内存单元中的可用于寄存器间接寻址的寄存器为BX,BP,DI,SI.3.3 8086汇编指令系统3.3.1 可执行指令1,传送类指令 传送指令用于实现CPU个寄存器之间,CPU的各寄存器和存储器之间,CPU的各寄存器和输入/输出的个端口之间进行数据传递。除了取标志指令外,传送类v执行后不对标识寄存器产生影响。1) 基本转移类指令

4、指令形式; MOV DST,SRC;功能:SRC内容送到DST中。SRC可以是常数、CPU中的寄存器、内存地址。 DST可以是CPU中的寄存器、内存地址,但不能是代码段寄存器CS或指令指针IP。8086 CPU中的寄存器可以按8位方式,也可以按16位方式操作,传送语句中的源操作数和目的操作数的位数必须一致。如果要把一个常数传送到存储器中,必须用伪指令WORD PTR或BYTE PTR来指定要传送的常数是以字节(8位)还是字(16位)方式传送。源操作数和目的操作数不允询同时为存储器地址。不允许向段寄存器或指令指针直接传送数据。如果耍向除CS外的寄存器传送数据,可以通过CPU中的其他寄存器进行。

5、例如:MOV AX,1024 ;先把常数送到AX寄存器, MOV DS,AX ;然后再把AX寄存器中的数据送入DS用DI、SI和BX作间接寻址时,默认的段寄存器为数据段寄存器DS,用BP作间接寻址时,默认的段寄存器为SS。2) 堆栈操作指令 PUSH SRC; POP DST; 堆栈是内存中的一块区域,该区域可定位在内存的任何地方,地址由堆栈段寄存器SS和堆栈指针SP决定。堆栈按先进后出(或后进先出)方式工作。 指令形式:PUSH SRC POP DST功能:PUSH指令用于把源操作数中的内容压到堆栈中,具体过程为:SP=( SP)-2,(SRC)- SP,即:先把堆栈指针SP寄存器中的内容减

6、2后送回到SP寄存器中,再把源操作数SRC中自内容送到由Ss和SP构成的内存单元中;POP指令用于把堆栈中内容弹出到目的操作数中,具体过程为; SP-DST,SP=(SP) +2,即:先把由SS寄存器和堆栈指针SP寄存器构成的内存单元中的内容送到DST中,然后把SP中的内容加2后送回到SP中。SRC和DST可以是寄存器或存储器,DST不允许用CS,SRC和DST都必须是16位的操作。3) 交换指令 XCHG DST,SRC;功能:把DST和SRC中的内容交换SRC和DST不能同时为内存的地址,也不可以是CS或IP寄存器。4) 换码指令 XLAT 功能:把BX和AL中的内容相加后作为内存的地址,

7、然后把该地址所指向的内存单元中的内容取到AL寄存器中去。5) 取地址指令 LEA DST,SRC; LEA指令用于把SRC所指向的内存地址的偏移量取到DST中 LDS DST,SRC; LDS指令用于把SRC内存地址的第一个字取到DST中,并将内存地址的第二个字取到DS寄存器中;LES DST,SRC; LES指SRC所指向的内存地址的第一个字取到DST中,并将内存地址的第二个字取到ES寄存器中。6) 取标志指令 LAHF SAHF PUSHF POPF功能:LAHF把标志寄存器的低8位取到AH,标志寄存器中的各位位置与AH各位位置对应。SAHF 把AH内容送到标志寄存器的低8位;标志寄存器中

8、的各位位置对应PUSHF把标志寄存器的值压入堆栈:SP值的变化和PUSH指令类似。POPF把堆栈顶部的值弹出到标志寄存器中,SP值的变化和POP指令;2算术类指令算术类指令用作加、减、乘、除运算。参加运算的数据都按整数对待。指令执行后将根据运算结果改变标志寄存器中的某些标志位。标志位改变的基本规律如下: 如果运算结果等于0,则ZF=1。 如果运算结果为负数,则SF=1。 如果运算结果中有偶数个1,则PF=l。 当有符号数运算产生溢出,则OF=1。 当无符号数运算产生溢出,则CF=I。 当无符号数相减,被减数小于减数时,CF=1。 1)不带进位位的加法指令 指令形式:ADD DST, SRC 功

9、能:SRC内容和DST内容相加,结果送到DST中。2) 不带进位位的减法指令SUB 指令形式:SUB DST, SRC 功能:SRC内容和DST内容相加,结果送到DST中。3) 带进位位的加法指令ADC 指令形式:ADC DST, SRC 功能:SRC内容和DST内容相加后再加标志位CF内容,结果送到DST中。4) 带借位位的减法指令SBB 指令形式:SBB DST, SRC 功能:SRC内容和DST内容相减后再减标志位CF内容,结果送到DST中。5) 增1指令 INC 指令形式:INC DST-SRC 功能:DST-SRC内容加1后结果送到DST-SRC中。6) 减1指令 DEC指令形式:D

10、EC DST-SRC 功能:DST-SRC内容减1后结果送到DST-SRC中。7) 无符号数乘法指令 指令形式:MUL SRC; (AL)*SRC-AX (AX)*SRC-DX,AX8) 带符号数乘法指令 指令形式:IMUL SRC; (AL)*SRC-AX (AX)*SRC-DX,AX9) 无符号数除法指令 指令形式:DIV SRC; (AX)/SRC-AX AL商AH余 (DX)(AX)/SRC=DX,AX AX商,DX余数10 带符号数除法指令 指令形式:IDIV SRC; (AX)/SRC-AX AL商AH余 (DX)(AX)/SRC=DX,AX AX商,DX余数11) BCD码运算指

11、令 P97 指令形式 AAA AAS DAA DAS AAM AADBCD码在计算机中有两种表示方法:一种用8位二进制数表示2位BCD码,如01 100111,称为组合BCD码;另一种用8位二进制数的低4位表示1位BCD码,如00000111,称为非组合BCD码。由于计算机的运算指令都是按二进制的形式进行,所以在对用BCD码表示的数算时,必须进行必要的处理,也叫调整。指令形式: AAA AAS DAA DAS AAM AAD 功能:AAA用于非组合的BCD加法的调整;AAS用于非组合的BCD减法的调整;DAA用于组合的BCD加法的调整;DAS用于组合的BCD减法的调整;AAM用于非组合的BCD

12、乘法的调整;AAD用于非组合的BCD除法的调整。12)比较指令 CMP DST ,SRC; 指令形式:CMP DST,SRC; 功能:把DST内容减去SRC内容,结果不送回到DST。该指令与SUB指令相似,不同点在于不把结果送到目的操作数。3. 逻辑运算和移位类指令1)逻辑运算指令指令形式:AND DST,SRC; TEST DST,SRC; OR DST,SRC; XOR DST,SRC; NOT DST,SRC; NEG DST,SRC;l 送DST;TEST指令买现uM布u 3K乙功能:AND指令实现DST和SRC按位逻辑与操作,结果送DST;TEST指令实现DST和SRC按位逻辑与操作

13、,DST结果不变;OR指令实现DST和SRC按位逻辑或操作,结果送DST;NOT指令实现DSTSRC按位取反操作,结果送DST-SRC; NEG实现DST和SRC按位逻辑异或操作,结果送DST;2) 移位指令 (1)非循环移位指令 指令形式; SAL DST,SRC; SAR DST,SRC; SHL DST,SRC; SHR DST,SRC; 功能:SAL是算术左移指令,根据SRC的值K把DST中内容左移K位,每移一次,最左边的一位移入 CF,最右边的位补O;SHL是逻辑左移指令,功能同SAL指令。 SAR是算术右移指令,根据SRC的值K把DST中内容右移K位,每移一次,最左边的一位除了向右

14、移外还保持本身的值不变,即:保持符号位不变。最右边的一位移人CF中。SGR是逻辑右移指令,根据SRC的值后把DST中内容右移座位,每移一次,最右边的一位移入CF中,最左边的位补0。 上面四条指令的SRC可以是常数1或寄存器CL两种形式。常数l表示移1位,如果希望移多位,则必须用CL指定要移的位数。 上面指令的SRC可以是常数1或寄存器CL两种形式。常数l表示移1位,如果希望移多位,则必须用CL指定要移的位数。(2)不带进位位的循环移位指令 指令形式: ROL DST,SRC;ROR DST,SRC;功能:ROL是左移指令,根据SRC的值七把DST中内容左移座位,每移一次,最左边的一位移人CF的同时也移入最右边的位中。ROR是右移指令,根据SRC的值K把DST中内容右移K位,每移一次,最右边的一位除了移入CF的同时也移入最左边的位中。(3) 带进位位的循环移位指令指令形式:RCL DST,SRC RCR DSTSRC功能:RCL是左移指令,根据SRC的值K把DST中内容左移K位,每移一次,最左边的一位移人CF,同时把CF移人到最右边的位中。RCR是右移指令,根据SRC的值K后把DST中内容右移K位,每移一次,最

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > IT计算机/网络 > 其它相关文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号