我是装配新手。我的代码有问题。我正在尝试使用scanf创建简单的程序。
这是代码:
entityName
我用以下代码编译它:
query_words = set(list).intersection(query.split())
if query_words:
...
和
global main
extern printf
extern scanf
section .text
section .data
message: db "The result is = %d", 10, 0
request: db "Enter the number: ", 0
integer1: times 4 db 0 ; 32-bits integer = 4 bytes
formatin: db "%d", 0
main:
; Ask for an integer
push request
call printf
add esp, 4 ; remove the parameter
push integer1 ; address of integer1, where the input is going to be stored
push formatin ; arguments are right to left (first parameter)
call scanf
add esp, 8 ; remove the parameters
; Move the value under the address integer1 to EAX
mov eax, [integer1]
; Print out the content of eax register
push rax
push message
call printf
add esp, 8
; Linux terminate the app
MOV AL, 1
MOV EBX, 0
INT 80h
但是当我尝试ld时我得到错误:
nasm -f elf64 -o program.o program.asm
我正在使用64位Linux。
感谢您的帮助。
答案 0 :(得分:1)
您没有使用ld命令链接任何库。 {C}库中定义了scanf
和printf
,因此您可以链接到:
ld -o program program.o -lc
或者您可以使用其他一些定义这些功能的库(如果有的话)。