Assembly 如何将此汇编代码转换为十六进制形式?

Assembly 如何将此汇编代码转换为十六进制形式?,assembly,x86,hex,machine-code,Assembly,X86,Hex,Machine Code,什么是, MOV AX, 4512H MOV BX, 23AFH JMP NEXT ADD BH,AH NEXT: NOP 在十六进制中,我怎样才能到达那里?您的六行代码看起来像是汇编语言中的源代码。如果您将文本写入一个名为例如“turtle.asm”的文本文件,它可以由一个名为“assembler”的程序转换为十六进制代码 此命令将源代码“turtle.asm”转换为文件“turtle.bin”中的11字节二进制代码。 它们

什么是,

        MOV AX, 4512H
        MOV BX, 23AFH
        JMP NEXT
        ADD BH,AH
NEXT:   NOP

在十六进制中,我怎样才能到达那里?

您的六行代码看起来像是汇编语言中的源代码。如果您将文本写入一个名为例如
“turtle.asm”
的文本文件,它可以由一个名为“assembler”的程序转换为十六进制代码

此命令将源代码
“turtle.asm”
转换为文件
“turtle.bin”
中的11字节二进制代码。 它们的十六进制值可以在列表文件
“turtle.asm.lst”
中看到:

如果将文件扩展名从
“.bin”
更改为
“.com”
,DOS或DosBox或32位Windows将尝试执行您的指令。 在这种情况下,您的程序失败,因为您没有正确终止它。将最后一行从
NEXT:NOP
NEXT:RET
它将优雅地运行(尽管它没有做任何有用的事情), 您可以在Borland TurboDebugger中看到:

R:\td turtle.com

一个合适的链接(简短的回答,编译、链接然后反汇编可执行文件,挑选操作码并将它们排列在字符数组中)这些指令的机器码取决于它们是需要在16位模式下执行,还是在32/64位模式下执行。后者在16位指令上需要
66
操作数大小前缀。使用汇编程序,例如
nasm-listing.txt foo.asm
这似乎有点帮助,因为我自己无法运行代码而不会出错。但是对我来说,找到十六进制部分似乎有点困难,你能把它排成一行吗?例)A7 78 B8D4@crazyturtle1234您有关于指令集的文档是的,您需要的所有内容以及更多内容都已在本答案中显示。您是否无法查找mov或jmp的操作码,并查看其如何映射到此处显示的内容?
R:\>type turtle.asm.lst
|                           turtle: PROGRAM
|[BIN]                     ::::Section changed.
|0000:B81245               |        MOV AX, 4512H
|0003:BBAF23               |        MOV BX, 23AFH
|0006:EB02                 |        JMP NEXT
|0008:00E7                 |        ADD BH,AH
|000A:90                   |NEXT:   NOP
|                           ENDPROGRAM turtle:
|        **** ListMap "turtle.bin",groups=1,segments=1,entry=,stack=[BIN]:0000FFFEh
|        [BIN],VA=00000000h,size=0000000Bh=11,group [BIN]
|          [BIN],VA=00000000h,size=0000000Bh=11,width=16,align=0010h,purpose=CODE+DATA+BSS+STACK
|        **** ListGlobals "turtle.bin",Global=0,Public=0,Extern=0,eXport=0,Import=0
R:\td turtle.com