我試圖讀取組件的文件(86,IA-32)中讀取文件,我發現這個例子:在組件86 IA-32
mov ebx,eax
mov al,0x3
mov edi,esp
mov ecx,edi
xor edx,edx
mov dh,0xff
mov dl,0xff
int 0x80
其中eax中(第一指令)有開放系統調用的返回碼。
有,我還沒有完全瞭解兩兩件事:
- 爲什麼做
mov edi,esp
然後mov ecx,edi
而不是做直接mov ecx,esp
? - 爲什麼把
0xff
和0xff
放在edx寄存器裏面?讀系統調用期望count
所以在這種情況下的文件大小。
EDIT(完整代碼):
section .text
global _start
_start:
;read the file
jmp short call_rw
rw:
push 0x5
pop eax
pop ebx
xor ecx,ecx
int 0x80
mov ebx,eax
mov al,0x3
mov edi,esp
mov ecx,edi
xor edx,edx
mov dl,0xff
mov dh,0xff
int 0x80
mov edx,eax
push 0x4
pop eax
mov bl, 0x1
int 0x80
push 0x1
pop eax
inc ebx
int 0x80
call_rw:
call rw
message db "/home/user/file.txt"
你還沒有指定你的目標操作系統,但我猜測Linux(?)。 – Michael
對不起!是的Linux(Gentoo x86) – polslinux
@JerryCoffin我的錯,我點擊太快回答xD我更新了我的問題! – polslinux