我对学习汇编(x86)语言感兴趣,并制作了我的第一个hello-world程序。我在windows-xp中使用了调试器,我想知道是否有人可以解释每行的内容。
1) jmp 115
2) db 'Hello world!$'
3) -a 115
4) mov ah, 09
5) mov dx, 102
6) int 21
7) int 20
我附上了每个步骤的大纲,以便在程序集中创建可执行文件,
答案 0 :(得分:4)
我建议您阅读Intel's Software Developer's Manual(特别是第2卷)和/或某些x86汇编教程(例如The Art of Assembly。
代码细分:
1) jmp 115
跳转到mov ah,09
指令,这样CPU就不会尝试执行'Hello world'字符串,就好像它是代码一样(CPU无法区分代码和数据)。 / p>
2) db 'Hello world!$'
声明一个字符串。美元符号被某些DOS中断函数用作字符串终止符。
3) -a 115
告诉debug
汇编从地址115开始的后续代码。
4) mov ah, 09
将值9放入寄存器ah
。
5) mov dx, 102
将“Hello world”字符串的地址放在寄存器dx
6) int 21
执行中断21h /功能9(write string)。函数编号预期在寄存器ah
中,字符串偏移在寄存器dx
中,由前两条指令处理。
7) int 20
执行中断20h(terminate program)