经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » 程序设计 » 汇编语言 » 查看文章
常用的汇编指令
来源:cnblogs  作者:一清  时间:2019/1/28 9:40:23  对本文有异议

数据传送类指令:

MOV reg/mem,imm
;立即数送寄存器或主存
MOV reg/mem/seg,reg
;寄存器送(段)寄存器或主存
MOV reg/seg,mem
;主存送(段)寄存器
MOV reg/mem,seg
;段寄存器送寄存器或主存
MOV al,4 ;al<-4,字节传送
MOV cx,0ffh ;cx<-00ffh,字传送
MOV si,200h ;si<-200h,字传送
MOV byte ptr [si],0ah ;byte ptr 属性修饰符,说明操作数为字节
MOV word ptr [si+2],0bh ;word ptr 说明是字操作

 

交换指令:

寄存器和寄存器可以对换数据

寄存器和储存器可以对换数据

储存器和储存器不能对换数据

XCHG reg,reg/mem
;reg<->reg/mem
MOV ax,1234h ;ax=1234h
MOV bx,5678h ;bx=5678h
XCHG ax,bx ;ax=5678h bx=1234h
XCHG ah,al ;ax=7856h

 

进栈指令:

PUSH r16/m16/seg

操作过程:

1.sp<-sp-2

2.ss:[sp]<-r16/m16/seg

 

出栈指令:

POP r16/m16/seg

操作过程:

1.r16/m16/seg<-ss:[sp]

2.sp<-sp+2

 

算术运算指令:

加法指令ADD

ADD reg,imm/reg/mem
;reg<-reg+imm/reg/mem
ADD mem,imm/reg
;mem<-mem+imm/reg

带进位加法指令ADC

ADC reg,imm/reg/mem
;reg<-reg+imm/reg/mem+CF
ADC mem,imm/reg
;mem<-mem+imm/reg+CF

增量指令INC:

INC reg/mem
;reg/mem<-reg/mem+1

减法指令SUB:

SUB reg,imm/reg/mem
;reg<-reg-imm/reg/mem
SUB mem,imm/reg
;mem<-mem-imm/reg

带借位减法指令SBB:

SBB reg,imm/reg/mem
;reg<-reg-imm/reg/mem-CF
SBB mem,imm/reg
;mem<-mem-imm/reg-CF

减量指令DEC:

DEC reg/mem
;reg/mem<-reg/mem-1

求补指令NEG:

NEG reg/mem
;reg/mem<-0-reg/mem

比较指令CMP:执行功能与SUB一样,但是结果不送回操作数

CMP reg,imm/reg/mem
;reg-imm/reg/mem
CMP mem,imm/reg
;mem-imm/reg

 

位操作类指令:

逻辑运算指令AND

AND dest,src
;dest<-dest^src

逻辑运算指令OR

OR dest,src
;dest<-destVsrc

其他逻辑运算指令:

XOR:异或指令

NOR:非运算

 

控制转移类指令:

无条件转移指令JMP

原理:程序跳转是通过修改CS和IP的值来实现的

JMP label
;程序转向label标号指定地址

 

条件转移指令JCC

JCC label
;条件满足发生转移 IP<-IP+8位位移量
;条件不满足顺序执行

 

J开头的很多其他指令:都是“比较”有关

 

循环指令LOOP:

利用CX寄存器作为计数器

LOOP lable
;cx<-cx-1
;cs!=0,循环到标号label

 

子程序指令:

比如玩游戏时候发技能就是在调用子程序

CALL指令调用子程序

子程序执行完后RET指令返回主程序

 

中断指令:

中断指令INT,中断返回指令INRT

 

处理机控制类指令:

对CPU状态进行控制的指令

NOP:不执行任何操作,但占用字节

 

伪指令:

CPU不能识别,编译器可以翻译

 

具体在逆向和病毒分析方面的使用在后边继续写

原文链接:http://www.cnblogs.com/xuyiqing/p/10328497.html

 友情链接:直通硅谷  点职佳