我是汇编语言的新手,我正在尝试使用NASM并遵循assembly tutorial of tutorialspoint在linux上学习intel 32位汇编语言。我对此示例有疑问:
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'....
的简写,但是
答案 0 :(得分:1)
回答第二个问题。不,使用“ int 0x80”指令只能进行一次系统调用。然后将控制权转移到sys_write,并将所有这些字符写入stdout。此代码中没有jmp指令或循环,从中您可以看到代码按顺序执行,没有跳转(不包括仅被调用一次的syscall本身)。