目前我正在学习汇编语言,出于好奇,我想知道我的程序是如何使用程序集编写的,所以我加载GDB
(-tui
和layout asm
GDB
)并开始调试。
当STDIN
要求enter
输入时,我感到很惊讶,它只占用1个字符,然后即使我没有按STDIN
也停止接受其他字符。
我在终端再次尝试,它工作正常,我的程序可以毫无问题地进行多次global main
segment .bss ; hold uninitialize buffer
szinput resb 10 ; declare 10 bytes uninitialize buffer
nszinput equ $ - szinput ; equ is meaning constant
segment .text
main:
pusha
mov eax, DWORD 3 ; read syscall
mov ebx, DWORD 0 ; 0 is stdin file descriptor
mov ecx, szinput ; void *buf
mov edx, nszinput ; size_t count
int 80h ; invoke syscall
popa
ret
输入。
在这里,我从我的测试装配中提供了部分,这个问题可以通过以下装配重现:
gdb --version
请注意,此程序集适用于NASM汇编程序。
运行GNU gdb (Ubuntu 7.7.1-0ubuntu5~14.04.2) 7.7.1
,结果如下:{{1}}