代码改变世界

汇编语言中的英文

2012-06-06 18:40  youxin  阅读(943)  评论(0编辑  收藏  举报
AH&AL=AX(accumulator):累加寄存器 
BH&BL=BX(base):基址寄存器 
CH&CL=CX(count):计数寄存器 
DH&DL=DX(data):数据寄存器 
SP(Stack Pointer):堆栈指针寄存器 
BP(Base Pointer):基址指针寄存器 
SI(Source Index):源变址寄存器 
DI(Destination Index):目的变址寄存器 
IP(Instruction Pointer):指令指针寄存器 
CS(Code Segment)代码段寄存器 
DS(Data Segment):数据段寄存器 
SS(Stack Segment):堆栈段寄存器 
ES(Extra Segment):附加段寄存器 
OF overflow flag 溢出标志 操作数超出机器能表示的范围表示溢出,溢出时为1. 
SF sign Flag 符号标志 记录运算结果的符号,结果负时为1. 
ZF zero flag 零标志 运算结果等于0时为1,否则为0. 
CF carry flag 进位标志 最高有效位产生进位时为1,否则为0. 
AF auxiliary carry flag 辅助进位标志 运算时,第3位向第4位产生进位时为1,否则为0. 
PF parity flag 奇偶标志 运算结果操作数位为1的个数为偶数个时为1,否则为0. 
DF direcion flag 方向标志 用于串处理.DF=1时,每次操作后使SI和DI减小.DF=0时则增大. 
IF interrupt flag 中断标志 IF=1时,允许CPU响应可屏蔽中断,否则关闭中断. 
TF trap flag 陷阱标志 用于调试单步操作.

8086CPU提供以下几大类指令。

一、数据传送指令 
比如,mov(move)、push、pop、pushf(push flags)、popf(pop flags)、xchg(exchange)等都是数据传送指令,这些指令实现寄存器和内存、寄存器和寄存器之间的单个数据传送。

二、算术运算指令 
比如,add、sub(substract)、adc(add with carry)、sbb(substract with borrow)、inc(increase)、dec(decrease)、cmp(compare)、imul(integer multiplication)、idiv(integer divide)、aaa(ASCII add with adjust)等都是算术运算指令,这些指令实现寄存器和内存中的数据运算。它们的执行结果影响标志寄存器的sf、zf、of、cf、pf、af位。

三、逻辑指令 
比如,and、or、not、xor(exclusive or)、test、shl(shift logic left)、shr(shift logic right)、sal(shift arithmetic left)、sar(shift arithmetic right)、rol(rotate left)、ror(rotate right)、rcl(rotate left through carry)、rcr(rotate right through carry)等都是逻辑指令。除了not指令外,它们的执行结果都影响标志寄存器的相关标志位。

四、转移指令 
可以修改IP,或同时修改CS和IP的指令统称为转移指令。转移指令分为一下几类。 
(1)     无条件转移指令,比如,jmp(jump); 
(2)     条件转移指令,比如,jcxz(jump if CX is zero)、je(jump if equal)、jb(jump if below)、ja(jump if above)、jnb(jump if not below)、jna(jump if not above)等; 
(3)     循环指令,比如,loop; 
(4)     过程,比如,call、ret(return)、retf(return far); 
(5)     中断,比如,int(interrupt)、iret(interrupt return)。

五、处理机控制指令 
这些指令对标志寄存器或其他处理机状态进行设置,比如,cld(clear direction)、std(set direction)、cli(clear interrupt)、sti(set interrupt)、nop(no operation)、clc(clear carry)、cmc(carry make change)、stc(set carry)、hlt(halt)、wait、esc(escape)、lock等都是处理机控制指令。

六、串处理指令 
这些指令对内存中的批量数据进行处理,比如,movsb(move string byte)、movsw(move string word)、cmps(compare string)、scas(scan string)、lods(load string)、stos(store string)等。若要使用这些指令方便地进行批量数据处理,则需要和rep(repeat)、repe(repeat if equal)、repne(repeat if not equal)等前缀指令配合使用。

 

附:8086CPU寄存器英文全称

1、通用寄存器 
AX(accumulator)、BX(base)、CX(count)、DX(data)这些寄存器可以字(16位)或字节(8位)单位形式访问; 
SP(stack pointer)、BP(base pointer)、SI(source index)、DI(destination index),这些寄存器只能以字(16位)单位形式访问。

2、专用寄存器 
IP(instruction pointer)、SP(stack pointer);; 
FLAGS又称PSW(program status word)分为: 
①     条件码 
OF(overflow)、SF(sign)、ZF(zero)、CF(carry)、AF(auxiliary)、PF(parity) 
②     控制标志 
DF(direction) 
③     系统标志位 
TF(trap)、IF(interrupt)、IOPL(I/O privilege level)

3、段寄存器 
CS(code)、DS(data)、SS(stack)、ES(extra)

汇编指令的英文全称
一、数据传送指令
1.通用数据传送指令. 
MOV----> move 
MOVSX---->extended move with sign data 
MOVZX---->extended move with zero data 
PUSH---->push 
POP---->pop 
PUSHA---->push all 
POPA---->pop all 
PUSHAD---->push all data 
POPAD---->pop all data 
BSWAP---->byte swap 
XCHG---->exchange 
CMPXCHG---->compare and change 
XADD---->exchange and add 
XLAT---->translate 
2.输入输出端口传送指令. 
IN---->input 
OUT---->output 
3.目的地址传送指令. 
LEA---->load effective address 
LDS---->load DS 
LES---->load ES 
LFS---->load FS 
LGS---->load GS 
LSS---->load SS 
4.标志传送指令. 
LAHF---->load AH from flag 
SAHF---->save AH to flag 
PUSHF---->push flag 
POPF---->pop flag 
PUSHD---->push dflag 
POPD---->pop dflag

二、算术运算指令 
ADD---->add 
ADC---->add with carry 
INC---->increase 1 
AAA---->ascii add with adjust 
DAA---->decimal add with adjust 
SUB---->substract 
SBB---->substract with borrow 
DEC---->decrease 1 
NEC---->negative 
CMP---->compare 
AAS---->ascii adjust on substract 
DAS---->decimal adjust on substract 
MUL---->multiplication 
IMUL---->integer multiplication 
AAM---->ascii adjust on multiplication 
DIV---->divide 
IDIV---->integer divide 
AAD---->ascii adjust on divide 
CBW---->change byte to word 
CWD---->change word to double word 
CWDE---->change word to double word with sign to EAX 
CDQ---->change double word to quadrate word

三、逻辑运算指令 
AND---->and 
OR---->or 
XOR---->xor   Exclusive OR
NOT---->not 
TEST---->test 
SHL---->shift left 
SAL---->arithmatic shift left算术
SHR---->shift right 
SAR---->arithmatic shift right 
ROL---->rotate left 
ROR---->rotate right 
RCL---->rotate left with carry 
RCR---->rotate right with carry

四、串指令 
MOVS---->move string 
CMPS---->compare string 
SCAS---->scan string 
LODS---->load string 
STOS---->store string 
REP---->repeat 
REPE---->repeat when equal 
REPZ---->repeat when zero flag 
REPNE---->repeat when not equal 
REPNZ---->repeat when zero flag 
REPC---->repeat when carry flag 
REPNC---->repeat when not carry flag

五、程序转移指令 
1>无条件转移指令(长转移) 
JMP---->jump 
CALL---->call 
RET---->return 
RETF---->return far 
2>条件转移指令(短转移,-128到+127的距离内) 
JAE---->jump when above or equal 
JNB---->jump when not below 
JB---->jump when below 
JNAE---->jump when not above or equal 
JBE---->jump when below or equal 
JNA---->jump when not above 
JG---->jump when greater 
JNLE---->jump when not less or equal 
JGE---->jump when greater or equal 
JNL---->jump when not less 
JL---->jump when less 
JNGE---->jump when not greater or equal 
JLE---->jump when less or equal 
JNG---->jump when not greater 
JE---->jump when equal 
JZ---->jump when has zero flag 
JNE---->jump when not equal 
JNZ---->jump when not has zero flag 
JC---->jump when has carry flag 
JNC---->jump when not has carry flag 
JNO---->jump when not has overflow flag 
JNP---->jump when not has parity flag 
JPO---->jump when parity flag is odd 
JNS---->jump when not has sign flag 
JO---->jump when has overflow flag 
JP---->jump when has parity flag 
JPE---->jump when parity flag is even 
JS---->jump when has sign flag 
3>循环控制指令(短转移) 
LOOP---->loop 
LOOPE---->loop equal 
LOOPZ---->loop zero 
LOOPNE---->loop not equal 
LOOPNZ---->loop not zero 
JCXZ---->jump when CX is zero 
JECXZ---->jump when ECX is zero 
4>中断指令 
INT---->interrupt 
INTO---->overflow interrupt 
IRET---->interrupt return 
5>处理器控制指令 
HLT---->halt 
WAIT---->wait 
ESC---->escape 
LOCK---->lock 
NOP---->no operation 
STC---->set carry 
CLC---->clear carry 
CMC---->carry make change 
STD---->set direction 
CLD---->clear direction 
STI---->set interrupt 
CLI---->clear interrupt

六、伪指令 
DW---->definw word 
PROC---->procedure 
ENDP---->end of procedure 
SEGMENT---->segment 
ASSUME---->assume 
ENDS---->end segment 
END---->end
 
 
Move)
MOVC (Move Code)
MOVX (Move External)
XCH     (Exchange)
PUSH
POP
AJMP   (Absolute Jump)
LJMP    (Long Jump)
SJMP    (Short Jump)
JMP      (Jump Indirect)
JZ         (Jump Zero)
JNZ      (Jump Not Zero)
JC         (Jump if Carry)
JNC      (Jump if Not Carry)
JB         (Jump if Bit is set)
JNB      (Jump if Not Bit)
JBC       (If Bit is set and Clear Bit)
CJNE    (Compare and Jump if Not Equal)
DJNZ    (Decrement and Jump if Not Zero)
ACALL (Absolute Call)
LCALL  (Long Call)
RET       (Return)
NOP      (No Operation)
ADD
ADDC  (Add with Carry)
SUBB   (Substract with Borrow)
MUL     (Multiply)
DIV       (Divide)
INC      (Increment)
DEC     (Decrement)
ANL     (Logical AND)
ORL     (Logical OR)
XRL     (Logical Exclusive OR)
CPL     (Complement)
CLR     (Clear)
SEBT   (Set Bit)
RL        (Rotate Left)
RR        (Rotate Right)
RLC     (Rotate Left throught the Carry flag)
RRC     (Rotate Right throught the Carry flag)
XCHD
SWAP
DA       (Decimal Adjust)

ORG    (Origin)
DB       (Define Byte)
DW      (Define Word)
EQU     (Equal)
DATA
XDATA (External Data)
BIT
END