[关闭]
@2017libin 2019-06-28T05:57:18.000000Z 字数 3167 阅读 104

《汇编》常见指令

汇编

一. 数据传送类指令

1. 通用数据传送指令:mov

2. 交换指令:xchg

3. 换码指令:xlat

4. 堆栈操作指令:push,pop

5. 标志操作指令:clc,stc,cmc,cld,std,cli

clc ;复位进位标志,0 -> cf
stc ;置位进位标志,1 -> cf
cmc ;求反进位标志,-cf -> cf
cld ;复位方向标志,0 -> df,串操作后地址增大
std ;置位方向标志,1 -> df,串操作后地址减少
cli ;复位中断标志,0 -> if,禁止可屏蔽中断
sti ;置位中断标志,1 ->if,允许可屏蔽中断

6. 地址传送指令:lea,offset

lea r16,mem ;mem的有效地址-> r16
mov di, offset warv ;warv的有效地址 -> di ;这里的有效地址相当于偏移地址

二. 算数运算类指令

1. 双操作数指令

2. 双操作加法指令:add

add dest,src ;dest+src -> dest
adc dest,src ;dest+src+cf -> dest

5. 双操作减法指令:sub

sub dest,src ;dest-src -> dest
sbb dest,src ;dest-src-cf -> dest
cmp dest,src ;dest-src,但是结果不送回dest,影响标志位

6. 自增自减指令:inc,dec

7. 求补指令:neg

8. 符号扩展指令:cbw,cwd

9. 乘法指令

6. 除法指令:div,idiv

三. 位操作类指令

1. 逻辑运算指令:and,or,xor,test,not,and

2. 移位操作:shl,shr,sal,sar

3. 循环移位指令:rol,ror,rcl,rcr

四. 控制转移类指令

1. 无条件转移指令

jmp能够根据能够根据标号的位置自动生成短转移,近转移,远转移。当无法明确或者强制更改时,必须用ptr来明确。

2. 条件转移

jcc只能实现段内-128~127个单元范围的转移。其中cc只是表示利用标志来判断的条件。,共有16种。

  1. ;无符号数比较大小Below(低),Above(高)
  2. JB ;低于Below
  3. JNB ;不低于No Below
  4. JBE ;低于等于
  5. ;有符号数比较大小Greater(大),Less(小)
  6. JL ;小于Less
  7. JNL ;不小于No Less
  8. JNLE ;不小于等于(大于)
  1. JZ ;等于0
  2. JE ;相等,相当于等于零
  3. JO ;溢出
  4. JC ;有进位跳转

五. 中断指令

功能号 功能 入口参数 出口参数
AH=01H 从标准设备输入一个字符 AL=输入字符的ASCLL
AH=02H 从标准设备输出一个字符 DL=欲显示字符的ASCLL
AH=09H 从标准设备输出一个字符串 DS:DX=欲显示字符串($结尾)
AH=0AH 从标准设备输入一个字符串 DS:DX=输入字符串将在缓冲区中的首地址
AH=0BH 判断标准输入设备有无输入 AL=0,没有收入;AL=0FFH,有收入
AH=25H 中断服务子程序入口地址设置 AL=中断向量号,DS:DX=中断服务程序入口地址
AH=35H 获取中断服务程序入口地址 AL=中断向量号 ES:BX=中断服务子程序入口地址
添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注