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