彙編語言複習筆記3:程序格式

彙整自教材及課件。

硬指令 僞指令

彙編語言程序的開發

編譯 彙編 連接 調試

語句格式

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

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

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

程序格式

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

1
2
3
4
5
6
7
8
9
10
11
.model small
.stack
...
.data
...
.code
.startup
...
.exit 0
...
end

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

1
2
3
4
5
6
7
8
9
10
11
12
13
.model small
.stack
...
.data
...
.code
start: mov ax, @data
mov ds, ax
...
mov ax, 4c00h
int 21h
...
end

完整段定義格式

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
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