1

好吧,我完全从 http://www.tutorialspoint.com/assembly_programming/assembly_tutorial.pdf的第 17 页复制了这段代码, 但是当我使用 NASM 编译它时(在 Windows 上,即使在 pdf 中他们使用 linux)使用命令nasm -f elf test.asm -o test.com,并且运行它它向我吐出这个:

16 位 MS-DOS 子系统

dir NTVDM CPU 遇到非法指令。
CS:0000 IP:0077 OP:fo 37 05 0a 02 选择“关闭”以终止应用程序。

dir我编译和运行程序的位置在哪里(nasm 目录)。我希望我不会为此而自欺欺人,但这确实让我感到困惑。先感谢您!

4

1 回答 1

3
int 0x80 ;call kernel

你在windows上——甚至是dos。您在本指令 ( 0x80) 中使用的地址是特定于 Linux/Unix 的。

http://en.wikipedia.org/wiki/INT_(x86_instruction)

于 2013-11-13T03:21:50.907 回答