Я могу установить nasm и выполнить коды .asm Windows Subsystem Linux(WSL) для терминала Ubuntu на окнах?

Я избегал к двойной загрузке своего нового Ноутбука для использования Ubuntu все же, и у меня есть некоторые ассемблерные коды, которые будут выполнены в nasm. Я недавно наткнулся на этот терминал Ubuntu для Windows, таким образом, мой вопрос: я могу установить nasm пакет и выполнить коды .asm в этом терминале?

Править: Код .asm компилируется (я написал "Привет Мировой" код как тест) со следующими шагами:

  1. nasm -f elf64 filename.asm
  2. ld -o filename filename.o
  3. ./filename

На терминале нет никакого вывода, поскольку он должен отобразиться Hello World.

Вот код для ссылки:

section .data

msg db "Hello World"
msglen equ $-msg

section .text
global _start
_start:

 mov rax,1
 mov rdi,1
 mov rsi,msg
 mov rdx,msglen

mov rax,60
mov rdx,0
syscall
0
задан 10 December 2019 в 18:04

1 ответ

Вы пропустили syscall в Вашем коде!

syscall в последней строке используется для выхода из программы. Однако для отображения строки необходимо сделать другой syscall после заполнения rax, rdi, rsi, и rdx регистры.

правильный код дан ниже:

section .data

msg db "Hello World", 10
msglen equ $-msg

section .text
global _start
_start:

mov rax,1
mov rdi,1
mov rsi,msg
mov rdx,msglen
syscall

mov rax,60
mov rdx,0
syscall

я также добавил "новую строку" (десятичный код 10 ASCII) в конец Вашей строки, так, чтобы новая строка была отображена после Hello World строка.

0
ответ дан 21 December 2019 в 23:37

Другие вопросы по тегам:

Похожие вопросы: