汇编语言的各条指令

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

常用命令

数据传送指令

一通用数据传送指令

MOV指令为双操作数指令,两个操作数中不能全为内存操作数

格式:MOV DST,SRC

执行操作:dst = src

注:1.目的数可以是通用寄存器,存储单元和段寄存器(但不允许用CS段寄存器).

2.立即数不能直接送段寄存器

3.不允许在两个存储单元直接传送数据

4.不允许在两个段寄存器间直接传送信息

PUSH入栈指令及POP出栈指令:

堆栈操作是以“后进先出”的方式进行数据操作。

格式:PUSH SRC //Word

执行操作:(SP)<-(SP)-2

((SP)+1,(SP))<-(SRC)

注:1.入栈的操作数除不允许用立即数外,可以为通用寄存器,段寄存器(全部)和存储器。

2.入栈时高位字节先入栈,低位字节后入栈。

格式:POP DST //Word

执行操作:(DST)<-((SP+1),(SP))

(SP)<-(SP)+2

注:1.出栈操作数除不允许用立即数和CS段寄存器外,可以为通用寄存器,段寄存器和存储器。

2.执行POP SS指令后,堆栈区在存储区的位置要改变。

3.执行POP SP 指令后,栈顶的位置要改变。

XCHG(eXCHanG)交换指令:

将两操作数值交换。

格式:XCHG OPR1,OPR2 //Byte/Word

执行的操作:(OPR1)<-->(OPR2)

注:1.必须有一个操作数是在寄存器中

2.不能与段寄存器交换数据

存储器与存储器之间不能交换数据。

二累加器专用传送指令

IN输入指令

长格式为:IN AL,PORT(字节)

IN AX,PORT(字)

执行的操作:(AL)<-(PORT)(字节)

(AX)<-(PORT+1,PORT)(字)

短格式为:IN AL,DX(字节)

IN AX,DX(字)

OUT输出指令

长格式为:OUT PORT,AL(字节)

OUT PORT,AX(字)

执行的操作:(PORT)<-(AL)(字节)

(PORT+1,PORT)<-(AX)(字)

短格式为:OUT DX,AL(字节)

OUT DX,AX(字)

执行的操作:((DX))<-(AL)(字节)

((DX)+1,(DX))<-AX(字)

XLAT(TRANSLATE)换码指令:

把一种代码转换为另一种代码。

格式:XLAT (OPR 可选) //Byte

执行操作:(AL)<-((BX)+(AL))

注:指令执行时只使用预先已存入BX中的表格首地址,执行后,AL中内容则是所要转换的代码。

三有效地址送寄存器指令

LEA(Load Effective Address) :

有效地址传送寄存器指令

格式:LEA REG,SRC //指令把源操作数SRC的有效地址送到指定的寄存器中。

执行操作:(REG)<-SRC

注:1. SRC只能是各种寻址方式的存储器操作数,REG只能是16位寄存器

2.MOV BX,OFFSET OPER_ONE 等价于LEA BX,OPER_ONE

3.MOV SP,[BX] //将BX间接寻址的相继的二个存储单元的内容送入SP中

4.LEA SP,[BX] //将BX的内容作为存储器有效地址送入SP中

LDS(Load DS with pointer):

指针送寄存器和DS指令

格式:LDS REG,SRC //常指定SI寄存器。

执行的操作:(REG)<-(SRC)

(DS)<-(SRC+2)

注:把源操作数指定的4个相继字节送到由指令指定的寄存器及DS寄存器中。该指令常指定SI寄存器。

LES(Load ES with pointer) 指针送寄存器和ES指令

格式:LES REG,SRC //常指定DI寄存器

执行的操作:(REG)<-(SRC)

(ES)<-(SRC+2)//与LDS大致相同,不同之处是将ES代替DS而已。

送到由指令指定的寄存器及ES寄存器

中。该指令常指定DI寄存器。

四标志寄存器传送指令

LAHF ( Load AH with Flags )

标志位送AH指令

格式:LAHF ......

执行操作:(AH)<-(PWS的低字节)

注:将PSW寄存器中的低8位的状态标志(条件码)送入AH的相应位,SF送D7位,ZF 送D6位

SAHF( Store AH into Flags )

AH送标志寄存器指令

格式:SAHF

执行操作: (PWS的低字节)<-(AH)

注:将AH寄存器的相应位送到PSW寄存器的低8位的相应位,AH的D7位送SF,D6位送ZF。

PUSHF( PUSH the Flags)

标志进栈指令

格式:PUSHF

执行操作:(SP)<-(SP)-2

SP=SP-1,(SP)=PSW的高8位,SP=SP-1,(SP)=PSW的低8位

注:将标志寄存器的值压入堆栈顶部,同时栈指针SP值减2

POPF( POP the Flags )

标志出栈指令

格式:POPF

执行操作:(PWS)<-((SP)+1,(SP))

(SP)<-(SP+2)

PSW低8位=(SP),SP=SP+1,PSW高8位=(SP),SP=SP+1

注:与PUSHF相反,从堆栈的顶部弹出两个字节送到PSW寄存器中,同时堆栈指针值加2

算术指令

一加法指令

相关文档
最新文档