好文档 - 专业文书写作范文服务资料分享网站

汇编语言指令大全

天下 分享 时间: 加入收藏 我要投稿 点赞

格式: LAHF 功能: 取FLAG标志寄存器低8位至AH寄存器.(AH)<--(FLAG)7~0 LDS 从存储器取出32位地址的指令 LDS 格式: LDS OPRD1,OPRD2 容,AH只是复制了原FLAG的低8位内容. 说明: OPRD1 为任意一个16位的寄存器. 示例: LDS SI,ABCD LDS BX,FAST[SI] LDS DI,[BX] 注意: 上面LDS DI,[BX]指令的功能是把BX所指的32位地址指针的段地址送入DS,偏移地址送入DI. 功能: 从存储器取出32位地址的指令. OPRD2 为32位的存储器地址. LEA 有效地址传送指令 LEA 格式: LEA OPRD1,OPRD2 功能: 将源操作数给出的有效地址传送到指定的的寄存器中. 说明: 1. OPRD1 为目的操作数,可为任意一个16位的通用寄存器. OPRD2 为源操作数,可为变量名、标号或地址表达式. 示例: LEA BX,DATA1 LEA DX,BETA[BX+SI] LEA BX BX,[BP],[DI] 2. 本指令对标志位无影响。 LES 从存储器取出32位地址的指令 LES 格式: LES OPRD1,OPRD2 说明: OPRD1 为任意一个16位的寄存器. 示例: LES SI,ABCD LES BX,FAST[SI] LES DI,[BX] 注意: 上面LES DI,[BX]指令的功能是把BX所指的32位地址指针的段地址送入ES,偏移地址送入DI. 功能: 从存储器取出32位地址的指令. OPRD2 为32位的存储器地址. LOCK 封锁总线指令 LOCK 格式: LOCK 功能: 指令是一个前缀,可放在指令的前面,告诉CPU在执行该指令时,不允许其它设备对总线进行访问. 无可用信息!用户可自行添加! LODS 取字符串元素指令 LODS 格式: LODS OPRD 其中OPRD为源字符串符号地址. 功能: 把SI寻址的源串的数据字节送AL或数据字送AX中去, 并根据DF的值修改地址指针SI进行自动调整. 说明: 1. 本指令不影响标志位. 2. 当不使用操作数时,可用LODS(字节串)或LODSW(字串)指令. LOOP 循环控制指令LOOP 格式: LOOP 标号 功能: (CX)<--(CX)-1,(CX)<>0,则转移说明: 1. 本指令是用CX寄存器作为计数器,来控制程序的循环.

至标号处循环执行, 直至(CX)=0,继续执行后继指令. LOOPE 循环控制指令LOOPZ/LOOPE 格式: LOOPZ/LOOPE 标号 功能: (CX)<--(CX)-1,(CX)<>0 且ZF=1时,转至标号处循环 2. 它属于段内SHORT短类型转移,目的地址必须距本指令在-128到+127个字节的范围内. 说明: 1. 本指令是用CX寄存器作为计数器,来控制程序的循环. 2. 它属于段内SHORT短类型转移,目的地址必须距本指令在-128到+127个字节的范围内. 3. 以上两种助记符等价. LOOPNE 循环控制指令LOOPNZ/LOOPNE 格式: LOOPNZ/LOOPNE 标号 功能: (CX)<--(CX)-1,(CX)<>0 且ZF=0时,转至标号处循环 说明: 1. 本指令是用CX寄存器作为计数器,来控制程序的循环. 2. 它属于段内SHORT短类型转移,目的地址必须距本指令在-128到+127个字节的范围内. 3. 以上两种助记符等价. LOOPNZ 循环控制指令LOOPNZ/LOOPNE 格式: LOOPNZ/LOOPNE 标号 功能: (CX)<--(CX)-1,(CX)<>0 且ZF=0时,转至标号处循环 说明: 1. 本指令是用CX寄存器作为计数器,来控制程序的循环. 2. 它属于段内SHORT短类型转移,目的地址必须距本指令在-128到+127个字节的范围内. 3. 以上两种助记符等价. LOOPZ 循环控制指令LOOPZ/LOOPE 格式: LOOPZ/LOOPE 标号 功能: (CX)<--(CX)-1,(CX)<>0 且ZF=1时,转至标号处循环 说明: 1. 本指令是用CX寄存器作为计数器,来控制程序的循环. 2. 它属于段内SHORT短类型转移,目的地址必须距本指令在-128到+127个字节的范围内. 3. 以上两种助记符等价. MOVE 数据传送指令 MOV 格式: MOV OPRD1,OPRD2 功能: 本指令将一个源操作数送到目的操作数中,即OPRD1<--OPRD2. 说明: 1. OPRD1 为目的操作数,可以是寄存器、存储器、累加器. OPRD2 为源操作数,可以是寄存器、存储器、累加器和立即数. 2. MOV 指令以分为以下四种情况: <1> 寄存器与寄存器之间的数据传送指令 <2> 立即数到通用寄存器数据传送指令 <3> 寄存器与存储器之间的数据传送指令 <4> 立即数到存储器的数据传送

3. 本指令不影响状态标志位 MOVS 字符串传送指令 MOVS 格式: MOVS OPRD1,OPRD2 MOVSB MOVSW 功能: OPRD1<--OPRD2. 说明: 1. 其中OPRD2为源串符号地址,OPRD1为目的串符号地址. 2. 字节串操作: 若DF=0,则作加, 若DF=1,则作减. 3. 对字串操作时: 若DF=0,则作加,若DF=1,则作减,. 4. 在指令中不出现操作数时,字节串传送格式为MOVSB、字串传送格式为MOVSW. 5. 本指令不影响标志位. MOVSB 字符串传送指令 MOVS 格式: MOVS OPRD1,OPRD2 MOVSB MOVSW 功能: OPRD1<--OPRD2. 说明: 1. 其中OPRD2为源串符号地址,OPRD1为目的串符号地址. 2. 字节串操作: 若DF=0,则作加, 若DF=1,则作减. 3. 对字串操作时: 若DF=0,则作加,若DF=1,则作减,. 4. 在指令中不出现操作数时,字节串传送格式为MOVSB、字串传送格式为MOVSW. 5. 本指令不影响标志位. MOVSW 字符串传送指令 MOVS 格式: MOVS OPRD1,OPRD2 MOVSB MOVSW 功能: OPRD1<--OPRD2. 说明: 1. 其中OPRD2为源串符号地址,OPRD1为目的串符号地址. 2. 字节串操作: 若DF=0,则作加, 若DF=1,则作减. 3. 对字串操作时: 若DF=0,则作加,若DF=1,则作减,. 4. 在指令中不出现操作数时,字节串传送格式为MOVSB、字串传送格式为MOVSW. 5. 本指令不影响标志位. MUL 无符号数乘法指令 MUL(MULtiply) 格式: MUL OPRD 功能: 乘法操作. 说明: 1. OPRD为通用寄存器或存储器操作数. 2. OPRD为源操作数,即作乘数.目的操作数是隐含的,即被乘数总是指定为累加器AX或AL的内容. 3. 16位乘法时,AX中为被乘数.8位乘法时,AL为被乘数.当16位乘法时,32位的乘积存于DX及AX中;8位乘法的16位乘积存于AX中.

4. 操作过程: 字节相乘:(AX)<--(AL)*OPRD,当结果的高位字节(AH)不等于0时,则CF=1、OF=1. NEG 取补指令 NEG(NEGate) 格式: NEG OPRD 功能: 对操作数OPRD进行取补操作,然后将结果送回OPRD.取补操作也叫作求说明: 1. OPRD为任意通用寄存器或存储器操作数. 2. 示例: (AL)=44H,取补3. 本指令影响标志位CF、OF、SF、PF、ZF及AF. NOP 空操作指令 NOP 格式: NOP 功能: 本指令不产生任何结果,仅消耗几个时钟周期的时间,接着执行后续指令,常用于程序的延时等. NOT 逻辑非运算指令 NOT 格式: NOT OPRD 功能: 完成对操作数按位求反运算(即0变1,1变0),结果关回原操作数. 说明: 1. 其中OPRD可为任一通用寄存器或存储器操作数. 2. 本指梳令可以进行字或字节‘非’运算. 3. 本指令不影响标志位. OR 逻辑或指令 OR 格式: OR OPRD1,OPRD2 功能: OR指令完成对两个操作数按位的‘或’运算,结果送至目的操作数中,本OPRD1<--OPRD1 OR OPRD2. OUT 输出指令 OUT 格式: OUT n,AL ;(n)<--(AL) 功能: 输出指令 说明: 1. OUT n,AX ;(n+1),(n)<--(AX) OUT DX,AL ;[(DX)]<--(AL) OUT DX,AX ;[(DX)+1],[(DX)]<--(AX) 2. 输入指令及输出指令对标志位都不影响. POP 堆栈操作指令 PUSH和POP 格式: PUSH OPRD POP OPRD 功能: 实现压入操作的指令是PUSH指令;实现弹出操作的指令是POP指令. 说明: 1. OPRD为16位(字)操作数,可以是寄存器或存储器操作数. 2. POP指令的操作过程是: POP OPRD:OPRD<--((SP)),(SP)<--(SP)+2 它与压入操作相反,是先弹出栈顶的数顶,然后再修改指针SP的内容. 3. 示例: POP AX POP DS POP DATA1 POP ALFA[BX][DI]

补操作,就是求一个数的相反数的补码. 后,(AL)=0BCH(-44H). 说明: 本指令不影响标志位. 说明: 1. 其中OPRD1,OPRD2含义与AND指令相同,对标志位的影响也与AND指令相同. 指令可以进行字节或字的‘或’运算. 2. 两数相或,有一个数为真则值为真.

4. PUSH和POP指令对状态标志位没有影响. POPF 标志传送指令 POPF 格式: POPF 功能: 本指令的功能与PUSHF相反,在子程序调用和中断服务程序中,往往用PUSHF指令保护FLAG的内容,用POPF指令将保护的FLAG内容恢复. PUSH 堆栈操作指令 PUSH和POP 格式: PUSH OPRD POP OPRD 功能: 实现压入操作的指令是PUSH指令;实现弹出操作的指令是POP指令. 说明: 1. OPRD为16位(字)操作数,可以是寄存器或存储器操作数. 2. PUSH的操作过程是: (SP)<--(SP)-2,((sp))<--OPRD 即先修改堆栈指针SP(压入时为自动减2),然后,将指定的操作数送入新的栈顶位置. 此处的((SP))<--OPRD,也可以理解为: [(SS)*16+(SP)]<--OPRD 或 [SS:SP]<--OPRD PUSHF 标志传送指令 PUSHF 格式: PUSHF 功能: 本指令可以把标志寄存器的内容保存到堆栈中去 RCL 循环移位指令 格式: ROL OPRD1,COUNT ;不含进位标志位CF在循环中的左循环移位指令. ROR OPRD1,COUNT ;不含进位示志位CF在循环中的右循环移位指令. RCL OPRD1,COUNT ;带进位的左循环移位指令. RCR OPRD1,COUNT ;带进位的右循环移位指令. RCR 循环移位指令 格式: ROL OPRD1,COUNT ;不含进位标志位CF在循环中的左循环移位指令. ROR OPRD1,COUNT ;不含进位示志位CF在循环中的右循环移位指令. RCL OPRD1,COUNT ;带进位的左循环移位指令. RCR OPRD1,COUNT ;带进位的右循环移位指令. 说明: 1. 本指令组只影响标志CF、OF.OF由移入CF的内容决定,OF取决于移位一次后符号位是否改变,如改变,则OF=1. 2. 由于是循环移位,所以对字节移位8次; 对字移位16次,就可恢复为原操作数.由于带CF的循环移位,可以将CF的内容移入, 所以可以利用它实现多字节的循环. 说明: 1. 本指令组只影响标志CF、OF.OF由移入CF的内容决定,OF取决于移位一次后符号位是否改变,如改变,则OF=1. 2. 由于是循环移位,所以对字节移位8次; 对字移位16次,就可恢复为原操作数.由于带CF的循环移位,可以将CF的内容移入,所以可以利用它实现多字节的循环. 注意: 以上程序中的指令SHR AL,CL如改为SAR AL,CL,虽然最高4位可移入低4位,但最高位不为0,故应加入一条

说明: 如果对堆栈中的原FLAG内容进行修改,如对TF等标志位进行修改,然后再弹回标志位寄存器FLAG.这是通过指令修改TF标志的唯一方法.

汇编语言指令大全

格式:LAHF功能:取FLAG标志寄存器低8位至AH寄存器.(AH)<--(FLAG)7~0LDS从存储器取出32位地址的指令LDS格式:LDSOPRD1,OPRD2容,AH只是复制了原FLAG的低8位内容.说明:OPRD1为任意一个16位的寄存器.示例:LDSSI,ABCDLDSBX,FAST[SI]LDSDI,[BX]
推荐度:
点击下载文档文档为doc格式
3utep3fuga52amw9lhr375cln2z0an008fo
领取福利

微信扫码领取福利

微信扫码分享