基礎知識
- 補碼的來源、作用、計算。補碼(Two’s Complement),反碼(One’s Complement)。
80×86計算機組織
- Intel 8086處理器的字長、數據總線寬度、地址總線寬度、尋址空間。
- 處理器的工作模式:實模式、保護模式、虛86模式。
- 虛擬存儲技術並非擴展內存到外存,而應是流水進入內存,實現大於存儲器的程序的執行。
- CPU組成。
- 寄存器組,各寄存器名稱、用途。
- FLAGS寄存器的AF位對於8421BCD碼運算的作用。
- 做加法運算,OF和SF一起考慮是表示有符號數加法,考慮CF是無符號數加法。AF表示半字節進位,PF偶數標志位表示和的二進制1的個數是否為偶數。若加數符號位不同,則OF直接為0,SF看結果最高位;CF就看無符號數之和有無進位。
- 通用寄存器、專用寄存器、段寄存器。(SP到底通用還是專用啊???(ಥ﹏ಥ))
- 變址寄存器:BP,SP,SI,DI。
- 低位放低地址,高位放高地址。
- 同一地址可以是字節地址、字地址或雙字地址,根據實際情況確定。(比如PTR做了類型轉換)
- 實模式尋址:地址分段方法解決16位字長傳輸20位地址(1MB尋址空間)問題。段大小(1到64KB)。段起始於小段首地址,每16位為一個小段,共64K個小段。物理地址=段地址(或段基地址)<<16位 + 偏移地址 = 16D × 段地址 + 偏移地址。物理地址唯一,邏輯地址不唯一。
- 段的重疊:並非真的重疊,只是段的大小可以靈活變化,並不需要占滿64KB,可以多個段公用64KB空間。
- 1MB內存最多可分成64K個段,最少可分成16個段(且相互不重疊)。每個段至少為16字節(小段),最大為64KB。
- 段寄存器與偏移地址寄存器的對應。
- 段跨越前綴:當使用的段不是默認段時,使用段跨越前綴指定段寄存器。
- 保護模式尋址:邏輯地址由選擇器和偏移地址組成。偏移地址不再是16位,而是32位,段的最大長度擴展為4GB。
- 保護模式優點:支持更大尋址空間、支持多任務管理、支持虛擬存儲管理。
- 段的描述符:段的大小、位置、控制信息、狀態信息,由及地址、界限、訪問權和附加字段組成。
- 外設接口的一組寄存器:數據寄存器、狀態寄存器、命令寄存器。
- IO端口地址:獨立於存儲器編址,標明一組寄存器的地址。
- IO地址空間最大為64KB個8位端口或32KB個16位端口,即使在386及后續機型中擴展了32位端口號。
- 為了便於用戶使用外設,80×86提供了兩種類型的例行程序(中斷服務程序),一種是BIOS,一種是DOS,使用中斷方式(INT)轉入執行。
- DOS層次較高,應優先使用。其次是BIOS(寫入ROM,屬於硬件的一部分),最后是自己編寫外設調用程序。
80×86的指令系統和尋址方式
- 一地址(INC、DEC)、二地址(多數)、三地址指令(少數,如SHL)。
- 操作碼只要確定唯一二進制碼即可,但為了便於記憶,使用助記符表示操作碼,一一對應。
- 尋址方式:與數據有關、與轉移地址有關。
- 七種與數據有關的尋址方式,四種與轉移地址有關的尋址方式。
- 寄存器尋址16位使用AB、BX、CX、DX、BP、SP、SI、DI;8位使用AH、AL、BH、BL、CH、CL、DH、DL。
- 寄存器間接尋址、寄存器相對尋址中的寄存器只能是BX(在數據段中尋址)、BP(在堆棧段中尋址)、SI、DI。
- 基址變址、相對基址變址尋址,基址用BX(數據段)、BP(堆棧段),變址用SI、DI。
- 雙操作數指令除立即數方式外只能有一個操作數使用寄存器方式。(不能兩個都是內存單元)