彙編讀寫檔案

2021-09-19 11:35:56 字數 3222 閱讀 8981

**:

說明這是乙個讀寫磁碟檔案的例子,其中「infile」為讀檔案,「wfile」為寫檔案。

函式圖:

infile(檔案的讀取)

;資料段

data            segment

file             db    'c:\1.txt' , 0       ;檔名,dosbox 設定的c盤下的路徑

buf             db   256 dup(0)        ;檔案內容暫存區

error_message    db   0ah , 'error !' , '$'    ;出錯時的提示

handle           dw  ?                ;儲存檔案號

data             ends

;**段

code            segment

assume  cs:code  , ds:data

start:

mov ax , data                

mov ds , ax                ;獲取段位址    

mov dx , offset file        ;dx獲取file的偏移位址

mov al , 0                

mov ah , 3dh                

int 21h                  ;開啟檔案,唯讀

jc error                  ;若開啟出錯,轉error

mov handle , ax           ;儲存檔案控制代碼

mov bx , ax                ;檔案控制代碼

mov cx , 255                ;讀取255位元組

mov dx , offset buf        ;獲取buf的偏移位址

mov ah , 3fh                

int 21h                  ;從檔案中讀255位元組→buf

jc error                  ;若讀出錯,轉error

mov bx , ax              ;實際讀到的字元數送入bx

mov buf[bx] , '$'          ;在檔案結束處放置一「$」符

mov dx , offset buf

mov ah , 9

int 21h                            ;顯示檔案內容

mov bx , handle                    ;檔案控制代碼

mov ah , 3eh                        

int 21h                            ;關閉檔案

jnc end1             ;若關閉過程無錯,轉到end1處返回dos

error:

mov dx , offset error_message        ;獲取error_message的偏移位址

mov ah , 9                        

int 21h                            ;顯示error_message

end1:

mov ah , 4ch                        ;待返回碼的結束

int 21h

code   ends

end  start

outfile(檔案的寫入)

;資料段

data            segment

file            db     'c:\1.txt' , 0           ;建立檔案的檔名

buf            db      'this is a test !'       ;寫到檔案中去的內容

error_message   db     0ah , 'error !' , '$'     ;出錯時的提示

message        db     0ah , 'ok !$'          ;操作成功後的提示

handle          dw    ?                    ;儲存檔案號

data           ends

;**段

code           segment

assume  cs:code  , ds:data

start:

mov ax , data

mov ds , ax

mov dx , offset file

mov cx , 0

mov ah , 3ch

int 21h               ;建立檔案,若磁碟上原有此檔案,則覆蓋

jc error               ;建立出錯,轉error處

mov handle , ax         ;儲存檔案號

mov bx , ax

mov cx , 16 

mov dx , offset buf

mov ah , 40h

int 21h                          ;向檔案中寫入16個位元組內容

jc error                          ;寫出錯,轉error處

mov bx , handle

mov ah , 3eh

int 21h                          ;關閉檔案

jc error                           ;關閉檔案出錯,轉error處

mov dx , offset message

mov ah , 9

int 21h                            ;操作成功後顯示提示

jmp end1

error:

mov dx , offset error_message

mov ah , 9

int 21h                              ;顯示錯誤提示`

end1:

mov ah , 4ch

int 21h

code   ends

end  start

引數傳遞

無需引數傳遞

改寫為函式庫

無子函式

C 反彙編讀書筆記

1.建構函式可以過載,虛函式不能 new delete是運算子,能過載能呼叫建構函式和析構函式,malloc free不能 this指標本質就是物件的位址,物件的位址就是一堆成員變數所在空間的起始位址 new new delete delete 分配和析構的方式都不同,本質上講帶的都要呼叫 建構函式...

彙編 記憶體讀寫操作

記憶體單元 佔8bit大小 儲存方式 高單元儲存高位位元組,低單元儲存低位位元組 如下圖 0單元儲存的資料0x20,1單元儲存的資料0x4e,0 1單元共同組成乙個字單元 0位址字單元 儲存的資料為0x4e20 記憶體的位址需要用上資料的段位址ds和 偏移位址 來讀取指定位址的記憶體資料 寫資料 1...

c 檔案讀寫 文字讀寫

include int main else return 0 格式 intfscanf file stream,constchar format,返回值 如果成功,該函式返回成功匹配和賦值的個數。如果到達檔案末尾或發生讀錯誤,則返回 eof 引數1 file stream 檔案指標 引數2 cons...