【发布时间】:2015-05-12 02:07:22
【问题描述】:
我正在尝试读取两个字符串,使用 atoi 函数将它们转换为数字,然后打印出结果。
这是我未初始化的变量。 (%define BUFLEN 20)
SECTION .bss ; uninitialized data section
m: resb BUFLEN ;STRING 1
mlen: resb 4
r: resb BUFLEN ;STRING 2
rlen: resb 4
这是我获取用户输入/尝试将其分配到内存中的地方
; prompt user for FIRST NUMBER
mov eax, SYSCALL_WRITE ; write function
mov ebx, STDOUT ; Arg1: file descriptor
mov ecx, msg1 ; Arg2: addr of message
mov edx, len1 ; Arg3: length of message
int 080h ; ask kernel to write
; read in user input
;
mov eax, SYSCALL_READ ; read function
mov ebx, STDIN ; Arg 1: file descriptor
mov ecx, m ; Arg 2: address of buffer
mov edx, BUFLEN ; Arg 3: buffer length
int 080h
mov [rlen], eax ; save length of string read
; prompt user for SECOND NUMBER
mov eax, SYSCALL_WRITE ; write function
mov ebx, STDOUT ; Arg1: file descriptor
mov ecx, msg2 ; Arg2: addr of message
mov edx, len2 ; Arg3: length of message
int 080h ; ask kernel to write
; read in user input
mov eax, SYSCALL_READ ; read function
mov ebx, STDIN ; source
mov ecx, r ; destination
mov edx, BUFLEN ; length of destination
int 080h
mov [mlen], eax ; save length of string read
现在我正在尝试使用 atoi 转换字符串并打印出来
;CONVERT TO #
mov eax, 0 ;zero out register
mov eax, m
call atoi
add esp, 4
;PRINT IT
push ax
push print_r
call printf
add esp, 8
;CONVERT TO #
mov eax, 0 ;zero out register
mov eax, r
call atoi
add esp, 4
;PRINT IT
push ax
push print_r
call printf
add esp, 8
这是我的输出...
输入第一个#:1234
输入第二个#:1234
编号:1234
等待第二个 atoi 通话
【问题讨论】:
-
你肯定不想
push ax!
标签: c assembly nasm intel atoi