2012-03-08 59 views
0

在我的NASM教科書Dandamundi的「Linux彙編程序指南」中,系統調用5(打開文件)使用以下參數進行描述。用int 0x80(訪問位?)追加文件

EAX = 5 
EBX = file name 
ECX = file access mode (read, write, read/write) 
EDX = file permissions 

它沒有說明接入碼(八進制,我假設)實際上是什麼。 0200Q和02000Q顯然不工作。我試圖將一個文件的內容附加到另一個文件上。

回答

0

看着/usr/include/asm/unistd_32.h後,很明顯,系統調用號5解析爲open。繼而,看着man 2 open說第二個參數必須包括O_RDONLY00),O_WRONLY01)或O_RDWR02)。它也可能包含一些額外的標誌,將它們放在一起,這些標誌記錄在手冊頁上。

在你的情況,你可能希望能夠寫一個文件,並追加到它。因此,O_WRONLY | O_APPEND將是可取的。在查看頭文件後,該操作產生值02001,這就是你應該把它放在ecx寄存器中。

+0

非常感謝您! 'MOV ECX,02001Q' 作品完美,我的程序工作。 – Matt 2012-03-08 19:54:43

0

我覺得這是sys_open系統調用,這樣的參數應該映射一個-to-one的那些open(2)

的論點標誌必須包括下列訪問模式之一: O_RDONLY, O_WRONLY或O_RDWR。這些請求分別以只讀,只寫或讀/寫方式打開文件 。此外,零 以上的文件創建標誌和文件狀態標誌可以在標誌按位或運算 。該文件創建標誌O_CREAT,O_EXCL,O_NOCTTY和 O_TRUNC。 ...