組合語言大後天考試,原諒我忍不住寫部落格

2021-09-02 17:40:09 字數 1979 閱讀 3220

好多問題必須深入地說一下,當然以下是我默寫的:

1.在馮·諾曼依體系中,我們知道計算機組成最重要的五個部分是運算器、控制器、儲存器、輸入輸出介面和輸入輸出裝置。其中運算器和控制器合稱**處理器,即cpu。計算機的硬體之間通過匯流排進行連線,其中位址匯流排是單向的,由cpu指向儲存器、輸入輸出介面,資料匯流排和控制匯流排是雙向的。

2.計算機中的資料分為有符號數和無符號數。有符號數會在儲存單元中額外拿出最高位作為符號位,因此機器數長為n的有符號數,其機器數的真值範圍僅是無符號數的一半。機器數的原碼、補碼和反碼符號是不變的,因此在後面的有符號數的右移中,最高位需要一直保持下去。而在機器數的原碼、補碼和反碼的討論中,大多應是討論負數的。只需要保持最高位的符號,取反就是把後面的位0/1互換,取補就是取反完畢之後進行+1操作。正數和零原碼、反碼和補碼相同即可。在補碼的運算中,有符號數要看o標誌判斷是否結果有效,無符號數看c標誌。原因無非是數值超出-127~127之後,無法正確表示的原因。在**中,neg即為求補指令。

3.在微機中使用ascll碼,30~39h表示0~9,41~46h表示a~f,0ah表示換行(lf),0dh表示回車(cr)。

4.在80x86微處理器中,有8位、16位和32位的基本體系結構暫存器。從定址角度來說,因實體地址的表示上需要使用邏輯位址,即段基址:偏移位址,所謂段基址就是邏輯段的基址,偏移位址表示形式多樣。當然了,順便先提一下,如果定址的時候,直接給了數值、字元或者表示式,則為立即定址。如果定址的時候直接是單個的暫存器,則為暫存器定址。而如果採用段基址:偏移位址,即定址時使用實體地址,則為儲存器定址。其中,邏輯段有cs、ds、es、ss,段後直接為[偏移位址數值]或變數名,則為直接定址。段:[通用暫存器中的指標bp和三變址暫存器di、si、bx]時,為間接定址/暫存器間接定址/間址。如果為段基址:[bp/bx+位移量]則為基址定址,換成di/si+位移量則為變址定址,換位基址之一+變址之一+位移量則為基址加變址定址。在暫存器中的指標有三個,除了表示段基址的bp和棧頂指標sp,還有與cs結合使用的ip。還有很多有用的通用暫存器,如cx用於迴圈次數的設定,ax常用語data資料轉移到ds的容器。尤其是標誌暫存器flag中的6個狀態標誌和3個控制標誌,更是重中之重,如標誌暫存器中狀態標誌的值常常是**執行中執行中斷的契機,a標誌和c標誌是執行加減時是否使用adc和sbb修正的決定者。使用popf/pushf可用於標誌暫存器進/出棧,popa/pusha可用於十六位通用暫存器進/出棧。

5.個人感受,**執行中轉移指令的意義在於跳過一些步驟,呼叫指令則用於多執行一些步驟。子程式會讓**簡潔,巨集定義卻只是表面簡潔。

1.80486有32根位址線,可定址4gb的儲存單元;有32根資料線,這意味著cpu和儲存器、i/o埠每一次可傳輸4b的資料。 微型計算機的儲存器以位元組為單元。

2.負數如-66的原碼機器數為10110011,保留符號位其他位按位取反加1即求補後為11001101。也可先找到其絕對值的補碼為00110011,對其進行按位所有位取反加,為11001101。

3.32位處理器有3種工作模式:實位址模式、保護虛擬位址模式和虛擬8086模式。

4.32位微處理器的位址空間裡,儲存位址空間分為物理空間、虛擬空間和線性空間。物理空間80486為4gb,虛擬空間可達2^46b(64tb);輸入輸出位址空間00000000h~0000ffffh,為64kb。

5.指令是cpu操作的基本單位,是單個cpu操作,每條指令執行乙個特定的操作。指令編碼為二進位制的序列成為機器指令。

6.標號表示該條指令的符號位址,在分支或迴圈等指令的轉移目標或程式開始執行的首條語句需要設定標號。具有三個屬性:段屬性、偏移屬性和型別屬性。

7.開發應用程式的步驟:編輯為.asm,編譯為.obj,鏈結為可執行檔案.exe/.com

8.指令性語句即為符號指令,指示性語句分為偽指令和巨集指令。

9.變數定義在ds、ss和es中,表示邏輯段中的儲存單元。

6.mov bx,offset buf 和lea bx,buf作用相同。

7.在dos功能呼叫中,0a功能是用於從鍵盤處讀取字元,存入dx中所存的偏移位址所指向的變數,int 21h執行後,輸入回車符後,功能呼叫結束,0dh存在緩衝區中。

組合語言 AT T組合語言

這兩天的pwn題環境都是在linux中,採用的組合語言是 at t 格式。之前學習的是intel格式的8086彙編,今天學習了下at t組合語言。基於x86 架構的處理器所使用的彙編指令一般有兩種格式 操作intel格式at t格式 暫存器命名 push eax pushl eax 常數 立即運算元...

組合語言 彙編指令

功能 用來進行資料傳輸。以 mov a,b 為例,相當於a b。具有以下形式 mov 暫存器,資料 mov 暫存器,暫存器 mov 暫存器,記憶體單元 mov 記憶體單元,暫存器 mov 段暫存器,暫存器 功能 用來做加法。以 add a,b 為例,相當於a a b。具有的形式,和 mov 一樣。功...

組合語言 《組合語言》王爽 實驗一

從 1000 0 開始寫入命令 a 1000 0 mov ax,4e20 add ax,1416 mov bx,2000 add ax,bx mov bx,ax add ax,bx mov ax,001a mov bx,0026 add al,bl add ah,bl add bh,al mov a...