在乙個程式中使用多個段
assume cs:code, ds:data, ss:stack
data segment
dw 0123h, 0456h, 0789h, 0abch, 0defh, 0fedh, 0cbah, 0987h
data ends
stack segment
dw 0,0,0,0,0,0,0,0
stack ends
code segment
start:
mov ax, stack
mov ss, ax
mov sp, 16
mov ax, data
mov ds, ax
push ds:[0]
push ds:[2]
pop ds:[2]
pop ds:[0]
mov ax, 4c00h
int 21h
code ends
end start
ss = 0b4a
ds = 0b3a
看這段**,我們使用了多個段,相比原來的程式,我們新增了自己定義的data段和stack段
程式開始的地方的段位址是:ds+10h
下面這段**可以實現a段資料中的前8位位址單元,倒序傳輸到b段中
一般情況下,倒序輸入輸出都是用棧結構來實現的
assume cs:code
a segment
dw 1, 2, 3, 4, 5, 6, 7, 8, 9, 0ah, 0bh, 0ch, 0dh, 0eh, 0fh, 0ffh
;注意:此處申請的是字單元,在本書中,乙個字佔2位元組
a ends
b segment
dw 0,0,0,0,0,0,0,0
b ends
code segment
start:
mov ax, b
mov ss, ax
mov sp, 16
mov ax, a
mov ds, ax
mov bx, 0
mov cx, 8
s1: push [bx]
add bx, 2
loop s1
mov bx, 0
mov cx, 8
s2: pop [bx]
add bx, 2
loop s2
mov ax, 4c00h
int 21h
code ends
end start
程式執行前a段資料單元中的資料
程式執行完畢後:
組合語言學習筆記 1
1.1 控制暫存器 具有控制程式順序 狀態 和堆疊儲存器的暫存器,包含程式計數器pc 儲存下一次要執行的程式位址資訊的20位暫存器,在執行的時候,根據預取的指令碼位元組數自動遞增 在執行轉移指令時,設定立即數或者暫存器的內容 在產生復位訊號的時候,給低16位設定位址0000h 0001h的復位向量表...
組合語言學習1
資料查詢 內容 tab開始的位元組單元中存放n個無符號數,dat單元存放乙個已知資料x,現從tab中查詢是否存在資料x,如果存在,no單元存放該資料在tab中的序號,否則no單元存放0ffh tab db x1,xn dat db x no db n 5.data tabdb n dup datdb...
組合語言學習筆記
學習參考資料 大灰狼 講彙編 資料匯流排,位址匯流排,控制匯流排。位址匯流排有多少條就決定了cpu最大的記憶體使用量。80386有32位位址匯流排,所以它的定址能力就是4g.暫存器 通用暫存器,段暫存器,ax暫存器 通用暫存器,存放資料。高位位元組ah,低位位元組al。實體地址表示方法 位址加法器,...