Assembly 寄存器的十六进制值?x86

Assembly 寄存器的十六进制值?x86,assembly,x86,Assembly,X86,“MOV DL”=B2 但是AL的十六进制字节值是多少?这些在哪里列出 我刚刚意识到它一定是另一个操作码!有人能给我指出正确的方向吗?阅读“英特尔64和IA-32体系结构” 软件开发人员手册 第2A卷: 指令集参考,A-M“您可以在表3-1中的一些不错的x86表中找到所有操作码。与+rb、+rw和+rd术语相关的寄存器编码,第3-3页: MOV DL,AL 回答您的问题(“啊哈,太好了。我很难找到将寄存器移动到寄存器的指令列表。您能解释一下吗?”): 首先,这里有一些鱼:(用于8位regs)

“MOV DL”=B2

但是AL的十六进制字节值是多少?这些在哪里列出

我刚刚意识到它一定是另一个操作码!有人能给我指出正确的方向吗?

阅读“英特尔64和IA-32体系结构” 软件开发人员手册 第2A卷:
指令集参考,A-M“

您可以在表3-1中的一些不错的x86表中找到所有操作码。与+rb、+rw和+rd术语相关的寄存器编码,第3-3页:

MOV DL,AL

回答您的问题(“啊哈,太好了。我很难找到将寄存器移动到寄存器的指令列表。您能解释一下吗?”):

首先,这里有一些鱼:(用于8位regs)


以下是开始钓鱼的方法:

在《英特尔指令集手册》第3-402页中,查找MOV指令。您将看到一个表格,其中列出了MOV指令的各种风格,首先是:

8a c0        mov     al, al
8a c1        mov     al, cl
8a c2        mov     al, dl
8a c3        mov     al, bl
8a c8        mov     cl, al
8a c9        mov     cl, cl
8a ca        mov     cl, dl
8a cb        mov     cl, bl
8a d0        mov     dl, al
8a d1        mov     dl, cl
8a d2        mov     dl, dl
8a d3        mov     dl, bl
8a d8        mov     bl, al
8a d9        mov     bl, cl
8a da        mov     bl, dl
8a db        mov     bl, bl
注意上面的鱼是如何使用8A操作码的。正如您可能猜到的,r8是一个8位寄存器,而r/m8可以是一个8位寄存器,也可以是内存中的一个字节。还要注意16位和32位寄存器和值(r16、r32)的MOV操作码是如何不同的。第3-2页到第3-5页解释了可以在MOV指令上指定的各种类型的参数

但是,您可能会说,这并没有告诉您如何在指令中构造以下字节。为此,请参阅第2.1节-一般说明格式,从第2-1页开始。x86指令最多可由6个字节序列组成:前缀、操作码、ModR/M、SIB、位移和立即数。我们的寄存器移动指令很简单,只包含一个操作码(8A)和一个ModR/M字节


第2.4节和第2-5页至第2-6页的所有表格中记录了ModR/M字节的分解。您将发现ModR/M字节可以对源寄存器和目标寄存器进行编码。例如,从AL移动到DL,你将使用D0MODR/M值,给出8A D0指令。

这样,你会问一些类似的问题:“你是如何使用指令<代码> MOV DL,AL代码/代码>并计算出对应于“?”的机器代码字节的??道格,我可以翻译一些指令,但是考虑MOV。寄存器、即时值寄存器、寄存器寄存器、存储器地址等的每种不同组合都必须有不同的代码(参数)。这可能有助于您了解ModR/M字节的详细信息,手册中的2.1.5,下表显示了所有的组合。重定向到3550页的PDF在SO中并不是一个很好的答案terms@Blauhirn哦,你一定是新来的。2010年的时候还不错。
8a c0        mov     al, al
8a c1        mov     al, cl
8a c2        mov     al, dl
8a c3        mov     al, bl
8a c8        mov     cl, al
8a c9        mov     cl, cl
8a ca        mov     cl, dl
8a cb        mov     cl, bl
8a d0        mov     dl, al
8a d1        mov     dl, cl
8a d2        mov     dl, dl
8a d3        mov     dl, bl
8a d8        mov     bl, al
8a d9        mov     bl, cl
8a da        mov     bl, dl
8a db        mov     bl, bl
88 /r MOV r/m8,r8 Move r8 to r/m8
89 /r MOV r/m16,r16 Move r16 to r/m16
89 /r MOV r/m32,r32 Move r32 to r/m32
8A /r MOV r8,r/m8 Move r/m8 to r8
8B /r MOV r16,r/m16 Move r/m16 to r16
8B /r MOV r32,r/m32 Move r/m32 to r32