組合語言學習筆記1

2021-08-19 02:39:57 字數 1606 閱讀 2074

在乙個程式中使用多個段

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。實體地址表示方法 位址加法器,...