В целях полноты, вот как это сделать без C.
Использование прерываний DOS
AH = 02h - ЗАПИСАТЬ ХАРАКТЕР ДЛЯ СТАНДАРТНОГО ВЫХОДА
Записывает символ в DL
.Я не проверял это сам.в синтаксисе NASM что-то вроде
mov ah, 02h
int 21h
x86-32 Linux write
syscall
write
требует адрес вашей строки.Самый простой способ, который я знаю, это поместить вашего персонажа в стек.
push $0x21 # '!'
mov $4, %eax # sys_write call number
mov $1, %ebx # write to stdout (fd=1)
mov %esp, %ecx # use char on stack
mov $1, %edx # write 1 char
int $0x80
add $4, %esp # restore sp
Информация о порядке регистрации
x86-64 Linux write
syscall
Как и выше, но номер вызова теперь равен 1, syscall
вместо int $0x80
, а регистры соглашения о вызовах отличаются.
push $0x21 # '!'
mov $1, %rax # sys_write call number
mov $1, %rdi # write to stdout (fd=1)
mov %rsp, %rsi # use char on stack
mov $1, %rdx # write 1 char
syscall
add $8, %rsp # restore sp