彙編學習筆記4

2022-04-11 11:56:13 字數 1492 閱讀 6871

第三講講的是暫存器,第四講仍然介紹暫存器。

在第三講裡,介紹了8086,8088cpu共有14個16位暫存器,8個8進製暫存器,分別為16位資料暫存器ax,bx,cx,dx,8位暫存器ah,al,bh,bl,ch,cl,dh,dl等,指標暫存器bp,sp等,變址暫存器si,di等以上八個16位暫存器稱為通為暫存器,還有四個段暫存器cs,ds,es,ss,兩個控制暫存器ip,flag。

作為如下:

ax,al 被稱為累加器,用於累加運算時。bx基址暫存器。cx用於控制迴圈的次數。cl用於儲存移位時的偏移位數。dx用於32位乘除法時儲存被除數或儲存餘數。

bp棧頂指標暫存器,sp堆疊指標暫存器。si源變址暫存器,di目的位址暫存器。cs**段,ds資料段,es附加段,ss堆疊段。ip記錄下一條要執行的指令的偏移。flag標記暫存器,用乙個16位數表示一組9個標記。

結果標識:

cf,進製標識。af,附助進製標識。zf,零標識。pf,奇偶標識。sf,符號標識。of,溢位標識。

控制標識:

df,方向標識。if,中斷標識。sf,單步標識。

儲存器中的位址和資料,

暫存器以位元組為單位儲存資料,使用16位二進位制數來表示每個儲存單元。故可表示65536個儲存單元。0~ffffh。儲存單元的內容指存放在儲存單元中的資料。

字單元採用高高低低的原則存入儲存器的相鄰兩個位元組單元,高位存放高位元組,低位存放低位元組。雙字等與之相同。

而8086,8088cpu的匯流排為20根,共有2^20儲存空間即1m位元組儲存單元,可用20位二進位制數來表示。而暫存器只能表示64k個儲存單元,解決這個問題的方法是儲存器分段。

將儲存器分段,每段的長度為64k,段內的位址可使用16位二進位制數來表示。而段的位址使用段的起始位址。對每段的起始位址,必須是儲存器中任一小段的起始位址。儲存器內從0位址開始,每16個位元組為一小段。

00000h   00001h    00002h    00003h    ……    0000dh    0000eh    0000fh

00010h   00011h    00012h    00013h    ……    0001dh    0001eh    0001fh

fffe0h    fffe1h     fffe2h    fffe3h    ……    fffedh    fffeeh    fffefh

ffff0h    ffff1h     ffff2h    ffff3h    ……     ffffdh    ffffeh    fffffh

故每一段的位址的後四位都必然為0。

儲存器中每個儲存單元都可以使用乙個唯一的20位二進位制數來表示,即為該儲存單元的實體地址。

段可相連,不相連,重疊。

段位址和偏移可直接使用16位二進位制數來表示,也可使用暫存器指標來表示。

cs與ip暫存器一起使用,取指令時自動引用**段和ip暫存器確定指令位置。

堆疊操作使用ss和sp。ss也可和bp一起使用。

這一講內容有些多,記不太清楚,寫得有些零碎。這兩講多為概念性的東西。後在以後用到的時候加深記憶。

反彙編學習筆記4 ADRP

sp 需要16位對齊 函式引數從x0開始呼叫 常量的獲取 adrp 指令 adr address p page adrp x0,x1 第一步 將1的值左移12位 1 0000 0000 0000 0x1000 第二步 將pc暫存器的低12位清零 第三步 將前兩步的結果相加,放入x0暫存器 adrp是...

彙編學習(4)彙編指令舉例

位元組 記為byte,乙個位元組由8個bit組成,可以存在8位暫存器中。字 word,乙個字由兩個位元組組成。注 乙個字可以存在乙個16位暫存器中,這個字的高位位元組和低位位元組自然就存在這個暫存器的高8位暫存器和低8位暫存器中。十六進製制中的一位相當於二進位制數中的四位。幾條彙編指令 彙編指令 操...

彙編學習筆記

1 cpu的指令集 cpu內整合了不同功能的電路模組 如 加 減法器,比較器 正常工作所對應的不同高低電平 數電知識 組合語言是人對機器指令的語言表述。2 cpu對硬體的控制實際是訪問其記憶體 如顯示卡上整合有ram 視訊記憶體 和rom 裝有唯讀bios 源 被編譯成機器 後被載入記憶體。3 程式...