天天看點

8089彙編 源程式

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      
8089彙編 源程式
8089彙編 源程式
;注釋:”;“分号
;設定建立的段與寄存器關聯 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、說明

8089彙編 源程式

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       

二、正規程式樣式