汇编语⾔常⽤指令汇总(持续更新)
汇编语⾔常⽤指令汇总(持续更新)
通⽤数据传送指令
MOV(Move) 传送指令
MOV指令是数据传送指令,也是最基本的编程指令,⽤于将⼀个数据从源地址传送到⽬标地址(寄存器间的数据传送本质上也是⼀样的)。其特点是不破坏源地址单元的内容。
例如:
MOV AX,2000H;将16位数据2000H传送到AX寄存器
MOV AL,20H;将8位数据20H传送到AL寄存器
MOV AX,BX;将BX寄存器的16位数据传送到AX寄存器
MOV AL,[2000H];将2000H单元的内容传送到AL寄存器
需要注意的是:
(1)两个存储单元之间不能直接传送数据,即:MOV指令只允许⼀个操作数在存储器中。MOV [SI],[2000H];这是错误的
(2)MOV指令中⽴即数不能直接传送给段寄存器(CS、DS、SS、ES)和IP;段寄存器之间不能直接传送。MOV IP,2000 H ;这是错误的
(3)CS和IP不能作为⽬的操作数。MOV CS,AX ;这是错误的
(4)MOV指令中⽴即数不能作⽬标操作数。MOV 2000H,[SI] ;这是错误的
PUSH(Push onto the stack)进栈
POP(Pop from the stack)出栈
push寄存器:将⼀个寄存器中的数据⼊栈
pop寄存器:出栈⽤⼀个寄存器接收数据
XCHG(Exchange) 交换
是寄存器和寄存器之间,寄存器和内存变量之间内容的交换指令,两个操作数的数据类型要相同,可
以是⼀个字节,也可以是⼀个字,也可以是双字。
累加器专⽤指令
IN(Input) 输⼊
OUT(Output)输出
CPU对外设的操作通过专门的端⼝读写指令来完成;
读端⼝⽤IN指令,写端⼝⽤OUT指令。
例⼦如下:
IN AL,21H;表⽰从21H端⼝读取⼀字节数据到AL
IN AX,21H;表⽰从端⼝地址21H读取1字节数据到AL,从端⼝地址22H读取1字节到AH
MOV DX,379H
IN AL,DX ;从端⼝379H读取1字节到AL
OUT 21H,AL;将AL的值写⼊21H端⼝
OUT 21H,AX;将AX的值写⼊端⼝地址21H开始的连续两个字节。(port[21H]=AL,port[22h]=AH)
MOV DX,378H
OUT DX,AX ;将AH和AL分别写⼊端⼝379H和378H
XLAT(Translate) 换码
在汇编中XLAT指令的作⽤就是在bx保存array的⾸地址,AL保存array的位置的基础上,执⾏XLAT指令,将返回值送⼊AL指令中.
指令如下指令后AL=5
lea bx,array
mov al,1
xlat ;返回值AL=array[AL]
有效地址送寄存器指令
LEA(Load effective address)有效地址送寄存器
LDS(Load DS with Pointer)指针送寄存器和DS
LES(Load ES with Pointer)指针送寄存器和ES
mov 和 lea 的区别汇编语言结束指令
mov ecx,[eax+0x30]表⽰先运算eax+0x30得到⼀个结果,以这个结果为地址⼀个ecx长度的内存数赋给ecx
lea ecx,[eax+0x30]表⽰先运算eax+0x30得到⼀个结果,把这个结果(mov时地址)赋给ecx
标志寄存器传送指令
LAHF(Load AH with flags) 标志送AH
SAHF(Store AH with flags)AH送标志寄存器
PUSHF(Push the flags) 标志进栈
POPF(Pop the flags)标志出栈
加法指令
ADD 加法
ADC(add with carry)带进位加法
INC(Increment) 加1
减法指令
SUB(Subtract)减法
SBB(Subtract with borrow)带借位减法
DEC(Decrement)减1
NEG(Negate)求补
CMP(Compare)⽐较
乘法指令
MUL(Unsigned Multiple) ⽆符号乘法
IMUL(Signed Multiple)带符号乘法
除法指令
DIV(Unsigned Divide)⽆符号除法
IDIV(Singed Divide)带符号除法
CBW(Convert byte to word)字节转换为字
CWD(Convert word to double word)字转换为双字
逻辑指令
AND 逻辑与
OR 逻辑或
NOT 逻辑⾮
XOR 异或
TEST 测试
TEST AX,BX 与 AND AX,BX 命令有相同效果,只是Test指令不改变AX和BX的内容,⽽AND指令会把结果保存到AX中。
Test命令将两个操作数进⾏逻辑与运算,并根据运算结果设置相关的标志位。但是,Test命令的两个操作数不会被改变。运算结果在设置过相关标记位后会被丢弃。
移位指令
SHL(Shift logical left)逻辑左移
SAL(Shift arithmetic left)算术左移
SHR(Shift logical right) 逻辑右移
SAR(Shift arithmetic right)算术右移
ROL(Rotate left) 循环左移
ROR(Rotate right)循环右移
RCL(Rotate left through carry)带进位循环左移RCR(Rotate right through carry)带进位循环右移
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论