" Hello World"在nasm中不能正常工作在emu8086

时间:2015-06-23 00:38:09

标签: assembly nasm

我正在尝试学习汇编语言,目前我对不同的汇编程序以及如何正确运行.bin文件有疑问

以下是我在emu8086中使用的代码:

org 100h
mov bx, HELLO_MSG
call print_string

mov bx, GOODBYE_MSG
call print_string

jmp $               

print_string:
    pusha
    mov ah, 0x0e
loop:
    mov al, [bx]
    cmp al, 0
    je return
    int 0x10
    inc bx
    jmp loop

return:
    popa
    ret

HELLO_MSG:
    db 'Hello, World!', 0

GOODBYE_MSG:
    db 'Goodbye!', 0

它运作得很好。

然而,当我使用nasm来组装它时(没有org 100h,并且添加

times 510 -( $ - $$ ) db 0
dw 0xaa55

最后),它只是不起作用。我已经尝试了许多其他选项让它在屏幕上写一个字符串行,但没有成功。

我开始怀疑我在运行此代码的过程中做错了什么。这些是我的步骤:

  1. 编写代码,使用Notepad ++作为文本编辑器并将其另存为* .asm
  2. 使用此命令使用cmd组装此文件:

    (例如)nasm G:\ nasm \ hello.asm -f bin -o G:\ nasm \ hello.bin

  3. 使用UltraISO制作.iso图像,我将这个hello.bin文件放入其中并将其设置为启动文件(通常可以正常工作)

  4. 之后我启动VMWare从这个.iso启动,之后它就不能正常工作了(这个特殊的代码只是在右上角显示了带有_的empry屏幕)
  5. PS。我在Win7 64bit上 提前感谢您提供的任何帮助

0 个答案:

没有答案