第一范文网 - 专业文章范例文档资料分享平台

汇编语言指令详解

来源:用户分享 时间:2025/5/29 12:27:28 本文由loading 分享 下载这篇文档手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:xxxxxxx或QQ:xxxxxx 处理(尽可能给您提供完整文档),感谢您的支持与谅解。

交换能在通用寄存器与累加器之间、通用寄存器之间、通用寄存器与存储器之间进行。但段寄存器和立即数不能作为一个操作数,不能在累加器之间进行。 例如: XCHG AL,CL

XCHG AX,DI XCHG BX,SI XCHG AX,BUFFER XCHG DATA[SI],DH

4.累加器专用传送指令

有三种,输入、输出和查表指令。前两种又称为输入输出指令。 ⑴ IN 指令

一般格式:IN AL,n ; B AL←[n]

IN AX,n ; W AX←[n+1][n] IN AL,DX ; B AL←[DX] IN AX,DX ; W AX←[DX+1][DX]

功能:从I/O端口输入数据至AL或AX。

输入指令允许把一个字节或一个字由一个输入端口传送到AL或AX中。若端口地址超过255时,则必须用DX保存端口地址,这样用DX作端口寻址最多可寻找64K个端口。 ⑵ OUT 指令

一般格式:OUT n,AL ; B AL→[n] OUT n,AX ; W AX→[n+1][n]

OUT DX,AL ; B AL→[DX] OUT DX,AX ; W AX→[DX+1][DX]

功能:将AL或AX的内容输出至I/O端口。

该指令将AL或AX中的内容传送到一个输出端口。端口寻址方式与IN指令相同。 ⑶ XLAT指令

一般格式:XLAT ; AL=(DX)×16+(BX)+(AL)) 功能:完成一个字节的查表转换。

要求:①寄存器AL的内容作为一个256字节的表的下标。②表的基地址在BX中,③转换后的结果存放在AL中. TABLE: 9

例如:MOV BX,OFFSET TABLE

MOV AL,8 ……

IN AL,1 第9个字符 AAH XLAT ;查表

OUT 1,AL ;(AL)= AAH 表长度256 本指令可用在数制转换、函数表查表、代码转换等场合。

5.地址传送指令(有三条地址传送指令) ⑴ LEA (Load Effective Address) 一般格式: LEA OPRD1,OPRD2

功能:把源操作数OPRD2的地址偏移量传送至目的操作数OPRD1。

要求:①源操作数必须是一个内存操作数,②目的操作数必须是一个16位的通

用寄存器。这条指令通常用来建立串操作指令所须的寄存器指针。 例:LEA BX,BUFR;把变量BUFR的地址偏移量部分送到BX

⑵ LDS (Load pointer into DS) 一般格式: LDS OPRD1,OPRD2

功能:完成一个地址指针的传送。地址指针包括段地址部分和偏移量部分。指令将段地址送入DS,偏移量部分送入一个16位的指针寄存器或变址寄存器。

要求:源操作数是一个内存操作数,目的操作数是一个通用寄存器/变址寄存器。

例如:LDS SI,[BX] ;将把BX所指的32位

地址指针的段地址部分送入DS,偏移量部分送入SI。图2-9 LDS指令示意

如图2-9所示。

⑶ LES (Load pointer into ES) 一般格式: LES OPRD1,OPRD2

这条指令除将地址指针的段地址部分送入ES外,与LDS类似。例如: LES DI,[BX+COUNT]

6.标志寄存器传送(有四条标志传送指令)

10

⑴ LAHF (LOAD AH WITH FLAG)

将标志寄存器中的SF、ZF、AF、PF和CF(即低8位)传送至AH寄存器的指定位,空位没有定义。 ⑵ SAHF (STORE

AH WITH FLAG)

将寄存器AH的指定位,送至标志寄存器的SF、ZF、AF、PF和CF位(即低8位)。根据AH的内容,影响上述标志位,对OF、DF和IF无影响。 ⑶ PUSHF (PUSH FLAG)

将标志寄存器压入堆栈顶部,同时修改堆栈指针,不影响标志位。 ⑷ POPF (POP FLAG)

堆栈顶部的一个字,传送到标志寄存器,同时修改堆栈指针,影响标志位。

二、算术运算指令

8086/8088提供加、减、乘、除四种基本算术操作。这些操作都可用于字节或字的运算,也可以用于带符号数与无符号数的运算。 带符号数用补码表示。同时

8086/8088也提供了各种校正操作,故可以进行十进制算术运算。

参与加、减运算的操作数可如上图所示。 1.加法指令 (Addition)

⑴一般形式:ADD OPRD1,OPRD2

功能:OPRD1←OPRD1+OPRD2

完成两个操作数相加,结果送至目的操作数OPRD1。目的操作数可以是累加器,任一通用寄存器以及存储器操作数。 例如:

ADD AL,30;累加器与立即数相加

ADD BX,[3000H];通用寄存器与存储单元内容相加 ADD DI,CX;通用寄存器之间

ADD DX,DATA[BX+SI];通用寄存器与存储单元内容相加 ADD BETA[SI],DX;存储器操作数与寄存器相加

11

这些指令对标志位CF、DF、PF、SF、ZF和AF有影响。 ⑵一般形式:ADC OPRD1,OPRD2;带进位的加法

功能:OPRD1←OPRD1+OPRD2 +CF

这条指令与上—条指令类似,只是在两个操作数相加时,要把进位标志CF的现行值加上去,结果送至目的操作数。

ADC指令主要用于多字节运算中。若有两个四字节的数,已分别放在自FIRST和SECOND开始的存储区中,每个数占四个存储单元。存放时,最低字节在地址最低处,则可用以下程序段实现相加。

MOV AX,FIRST

ADD AX,SECOND;进行字运算 MOV THIRD,AX MOV AX,FIRST+2 ADC AX,SECOND+2 MOV THIRD+2,AX

这条指令对标志位的影响与ADD相同。 ⑶一般形式:INC OPRD ;

功能:OPRD←OPRD+1

完成对指定的操作数OPRD加1,然后返回此操作数。此指令主要用于在循环程序中修改地址指针和循环次数等。

这条指令执行的结果影响标志位AF、OF、PF、SF和ZF,而对进位标志没有影响。

如:INC AL

INC [BX]

2.减法指令(Subtraction)

⑴一般形式:SUB OPRD1,OPRD2 ;

功能:OPRD1←OPRD1-OPRD2

完成两个操作数相减,也即从OPRD1中减去OPRD2,结果放在OPRD1中。

例如: SUB CX,BX

SUB

[BP],CL

⑵一般形式:SBB OPRD1,OPRD2 ;

功能:OPRD1←OPRD1-OPRD2-CF

12

搜索更多关于: 汇编语言指令详解 的文档
汇编语言指令详解.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.diyifanwen.net/c5mhb4076xl6rgfk162cx_3.html(转载请注明文章来源)
热门推荐
Copyright © 2012-2023 第一范文网 版权所有 免责声明 | 联系我们
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:xxxxxx 邮箱:xxxxxx@qq.com
渝ICP备2023013149号
Top