組合語言程式設計 第3章概念梳理

2022-09-13 07:18:09 字數 1854 閱讀 4584

組合語言程式設計

第3章概念梳理

基礎概念部分:{

字資料在記憶體當中的儲存:高-高 低-低

字資料的低位位元組存放在低位址記憶體單元

字資料的高位位元組存放在高位址記憶體單元

取低位址記憶體單元位址作為字資料位址,例如資料124eh:

12h儲存在偏移量為"2"的位元組單元,4eh儲存在偏移量為"1"的位元組單元

則從位址為"1"的位址單元取出的乙個字資料為124eh

12為高位,故儲存在高位「2」單元,4e為低位儲存在低位」1「單元

資料在記憶體和cpu之間的傳送:

執行指令時,預設情況下,8086自動取暫存器ds中的值為記憶體單元的段位址

ds:資料段段暫存器,用於存放資料段的[段位址]

mov,add,sub等彙編指令中,訪問記憶體單元是,預設情況下指的是資料段。

關於常數(立即數運算):

不能作為第1個運算元(目的運算元)

第2個運算元(源運算元)時,如果最高位是十六位制的a~f或a~f,前面要加零。

例如不能寫成 mov 4000h,ax,應當寫成mov ax,4000h

不能寫成 mov ax,a400h,應當寫成mov ax,0a400h

兩個記憶體單元之間不能直接傳送資料:

mov [1],[2]

不能使用mov指令修改cs和ip的值

關於段暫存器:

關於add指令:

錯誤點:

add指令的運算元不能是段暫存器,例如:

add ax,[2]

add ds,[2]

關於sub指令:

錯誤點:

sub指令的運算元不能是段暫存器

棧的概念:

棧的特性:先進後出

棧頂:最**棧的字資料所對應的位址單元

棧底:固定的一端,棧區最高位址單元的前乙個單元

入棧:把資料存入棧

出棧:從棧取出資料

與棧相關的暫存器ss和sp

ss:棧段段暫存器,用於存放棧段的[段位址]

sp:棧指標暫存器,用於存放棧頂的偏移指標

ss:sp對應的實體地址是棧頂的實體地址

(ss)*16+(sp)=棧頂的實體地址

[棧]的操作指令:push和pop

push ax 將ax的值壓入棧頂

pop ax 將棧頂的元素值彈出到ax暫存器

push [0] 將ds:0對應的記憶體單元字資料壓入棧

pop [0] 將棧頂的元素彈出到ds:0對應的記憶體單元

push和pop指令的注意點:

入棧和出棧均以字為單元

操作物件不能是常數

pop段暫存器當中,段暫存器不能是cs和ss

可以利用棧的定義完成如下兩個操作:

1、利用棧"保護現場"

保護現場原理: 先將暫存器bx,cx的值壓入棧,然後無論對cx與bx暫存器的值進行如何的操作,都能通過棧先進後出的原則,把兩個暫存器的值彈出返回。

2、利用棧實現資料交換

同樣利用先進後出的原則,先將兩個暫存器的值壓入,而後根據它們壓入棧的順序相同的進行彈出,即可實現兩個暫存器資料的交換。

關於[段]的小結

一段記憶體可以同時用作**段、資料段、棧段

在8086cpu中,每個段的最大長度不能超過64kb,即 0000h~ffffh

組合語言 第14章

第十四章 埠 pc機中,和cpu通過匯流排相連的晶元除了各種暫存器外,還有以下三種晶元 1 各種介面卡 如網絡卡 顯示卡 上的介面晶元,他們控制介面卡進行工作 2 主機板上的介面晶元,cpu通過他們對部分外設進行訪問 3 其他晶元,用來儲存相關系統資訊,或進行相關的輸入輸出處理。上述三種晶元都有一組...

組合語言 第6 8章

6.1 在 段中使用資料 在程式中定義我們希望處理的資料,這些資料就會被編譯 連線程式作為程式的一部分寫到可執行檔案中。當可執行檔案中的程式被加入記憶體時,這些資料也同時被加入記憶體中,我們要處理的資料也就自然而然的獲得了儲存空間。6.2 在 段中使用棧 程式執行時,定義的資料存放在cs 0 cs ...

組合語言 第14章 埠

14.1 埠的讀寫 注意 在in 和 out 指令中,只能使用ax 或 al 來存放從埠中讀入的資料或要傳送到埠中的資料。訪問8位埠時用al,訪問16位埠時用ax。14.2 cmos ram 晶元 pc機中,有乙個cmos ram 晶元,一般簡稱cmos.晶元特徵如下 1 包含1個實時鐘和1個128...