2 組合語言暫存器和記憶體訪問

2021-10-10 16:37:43 字數 2171 閱讀 8662

在cpu中運算器進行資訊處理,暫存器進行資訊儲存,控制器控制各種器件進行工作,內部匯流排連線各種器件,在它們之間進行資料的傳送。

暫存器是cpu內部的資訊儲存單元。暫存器是我們可以用指令讀寫的部件,我們可以通過改變各種暫存器的內容來實現對cpu的控制。

1.示例cpu為16位cpu,每一位可以儲存乙個二進位制的值即儲存乙個16位的資料。該資料最大值為全部取1的情況=2^16-1,也就是ffffh。上圖演示了暫存器儲存資料的形式,18d和20000d(十進位制)轉為二進位制存在暫存器中。

2.關於字的內容見上圖

1.十六進製制的加法,逢十六進一

舉個例子,4e20h+1406h,e在16進製制中表示十進位制的14,14+4為18超過16,所以首位進1(4+1+1=6),第二位十進位制的18轉為十六進製制的12取個位數2(或者用十進位制的18/16取餘數獲得),三四位沒有超過正常計算(像上圖中6226h+2000h沒有哪個數超過16所以按數學上相加即可結果為8226h)

注意像上圖中8226h+8226h為1044ch,超過四位時將首位去掉為044ch

2.上圖中有高低位之分,ah分為ah al,bh分為bh bl,在進行運算時將對應的進行運算。如第三條將bl加到al上,bl和al都是低八位,所以add al bl為bx的低位26加上ax的低位1a然後結果放在al中為0040h(高位沒變)。第四條add ah bl(26)將bl第八位加到ah高八位上(00),結果為2640h。注意最後溢位的也要消掉首項(如最後的值為00158h,要將1消掉為0058h)

如上圖所示,8086cpu有20位位址匯流排,可以傳送20位位址,達到1mb定址能力。8086cpu又是16位結構,在內部一次性處理、傳輸、暫時儲存的位址為16位。從8086cpu的內部結構來看,如果將位址從內部簡單地發出,那麼它只能送出16位的位址,表現出的定址能力只有64kb。那如何解決這一問題呢。

2.8086cpu給出實體地址的方法

實體地址=段位址*16+偏移位址

3.解釋 16位通過左移四位即可得到20位,乘16就相當於二進位制左移四位。如上圖所示,上圖只左移了一位因為是該數為十六進製制(十六進製制左移一位相當於二進位制左移四位),1230 和00c8錯開一位相加即可得到其實體地址123c8

1.記憶體本身並沒有分段,段的劃分**於cpu

如上圖,基礎位址就是起始的位址,段位址取其前四位即可,而大小通過相減+1轉為十六進製制後所得。如第乙個1000ff-10000=ff,ff+1(15*16+15後加1)就是十進位制的256,256轉為十六進製制為100h,所以大小為100h。第二個7f+1為十進位制128轉為十六進製制為80h,所以大小為80h。

注意:乙個段的起始位址一定是16的倍數;偏移位址為16位,變化範圍為0-ffffh,所以乙個段的長度最大為64kb。

2.同一實體地址可以由不同的段位址和偏移位址形成,所以我們通常採用類似2000:1f60的說法來表明指定某單元

3.用專門的暫存器存放段位址,如上圖。

組合語言 暫存器 記憶體訪問

記憶體中字的儲存 cpu中,用16位暫存器來儲存乙個字,乙個字要用兩個連續的記憶體單元來存放,這個字的低位位元組存放到低位址單元中,高位位元組存放在高位址單元中。假如用0 1兩個記憶體單元存放乙個字,這兩個單元看作乙個起始位址為0的字單元。ds和 address 8086cpu中有乙個ds暫存器,通...

組合語言 暫存器(記憶體訪問)

在cpu中,用16位來儲存乙個字,高8位存放高位元組,低8位存放低位位元組。在記憶體中時,由於記憶體單元是位元組單元,剛乙個字要用2個位址連續的記憶體單元來存放,字的低位位元組存在低位址單元.字單元 存放乙個字型資料 16位 的記憶體單元,由兩個位址連續的記憶體單元組成,高位址記憶體單元中存放字型資...

組合語言 暫存器(記憶體訪問)

暫存器 記憶體訪問 字的儲存,乙個字占用兩個位元組,在記憶體單元中儲存要用兩個位址連續的記憶體單元來存放 低位位元組放在低位址單元中,字單元,即兩個位址連續的記憶體單元 ds和 address ds暫存器通常用來存放要訪問資料的段位址 mov al,0 mov al,ds 0 資料訪問的段位址預設d...