1 section .data
2 queryUserNumber db 'Pick a number between 1 and 100:'
3 queryUserNumberLength equ $ - queryUserNumber
4 guessText db 'Is the number? '
5 guessTextLength equ $ - guessText
6
7 newline db 10
8 newlineLength equ $ - newline
9
10 ; SYSTEM CONSTANTS
11 SYS_EXIT equ 1
12 SYS_WRITE equ 4
13 SYS_READ equ 0
14 STDOUT equ 1
15 STDIN equ 0
16
17 section .bss
18 userNumber resb 4
19 guess resb 4
20
21 section .text
22 global _start
23
24 _start:
25 mov ecx, queryUserNumber
26 mov edx, queryUserNumberLength
27 call print
28
29 mov ecx, newline
30 mov edx, newlineLength
31 call print
32
33 call quit
34
35 print:
36 mov eax, SYS_WRITE
37 mov ebx, STDOUT
38 int 0x80
39
40 read:
41 mov eax, SYS_READ
42 mov ebx, STDIN
43 int 0x80
44
45 quit:
46 mov eax, SYS_EXIT
47 xor ebx, ebx
48 int 0x80
当我在第25行上删除第一个打印块时,新的线打印却无效。我不知道问题是什么,所以任何帮助都将不胜感激。
您尚未命名特定的汇编程序(NASM?),并且可能错误地为架构(代码看起来为32位),所以我实际上没有尝试过,但是当逐步浏览代码时,您应该看到此执行顺序调试器:
24 _start:
25 mov ecx, queryUserNumber <-1
26 mov edx, queryUserNumberLength <-2
27 call print <-3
28
29 mov ecx, newline
30 mov edx, newlineLength
31 call print
32
33 call quit
34
35 print:
36 mov eax, SYS_WRITE <-4
37 mov ebx, STDOUT <-5
38 int 0x80 <-6
39
40 read:
41 mov eax, SYS_READ <-7
42 mov ebx, STDIN <-8
43 int 0x80 <- 9
44
45 quit:
46 mov eax, SYS_EXIT <-10
47 xor ebx, ebx <-11
48 int 0x80 <-12
call