8089彙編 源程式
彙程式設計式:包含彙編指令和僞指令的文本。
彙編語言由彙編指令和僞指令構成,想要組合成源程式進行編譯就需要這麼做。
彙編指令
- 對應有機器碼的指令,可以被編譯為機器指令,最終被CPU執行
僞指令
- 沒有對應的機器碼的指令,最終不被CPU所執行。
- 指導編譯器将彙編語言轉換為機器碼。
源程式說明
一、程式案例
assume cs:codesg
codesg segment
mov ax,0123H
mov bx,0456H
add ax,bx
add ax,ax
mov ax,4c00h
int 21h
codesg ends
end
;注釋:”;“分号
;設定建立的段與寄存器關聯 cs:code,ds:data,ss:stack
assume cs:code,ds:data,ss:stack
;設定段 data
data segment
dw 0123H,0456H,0789H,0abcH,0defH
;結束段 data
data ends
;設定段 stack
stack segment
dw 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
;結束段 stack
stack ends
;設定段 code
code segment
mov ax,stack
mov ss,ax
mov sp,20h ;設定棧段
mov ax,data
mov ds,ax ;設定資料段
mov bx,0
mov cx,8
s: push [bx]
add bx,2
loop s
....
;結束段 code
code ends
;結束程式
end
源程式 說明
二、代碼解析
1、含義
段定義
- 一個彙程式設計式是由多個段組成的,這些段被用來存放代碼、資料或當作棧空間來使用。
- 一個有意義的彙程式設計式中至少要有一個段,這個段用來存放代碼。
- 定義程式中的段:每個段都需要有段名。
段名 segment ——段的開始
....
段名 ends ——段的結束
end (不是ends)
- 彙程式設計式的結束标記。若程式結尾處不加end,編譯器在編譯程式時,無法知道程式在何處結束。
assume(假設)
- 含義是假設某一段寄存器和程式中的某一個用 segment … ends 定義的段相關聯——assumecs:codesg指CS寄存器與codesg關聯,将定義的codesg當作程式的代碼段使用。
2、說明
3、源程式經編譯連接配接後變為機器碼
源程式設計
一、案例:程式設計求2的3次方
; ① 定義一個段
abc segment
abc ends
; ② 實作處理任務
abc segment
mov ax,2
add ax,ax
add ax,ax
abc ends
; ③ 指出程式在何結束
abc segment
mov ax,2
add ax,ax
add ax,ax
abc ends
end
; ④ 段與段寄存器關聯
assume cs:abc
abc segment
mov ax,2
add ax,ax
add ax,ax
abc ends
end
; ⑤ 加上程式傳回的代碼
assume cs:abc
abc segment
mov ax,2
add ax,ax
add ax,ax
mov ax,4c00h
int 21h
abc ends
end