從零開始---彙編程序

彙編語言程序從寫到最終執行的過程:

第一步:編寫彙編源程序
使用文本編輯器(如Edit,記事本,不能用word編寫),用彙編語言編輯源程序。保存成 .asm文件
第二步:對源程序進行編譯連接
可執行文件包含兩部分內容:

  • 程序(從源程序中的彙編指令翻譯過來的機器碼)和數據(源程序中定義的數據)
  • 相關的描述信息(比如,程序有多大,要佔用多少空間等)

第三步:執行可執行文件中的程序
操作系統依照執行文件中的描述信息,將可執行文件中的機器碼和數據加載如內存,並進行相關的初始化(比如設置CS:IP指向第一條指令),然後由CPU執行程序。

源程序

1.僞代碼
在彙編語言源程序中,包含兩種指令,一種彙編指令,一種僞指令
彙編指令:對應機器碼指令,可以被編譯位機器指令,最終爲CPU所執行。
僞指令:由編譯器來執行的指令,編譯器根據僞指令來進行相關的編譯工作。
(1)segment 和ends是一對成對使用的僞指令。
XXX segment
······
·····
XXX ends
segment和ends功能是定義一個段,segment說明一個段的開始,ends說明一個段的結束。

一個有意義的彙編程序中至少有一個段,這個段用來存放代碼。
(2)end
end是一個彙編程序的結束標誌。
如果程序寫完了,要在尾處加上一個僞指令end。否則,編譯器在編譯程序時不知道何時結束。
(3)assume
含有:假設。它假設某一段寄存器和程序中的某一個用segment…ends定義的段相關聯。(不用深入瞭解)
2.源程序中的“程序”
彙編語言寫的源程序,包括僞指令和彙編指令
源程序中的彙編指令組成了最終由計算機執行的程序,而源程序中的僞指令是由編譯器來處理的。
3.標號
一個標號代表一個地址。
比如codesg在segment的前面,作爲一個段的名稱,這個段的名稱最終被編譯,連接程序處理爲一個段的段地址。

4.程序的結構
(1)定義一個段,名稱abc

abc segment 
    .
    .
abc ends

(2)在這個段中寫入彙編指令

abc segment 
    mov ax,2
    add ax,ax
    add ax,ax
abc ends

(3)指出程序在何處結束

abc segment 
    mov ax,2
    add ax,ax
    add ax,ax
abc ends

end

(4)abc 被當作代碼段使用,所有,應該將abc和cs聯繫起來

assume cs:abc
abc segment 
    mov ax,2
    add ax,ax
    add ax,ax
abc ends

end

5.程序返回
一個程序結束後,將CPU的控制權交還給使它得以運行的程序,我們稱這個過程爲:程序返回

mov ax,4c00H
int 21H

這兩條指令所實現的功能就是程序返回

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章