彙整自教材及課件。

硬指令 僞指令

彙編語言程序的開發

編譯 彙編 連接 調試

語句格式

標號 名字 標識符(大小寫不敏感)
保留字:

  • 硬指令助記符
  • 僞指令助記符
  • 操作符:如offset ptr
  • 寄存器名
  • 預定義符號:如@data

助記符
操作數:立即數、寄存器、存儲單元
參數:常數、變量名、表達式等
註釋
分隔符

程序格式

簡化段定義格式(MASM 6.x支持)

.model small
.stack
...
.data
...
.code
.startup
...
.exit 0
...
end

簡化段定義格式(MASM 5.x支持)

.model small
.stack
...
.data
...
.code
start:  mov     ax, @data
        mov     ds, ax
...
        mov     ax, 4c00h
        int     21h
...
end

完整段定義格式

stack   segment stack
        dw      512 dup(?)
stack   ends
data    segment
...
data    ends
code    segment 'code'
        assume  cs:code, ds:data, ss:stack
start:  mov     ax, data
        mov     ds, ax
...
        mov     ax, 4c00h
        int     21h
...
code    ends
        end     start

開發過程

  • 編譯:edit.com
    edit hello.asm
  • 彙編:ml.exe
    ml /c hello.asmmasm hello.asm生成hello.obj
  • 連接:link.exe
    link hello.obj生成hello.exe
    ml hello.asm自動完成以上兩步。
    ml /fl /sg hello.asm還生成列表文件hello.lst,含源程序和目標代碼。
  • 調試:debug.exe
    debug hello.exe

參數 變量 標號

數值型參數:

  • 常數
    • 十進制常數:d結尾(可省略)
    • 十六進制常數:q結尾
    • 二進制常數:b結尾
    • 八進制常數:q結尾
    • 字符串常數:'balabala'
    • 符號常數
      • EQU僞指令
        符號名 equ 數值表達式/字符串
      • =僞指令
        符號名 = 數值表達式
  • 數值表達式
    • 算術運算符
    • 邏輯運算符
    • 移位運算符
    • 關係運算符
    • 高低運算符

變量定義僞指令:
變量名 僞指令助記符 初值表

  • 初值表:數值常數、表達式、?DUP
    • DUP格式:重複次數 DUP(重複參數)
  • 僞指令助記符:
    • DB
    • DW
    • DD