x86是一台八进制机器

2022-02-21 06:30:30

操作码以八进制编码。一个字节有3个八进制数字,从000到

八进制数字(x、m、r、s)的含义及其与

00 DS:[BX+SI]10 Dc DS:[BX+SI+Dc]20 Dw DS:[BX+SI+Dw]30 AL/AX

01 DS:[BX+DI]11 Dc DS:[BX+BI+Dc]21 Dw DS:[BX+DI+Dw]31 CL/CX

02 SS:[BX+SI]12 Dc SS:[BP+SI+Dc]22 Dw SS:[BP+SI+Dw]32 DL/DX

03分队:[BX+DI]13分队:[BP+DI+Dc]23分队:[BP+DI+Dw]33分队/BX

06 Dw DS:[Dw]16 Dc SS:[BP+Dc]26 Dw SS:[BP+Dw]36 DH/SI

x为0、1或2的操作数都是指针。如果指令是一个单词

在x=1或2的模式下,需要跟随位移字节(Dc或Dw)

例3:举例说明为什么';It’最好用八进制来思考,看看就知道了

几乎不可能背诵8086二进制代码,而事实上我知道其中的大部分

从160到177,十六进制为7x,其中x是十六进制数字编码

在表1中,注意模式0m、1m和2m上编码的地址是相同的

从他们那里回来,如上所示。事实上,这是如此之多,以至于

其中xm=15,r=3,Disp=-3。这四种组合是:

1 4 si2 375[EDX+SI-3](r=2时Rd=EDX)

1 4 302 375[EDX+8*EAX-3](SI=8*EAX表示SI=30)

Rw、Ew、Dw、Cw、En甚至Af和Ef。后两个对象指的是

字大小为16位时为4字节的远代码地址,以及

*和,或,异或,和测试所有设置CF和OF为0,不可预测地改变AF。

旗帜。CMP用于执行关系运算符(<;>;>;==!=),以及

*RxR:OF=(L的高位!=L的下一高位)移位前

*AAA、AAS、AAD和AAM用于调整四种方法的结果

*在下面的例子中,A0代表AL的下4位,A1代表上4位

*AAM和AAD的二进制代码分别由一个操作码和

如果(A0>;9)AF=1,则为DAA;如果(AF)AL+=(0x10-10);

DAS如果(A0>;9)AF=1;如果(AF)AL-=(0x10-10);

如果(A0>;9)AF=1,则为AAA;CF=AF;如果(CF)A0+=(0x10-10),则为AH++;

如果(A0>;9)AF=1,则为AAS;CF=AF;如果(CF)A0-=(0x10-10),那么,啊--;

*ACC在CMPXCHG中是AL、AX或EAX,具体取决于操作数大小。

*WAIT用于';486强制从

BSF L,E ZF=!E如果(ZF)L=E中的第一个1位位置;否则L=???

BSR L,E ZF=!E如果(ZF)L=E中的最后1位位置;否则L=???

CMPXCHG L,E ZF=(ACC==L);如果(ZF)L=E;否则ACC=L;

17克NLE SF==OF&&!采埃孚x>;y x>;0(签名)

16 LE NG SF!=关于| | ZF x<;=y x<;=0(签名)

*POP SS抑制中断,以允许[E]SP在

*点(ESI、EDI)在之后会向上(DF=0)或向下(DF=1)

因此,这些是唯一的标志

亿美元

S 1 1。。。1 0 ... 1.信号NaN(不是数字)

这都是IEEE标准格式。安静的楠';由FP单元设置为