03通用数据处理指令

一、数据传送类指令

1. mov

把一个字节、字或双字的操作数
从源位置传送至目的位置

8位(字节)数据,byte类型
mov al,200
16位(字)数据,word类型
mov ax,[ebx]
32位(双字)数据,dword类型
mov eax,dvar

立即数传送

mov reg/mem,imm

寄存器reg为目的操作数
mov al,200
;8位立即数i8
mov ax,200
;16位立即数i16
mov eax,200
;32位立即数i32

存储器mem为目的操作数
mov bvar,byte ptr 200
;8位立即数i8
mov [ebx],word ptr 200
;16位立即数i16
mov [esi+8],dword ptr 200
;32位立即数i32

寄存器传送

mov reg/mem/seg,reg

寄存器reg为目的操作数
mov al,ah
;8位通用寄存器r8
mov ax,bx
;16位通用寄存器r16
mov eax,edx
;32位通用寄存器r32

存储器mem为目的操作数
mov bvar,cl
;8位通用寄存器r8
mov [ebx],cx
;16位通用寄存器r16
mov [esi+8],edi
;32位通用寄存器r32

段寄存器seg为目的操作数
mov ds,bx

存储器传送

mov reg/seg,mem

寄存器reg为目的操作数
mov dl,bvar
;8位储存器m8
mov dx,[ebx]
;16位存储器m16
mov edx,dvar[edi]
;32位存储器m32

段寄存器seg为目的操作数
mov ds,wvar
;16位存储器m16
mov es,[ebx]
;16位存储器m16
mov ss,[ebp+8] ;16位存储器m16

段寄存器传送

mov r16/m16,seg

寄存器r16为目的操作数
mov ax,ds
mov dx,es
mov si,fs
mov di,gs

存储器m16为目的操作数
mov wvar,ds
mov [ebx],ss
mov [esi-8],cs
mov [ebp+8],cs

2.交换指令 XCHG

将源操作数和目的操作数内容交换
XCHG reg,reg/mem
(XCHG reg/mem,reg)
►通用寄存器与通用寄存器之间
►通用寄存器或存储器之间

32位数据交换
xchg esi,edi
xchg esi,[edi]
16位数据交换
xchg si,di
xchg si,[edi]
8位数据交换
xchg bl,bh
xchg al,bvar

空操作指令NOP

空操作指令是一条不做实质操作的指令
NOP ;= XCHG EAX, EAX
;一个字节的指令代码;90H 
处理器执行需要化费时间,占用一个字节存储空间
所以,具有实际意义:
►实现短时间延时
►临时占用代码空间

3.地址传送指令LEA

LEA指令在指令执行时计算出偏移地址
►OFFSET操作符在汇编阶段取得变量的偏移地址
OFFSET无需在执行时计算、指令执行速度更快
►LEA指令能获取汇编阶段无法确定的偏移地址

lea edi, var
mov edi, offset var

二、算术运算类指令

见专栏

三、位操作类指令

1.逻辑运算指令

逻辑与指令AND

逻辑与(逻辑乘)运算规则
►两位都是逻辑1,则结果是1;否则,结果是0 
 逻辑与指令AND
►按位进行逻辑与,结果返回目的操作数
AND reg,imm/reg/mem

逻辑或指令OR

逻辑或(逻辑加)运算规则
►两位都是逻辑0,则结果是0;否则,结果是1  逻辑或指令OR
►按位进行逻辑或,结果返回目的操作数
OR reg,imm/reg/mem

逻辑非指令NOT

逻辑非(逻辑反)运算规则:
►原来为0的位变成1,原来为1的位变成0 
逻辑非指令NOT:
 ►按位进行逻辑非,结果返回操作数
NOT reg/mem
;reg/mem←~reg/mem
 NOT指令不影响状态标志位

逻辑异或指令XOR

逻辑异或(逻辑半加)运算规则:
►两位不同(相异),则结果是1;否则,结果是0  逻辑异或指令XOR:
 ►按位进行逻辑异或,结果返回目的操作数
XOR reg,imm/reg/mem

逻辑运算的屏蔽作用:

AND复位某些位(同0与),不影响其他(同1与)
and bl,11110110b ;BL中D0和D3清0,其余位不变
 OR置位某些位(同1或),不影响其他(同0或)
or bl,00001001b ;BL中D0和D3置1,其余位不变
 XOR求反某些位(同1异或),不影响其他(同0异或)
xor bl,00001001b ;BL中D0和D3求反,其余位不变

2.移位指令

逻辑左移指令 SHL
逻辑右移指令 SHR
算术左移指令 SAL
算术右移指令 SAR

S: Shift
L: Left
R: Right
A: Arithmetic
左移位指令SHL/SAL

SHL reg/mem,i8/CL
SAL reg/mem,i8/CL
;各位同时左移,最低位补0,最高位进入CF

;执行前AL=11110101B
SHL AL,1
;执行后AL=11101010B,CF=1
逻辑右移指令SHR

SHR reg/mem,i8/CL
;各位同时右移,最高位补0,最低位进入CF
;执行前AL=11110101B
SHR AL,1
;执行后AL=01111010B,CF=1
算术右移指令SAR

SAR reg/mem,i8/CL
;各位同时右移,最高位不变,最低位进入CF
CF
;执行前AL=11110101B
SAR AL,1
;执行后AL=11111010B,CF=1

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

全糖去冰不加料

打赏一块钱💰也是钱

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值