mov,xchg,adc,sbb,neg
通用数据传送指令
MOV reg/mem, imm
Mov reg/mem/seg, reg
Mov reg/seg, mem
Mov reg/mem, seg
Mov word ptr[bx], 1234 ;传立即数时要说明word或byte
Mov [si], al ;al已经隐含说明数据长度
XCHG reg, reg/mem
XLAT(tanslate)
将bx指定的缓冲区中,al指定的位移处的一个字节取出,赋值给al,相当于al <--- [bx+al]
Push
Pop
LAHF (Load AH from Flag) 标志寄存器的低字节送入AH
SAHF(Store AH into Flag) AH送入标志寄存器的低字节
PUSHF(Push Flag) 16bit
POPF(Pop Flag) 16bit
PUSHFD 2bit
POPFD 32bit
LEA
Lea reg, mem
LDS reg,mem
Reg <---mem
DS <---mem+2
LES reg,mem
Reg <---mem
ES <---mem+2
IN AL,imm8 AL<--IO端口
IN AX,imm8
IN AL,DX
IN AX,DX
ADD
ADC 源操作数和目标操作数相加,再加上CF(1或0),结果送到目标操作数
ADC AX, BX ;AX = AX + BX + CF
例如计算12345678h+66668888h,结果用cx.dx.ax联合表示一个大数
SBB 类似ADC,只不过是减法
SBB AX, BX ;AX = AX - BX - CF
NEG 求补,用0减去操作数(或者说取反加一),结果返回给操作数,相当于C语言中的取负数。
例如0-1 = -1,补码表示为FFFF,相当于0001取反加一
如三目运算:A==0?0:-1;
Mov ax, A
Neg ax
Sbb ax,ax
Neg ax相当于0-ax,当ax=0时CF为0,否则CF为1
Sbb ax,ax相当于ax = ax-ax-CF,相当于ax = 0-CF,CF为0时结果为0,CF为1时结果为-1
综上,ax=0时CF为0,CF为0时结果为0;
ax!=0时CF为1,CF为1时结果为-1;

浙公网安备 33010602011771号