汇编语言常用命令解析

汇编语言的常用命令

本文主要内容包含:
mov, call, jmp, int, ret, add, sub, or, xor, shl, shr, push, pop, inc, dec, cmp

命令解析
mov
  • 使用方式:mov dest, source
    示例:mov count, ebx
    解析:将ebx寄存器中的数据赋值给变量count
call
  • 使用方式:call subprogram(子程序)
    示例:call inputCheck
    解析:调用inputCheck子程序
jmp
  • 使用方式:jmp target
    示例:
		target:
        		mov ax,bx
        		...
        		jmp target

解析:程序代码区(指令所在区段)的标号必须用冒号(:)结束。代码标号用作跳转和循环指令的目标。例如,上面的 JMP 指令创建一个循环,将程序控制传递给标号 target 标识的位置:

int
  • 使用方式:int n
    示例:int n(n为中断类型码)
    解析:Interrupt,发起中断,后面跟中断类型码。它的执行过程为:
1、取中断类型码n
2、标志寄存器入栈,IF=0、TF=0
3、CS、IP入栈
4(IP)=(n∗4),(CS)=(n∗4+2)
ret
  • 使用方式:ret
    示例:ret
    解析:return,函数返回。它用 栈中的数据,修改IP(指令指针寄存器,指向代码中下一条指令的位置)的内容,从而实现近转移。相当于:pop IP
add
  • 使用方式:mov OPRD1, OPRD2
    示例:add eax, ebx
    解析:两数相加
  1. OPRD1为任一通用寄存器或存储器操作数,可以是任意一个通用寄存器,而且还可以是任意一个存储器操作数.
    OPRD2为立即数,也可以是任意一个通用寄存器操作数.立即数只能用于源操作数B.
  2. A和B均为寄存器是允许的,一个为寄存器而另一个为存储器也是允许的, 但不允许两个都是存储器操作数.
sub
  • 使用方式:sub dest source
    示例:
mov ax,2
mov bx,1
sub ax,bx

解析:减法运算,其中sub ax,bx就是ax中的值减bx中的值,等于1,然后把结果,也就是1,放入ax中。

or与xor
  • 使用方式:or op1, op2 和xor op1,op2
    示例:or eax, ebx 和 xor eax,ebx
    解析:将eax,ebx中的数做或运算和 异或运算,结果放到eax中
shl
  • 使用方式:SHL DST,n
    示例:SHL ax,1
    解析:将通用寄存器ax中的数字逻辑左移1位,将目的操作数顺序左移1位或CL寄存器中指定的位数。左移一位时,操作数的最高位移入进位标志位CF,最低位补零。
shr
  • 逻辑右移,与上面shl类似
inc
  • 使用方式:inc dest
    示例:inc ax
    解析:将ax中数据加1,相当于 add ax,1
    优点 速度比sub指令快,占用空间小。这条指令执行结果影响AF、OF、PF、SF、ZF标志位,但不影响CF进位标志位.
dec
  • 使用方式:dec dest
    示例:dec ax
    解析:将ax中数据减1,==相当于 sub ax,1 ==
    优点 速度比sub指令快,占用空间小
    这条指令执行结果影响AF、OF、PF、SF、ZF标志位,但不影响CF进位标志位.
cmp
  • 使用方式: cmp 操作对象1, 操作对象2
    示例:
 	 mov ebx, 05h
     mov eax, 08h
     cmp eax, ebx   (eax - ebx = 03h)
     此时我们的指令执行后(ZF = 0, PF = 1, SF = 0, CF = 0, OF = 0)

解析:计算 操作对象1 - 操作对象2 但不保存结果,只是根据结果修改相应的标志位。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值