組合語言程式設計 實驗3 不同定址方式的靈活應用

2021-10-12 22:53:00 字數 1577 閱讀 8378

1.實驗1 立即定址方式的使用

我們進入debug模式,然後輸入a,準備執行指令

首先我們在介面輸入mov al,6, mov ax,12af。這裡我們就往暫存器裡面存入了這兩條指令

然後我們按回車,進入命令模式,我們輸入u0100 0105這個命令可以檢視位址(0100-0105)的指令資訊(這個也叫反彙編)

這裡我們可以看到,我們輸入的指令顯示出來了

然後我們檢視一下位址資訊輸入d0100

2.實驗2 暫存器定址方式的使用

首先我們可以使用d命令來檢視記憶體的內容

然後我們使用r命令向bx暫存器中寫入值,這裡我們向bx暫存器中寫入了4050

然後我們使用mov指令把bx暫存器的內容寫入ax

然後使用反彙編檢視我們輸入的指令,這裡我們檢視0102-0104這個範圍的內容

下面我們使用t來執行命令(注意,自己的指令在哪個位址,t後面就接那個地方,我這裡是因為之前寫過指令,現在放到0105這個地方了)

從這裡可以看到,ax暫存器中獲取到了4050的值

實驗4 暫存器間接定址方式的使用

首先我們的4050這個地方有值

然後我們給暫存器bx寫入4050

寫入完成後,我們使用mov指令,把暫存器bx中的值作為偏移位址,然後我們執行一下指令檢視結果

我們可以看到ax暫存器中獲取到了我們的內容

實驗5 暫存器相對定址方式的使用

這裡我們同樣需要向4050這塊記憶體寫入資料

然後我們向暫存器bx寫入位址資料,我們這裡只寫入4000(因為後面我們會在指令上加上50)

然後我們寫入指令,這樣我們就把bx+50 也就是4050這個位址的資料移動到ax暫存器中

我們執行一下我們的指令,可以看到,ax裡面成功有了66這個值

實驗6 基址變址方式的使用

這個其實和上面的一樣,我們這裡利用兩個暫存器,我們向si暫存器中寫入50這個值

然後我們寫入指令到記憶體,然後執行**

這裡我們可以看到ax的值變成了66

實驗7 相對基址變址定址方式

我們這裡使用兩個暫存器外加乙個值來實現賦值操作,原理是一樣的,這裡我們還是接上一步,先給di暫存器寫入10

然後寫指令到記憶體並執行,這裡我為了區分,這次就放cx暫存器中

我們可以看到cx暫存器成功獲取到了4050的66這個值

組合語言定址方式

組合語言的定址方式 彙編有7種定址方式 mov 是組合語言用得最多的語句 他的使用方法 是 mov 目的位址,源位址 下面便通過mov來介紹組合語言的幾種定址方式 1.立即定址 mov ax,1234h 2.暫存器定址 mov si,ax 源運算元和目的運算元 同時為暫存器 3.直接定址 mov a...

組合語言之定址方式

1 固定定址 inherent addressing 特定的單運算元指令,運算元隱含在操作碼中,在固定定址的指令中,運算元被隱含在指令中,不需要執行匯流排週期,執行速度快 例子 1.1 cbw命令,將al中的符號位擴充套件到ah中,形成16位的運算元。比如al中的符號位是1,則執行cbw命令後,ah...

組合語言定址方式(Linux

位址或偏移 基位址暫存器,索引暫存器,比例因子 計算結果 位址或偏移 基位址或偏移量暫存器 比例因子 索引暫存器 其中所有欄位都是可選的。具體如何省略的,會在後面說明。注意,藍色代表使用,綠色代表保被省略的部分。movl 0x1234,eax 通式分解 位址或偏移 基位址暫存器,索引暫存器,比例因子...