8086指令字典

摘自8086 指令英语,有利于理解记忆

一、通用寄存器:

AX累加器(Accumulator)

BX 基地址寄存器(Base Register)

CX 计数寄存器(Count Register)

DX数据寄存器(Data Register)

二、段寄存器:

代码段寄存器CS–code segment

数据段寄存器DS–data segment

堆栈段寄存器SS–stack segment

附加段寄存器ES–extra segment

三、特殊功能寄存器:

指令指针寄存器IP–instruction pointer

堆栈指针SP–stack pointer

基址指针BP–base pointer

源变址寄存器SI–source index

目标变址寄存器DI–destination index

标志寄存器FR–flag register(或者叫程序状态字PSW–program status word)

四、PSW常用的标志:

标志 值为1时的标记 值为0时的标记

OF(overflow flag) OV(overflow) NV(not overflow)

ZF(zero flag) ZR(zero) NZ(not zero)

PF(parity flag) PE(parity even) PO(parity odd)

CF(carry flag) CY(carried) NC(not carried)

DF(direction flag) DN(down) UP(up)

SF(sign flag) NG(negative) PL(plus)

TF(trap flag)

IF(interrupt flag)

AF(auxiliary flag)

A、运算结果标志位

a、进位标志CF(Carry Flag)

进位标志CF主要用来反映运算是否产生进位或借位。如果运算结果的最高位产生了一个进位或借位,那么,其值为1,否则其值为0。

使用该标志位的情况有:多字(字节)数的加减运算,无符号数的大小比较运算,移位操作,字(字节)之间移位,专门改变CF值的指令等。

b、奇偶标志PF(Parity Flag)

奇偶标志PF用于反映运算结果中“1”的个数的奇偶性。如果“1”的个数为偶数,则PF的值为1,否则其值为0。

利用PF可进行奇偶校验检查,或产生奇偶校验位。在数据传送过程中,为了提供传送的可靠性,如果采用奇偶校验的方法,就可使用该标志位。

c、辅助进位标志AF(Auxiliary Carry Flag)

在发生下列情况时,辅助进位标志AF的值被置为1,否则其值为0:

(1)、在字操作时,发生低字节向高字节进位或借位时;

(2)、在字节操作时,发生低4位向高4位进位或借位时。

对以上6个运算结果标志位,在一般编程情况下,标志位CF、ZF、SF和OF的使用频率较高,而标志位PF和AF的使用频率较低。

d、零标志ZF(Zero Flag)

零标志ZF用来反映运算结果是否为0。如果运算结果为0,则其值为1,否则其值为0。在判断运算结果是否为0时,可使用此标志位。

e、符号标志SF(Sign Flag)

符号标志SF用来反映运算结果的符号位,它与运算结果的最高位相同。在微机系统中,有符号数采用码表示法,所以,SF也就反映运算结果的正负号。运算结果为正数时,SF的值为0,否则其值为1。

g、溢出标志OF(Overflow Flag)

溢出标志OF用于反映有符号数加减运算所得结果是否溢出。如果运算结果超过当前运算位数所能表示的范围,则称为溢出,OF的值被置为1,否则,OF的值被清为0。

“溢出”和“进位”是两个不同含义的概念,不要混淆。如果不太清楚的话,请查阅《计算机组成原理》课程中的有关章节。

B、状态控制标志位

状态控制标志位是用来控制CPU操作的,它们要通过专门的指令才能使之发生改变。

a、追踪标志TF(Trap Flag)

当追踪标志TF被置为1时,CPU进入单步执行方式,即每执行一条指令,产生一个单步中断请求。这种方式主要用于程序的调试。

指令系统中没有专门的指令来改变标志位TF的值,但程序员可用其它办法来改变其值。

b、中断允许标志IF(Interrupt-enable Flag)

中断允许标志IF是用来决定CPU是否响应CPU外部的可屏蔽中断发出的中断请求。但不管该标志为何值,CPU都必须响应CPU外部的不可屏蔽中断所发出的中断请求,以及CPU内部产生的中断请求。

具体规定如下:

(1)、当IF=1时,CPU可以响应CPU外部的可屏蔽中断发出的中断请求;

(2)、当IF=0时,CPU不响应CPU外部的可屏蔽中断发出的中断请求。

CPU的指令系统中也有专门的指令来改变标志位IF的值。

c、方向标志DF(Direction Flag)

方向标志DF用来决定在串操作指令执行时有关指针寄存器发生调整的方向。

在微机的指令系统中,还提供了专门的指令来改变标志位DF的值。

五、命令类

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

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

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值