操作码的十六进制值

use*_*017 3 x86 assembly hex dos

我创建了一个非常简单的汇编程序,该程序在DOS中打印字母“ a”。我在十六进制编辑器中将其打开,结果是:

汇编代码:

mov ah, 2 
mov dx, 'a' 
int 21h 
Run Code Online (Sandbox Code Playgroud)

十六进制代码

B4 02 B2 61 CD 21
Run Code Online (Sandbox Code Playgroud)

我想了解它是如何产生的!就像,我不知道我是否正确,但是我意识到:

B4 = mov ah 
02 = 2 
B2 = mov dx 
61 = 'a' 
CD = int 
21h = 21
Run Code Online (Sandbox Code Playgroud)

0261而且21我明白了什么转身,但和B4B2CD

pNr*_*Nre 5

这是一个很好的参考:http : //ref.x86asm.net/coder32.html

如你看到的:

  • CD 是的操作码 int
  • B0+reg是的操作码mov reg, imm8,在哪里reg是目标寄存器,从此表中可以看到,ah = 100b以及dx = 010b


inv*_*306 2

是汇编 x86 指令:

  • B4: mov ah 意思是在寄存器中移动啊
  • B2: mov dx 表示寄存器 dx 中的移动
  • CD:int表示软件中断

我建议您阅读本指南汇编 x86 http://www.cs.virginia.edu/~evans/cs216/guides/x86.html