組合語言 檔案複製原始碼

2021-10-06 01:30:43 字數 2094 閱讀 1272

這篇是乙個複製檔案的匯程式設計序,它的作用是將當前目錄下的乙個檔案的內容複製到另乙個檔案中。

這個程式有以下幾點需要注意的地方:

下面給出源**:

dseg segment

errmsg db 'error:cannot open file$'

input1 db 'source file:$'

input2 db 'destination file:$'

filename1 db 20,?

,20dup(0)

filename2 db 20,?

,20dup(0)

buff db 512

dup(?)

dseg ends

sseg segment stack

stktop db 80h dup(?

)sseg ends

cseg segment

assume ds:dseg,cs:cseg,ss:sseg

openfile proc

mov dx,si

mov ah,

9h int

21h ;提示字串

mov dx,di

mov ah,

0ah int

21h ;輸入源檔名

mov bl,

[di+1]

xor bh,bh ;擴充套件為字

mov [bx+di+2]

,bh ;最後一位置0

lea dx,

[di+2]

retopenfile endp

newline proc

push dx

push ax

mov dl,

0ah mov ah,

02h int

21h ;輸出換行符

pop ax

pop dx

retnewline endp

start:

mov ax,dseg

mov ds,ax ;設定資料段

mov ax,sseg

mov ss,ax ;設定堆疊段

mov ax,length stktop

mov sp,ax ;設定棧頂指標

lea si,input1

lea di,filename1

call openfile

mov ax,

3d00h ;讀 模式開啟檔案

int21h jc err

call newline

mov bx,ax

lea dx,buff

mov cx,

512;最大讀取位元組數

mov ah,

3fh int

21h ;讀取檔案內容

mov cx,ax

mov ah,

3eh int

21h ;關閉檔案

lea si,input2

lea di,filename2

call openfile

push cx

xor cx,cx

mov ah,

3ch ;建立檔案

int21h jc err

pop cx

call newline

mov ax,

3d01h

int21h ;以寫模式開啟檔案

jc err

mov bx,ax

lea dx,buff ;寫內容

mov ah,

40h int

21h mov ah,

3eh int

21h ;關閉檔案

jmp end_

err:

call newline

lea dx,errmsg

mov ah,

9h int

21h ;輸出錯誤資訊

end_:

mov ah,

4ch int

21h ;退出

cseg ends

end start

**中寫了許多注釋,此處不再贅述。

龍芯組合語言 利用系統呼叫複製檔案

from 距離龍芯上的彙編版的hello,world 出現已經有段日子了。下面這個程式在那個的基礎上多用了幾個系統呼叫。更多的系統呼叫請參考 usr include asm unistd.h,也可以用類似man 2 open的指令來看系統呼叫的詳細的引數。aa aa copy home copy c...

組合語言 AT T組合語言

這兩天的pwn題環境都是在linux中,採用的組合語言是 at t 格式。之前學習的是intel格式的8086彙編,今天學習了下at t組合語言。基於x86 架構的處理器所使用的彙編指令一般有兩種格式 操作intel格式at t格式 暫存器命名 push eax pushl eax 常數 立即運算元...

VS2010檢視原始碼對應的組合語言

在學習c 中const關鍵字的過程中,經常會看到各種暫存器 彙編指令分析,像下面的圖這樣 左圖是g 中反彙編的效果,右圖是vs中反彙編的效果。如果我們想要檢視原始碼所對應的組合語言,應該怎麼操作呢?1.ubuntu系統g g 中一般使用gdb進行除錯。build cmakelists.txt inc...