2
在Linux程序集中嘗試我的手,我遇到了以下問題。我剛剛開始,所以我的程序是一個相對簡單的程序,它源於我在linuxassembly上找到的一些示例。它將第一個參數傳遞給命令行並將其打印出來。以下是我迄今爲止...使用linux程序集將命令行打印變量
section .bss
test_string: resb 3
section .text
global _start
_start:
pop ebx ;argument number
pop ebx ;program name
pop ebx ;first argument
mov [test_string],ebx
mov eax,4
mov ebx,1
mov ecx,test_string
mov edx,3
int 80h
mov eax,1
mov ebx,0
int 80h
我知道,這是寫得不好,但因爲我是新來這個,我只是希望更好地瞭解前我謹彙編指令/變量工作上。我組裝和使用鏈接...
nasm -f elf first.asm
ld -m elf_i386 -s -o first first.o
然後我跑使用..
./first one two
我以爲這樣就可以打印出「一」,但它打印出gibbrish像「Y * &」 。我究竟做錯了什麼?我的test_string是錯誤的類型嗎?
啊,我明白了。我正在加載指向test_string的指針。所以,而不是我應該做的mov ecx,[test_string] – b10hazard
爲什麼'只彈出ebx'到'mov ecx,ebx'?我認爲你可以'pop ecx',並消除'mov ecx,ebx'。 – 2015-12-19 19:49:24