一段簡單彙編語言程序及說明

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



segment 和 ends 是一對成對使用的僞指令,這是在寫可被編譯器編譯的彙編程序時必須要用到的一對僞指令,功能是定義一個段,segment說明段開始,ends說明段結束

格式爲   段名 segment

             段名  ends

assume含義爲假設,用來關聯某一段寄存器和  segment....ends定義的段

例如  編程計算 2^3


assume cs:code

  code  segment

      mov ax,2

      mov ax,ax

      mov ax,ax

  code ends

end


程序返回 

mov ax,4c00h

int 21h


彙編源程序包括彙編指令和僞指令。其中彙編指令有對應的機器碼指令,可以被編譯爲機器指令,最終爲CPU所執行。僞指令由編譯器來執行,編譯器根據僞指令來進行相關的編譯工作


loop指令的格式爲   loop  標號

執行過程

1 (CX) = (CX)-1

2 判斷cx是否爲0,

不爲0轉向標號,爲零則執行下一條語句

例如 計算 2^12


assume cs:code

    code    segment

        mov ax,2

        mov cx,11

    

    S: add ax,ax

        loop s

    

        mov ax,4c00h

        int 21h

    code ends

end



描述性符號 “()”

(AX)表示AX中的內容,(AL)表示AL中的內容

(20000H)表示內存20000H單元中的內容,()中的內容爲內存單元的物理地址

()中的元素可以有3種類型:1 寄存器名  2段寄存器名 3內存單元的物理地址


例如

AX的內容爲 0010H                   表示爲     (AX)=0010H

2000:1000處爲0010H                            (21000H)=0010H

mov ax,[2]                                                (AX ) = ((DS) * 16 +2)

mov [2],ax                                                ((DS) * 16 +2) = (AX)

ADD AX,2                                                (ax) = (ax) + 2

ADD AX,BX                                                (AX) =(AX) + (BX)

PUSH AX                                                    (SP) = (SP) - 2        ((SS) * 16 + (SP)) = (AX)

POP AX                                                        (AX) = ((SS) * 16 + (SP))             (SP) = (SP) - 2 


發佈了79 篇原創文章 · 獲贊 22 · 訪問量 17萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章