assembly - 操作码的十六进制值

标签 assembly x86 hex dos

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

汇编代码:

mov ah, 2 
mov dx, 'a' 
int 21h 

十六进制代码
B4 02 B2 61 CD 21

我想了解它是如何生成的!就像,我不知道我是否正确,但我意识到:
B4 = mov ah 
02 = 2 
B2 = mov dx 
61 = 'a' 
CD = int 
21h = 21
02 , 6121我明白什么变成了但B4 , B2CD ?

最佳答案

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

如你看到的:

  • CDint 的操作码
  • B0+regmov reg, imm8 的操作码,其中 reg是目标寄存器,正如您从 this table 中看到的那样, ah = 100bdx = 010b
  • 关于assembly - 操作码的十六进制值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22886534/

    相关文章:

    c - C 中的短整型、十六进制和二进制基数

    assembly - 在 Mac OS X 上编辑程序集

    assembly - 为什么在这段汇编代码中调用 'pop'会导致段错误?

    assembly , Hello World 问题

    assembly - 在程序集中将值设置为 null

    XML After Effect File (*.aepx) -> 了解二进制数格式以编辑 xml 文件

    assembly - 这部分MIPS代码中使用ori有什么用?

    linux - 使用 x87 float 调用 printf

    c - CALL 指令如何解析为十六进制?

    c# - 在 C# 中从十六进制到字节的最轻量级转换?