Я новичок в языках ассемблера, и я пытаюсь выучить 32-битный язык программирования Intel для Linux с помощью NASM и следую учебному пособию по в tutorialspoint .У меня есть несколько вопросов по этому примеру:
section .text
global _start ;must be declared for using gcc
_start: ;tell 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
section .data
msg db 'Hello, world!',0xa ;our dear string
len equ $ - msg ;length of our dear string
Я знаю, что name db 'Zara Ali'
это сокращение от name db 'Z','a','r','a'....
, но
- Как переменная 'name' хранится врегистр ecx, если он не вписывается в него?(Я имею в виду, когда мы хотим написать Zara Ali на выходе)
- Повторяется ли системный вызов (0x80) для каждого символа?