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