NASM в SASM вылетает в окнах - PullRequest
0 голосов
/ 30 апреля 2018

Я пытаюсь запустить код NASM внутри SASM IDE. Когда я пытаюсь это сделать, Windows 10 просто дает сбой.

%include "io.inc"

section .data
msg db 'Hello, world!',10  ;string to be printed
len equ $ - msg     ;length of the string


section .text
   global main     ;must be declared for linker (ld)

main:               ;tells linker entry point
   mov  edx,len     ;message length
   mov  ecx,msg     ;message to write
   mov  ebx,1       ;file descriptor (stdout)
   mov  eax,4       ;system call number (sys_write)
   int  0x80        ;call kernel

   mov  eax,1       ;system call number (sys_exit)
   int  0x80        ;call kernel
   ret

Это просто приводит к сбою программы в Windows. (Извините за изображение) Изображение

Когда я пытаюсь запустить его ... ну ... вот что происходит.

1 Ответ

0 голосов
/ 30 апреля 2018

Практиковать NASM в Windows нехорошо, поскольку Windows не предоставляет системных вызовов Linux, таких как sys_write . Вместо этого вам нужно запустить его в Linux (для пользователей Windows 10 вы можете использовать WSL). Для Windows вы должны связать его с библиотекой C.

Вот программа NASM, которая работает с библиотекой C в Windows

[global _main]
[global _printf]
str db  "Hello world!",0xA,0   ; Don't forget the null-terminator
_main:
        push str
        call _printf
        add  esp,4
        ret
...