彙編程式設計模型

2021-06-28 12:50:18 字數 2357 閱讀 3814

實模式平面模型

在此模式下,程式和它處理的所有的資料都必須小於等於64k。

實模式段模型

在此模式中,程式可以看到cpu可用的1m記憶體。

在1m記憶體中,每個16個位元組都是乙個可用的段的開始位址。00000h是第乙個可用的段位址(0000h段),00010h是第2個可用的段位址(0001h段)....。

上圖中顯示了2個**段和2個資料段,在實際使用時可以有任意個**段和資料段。

可以在同一時間訪問兩個資料段,因為有兩個段暫存器可以幫助來完成該項任務(ds和es)

在386及更高版本的cpu中可以同時訪問四個資料段(ds,es,fs,gs)

但是只有乙個**段暫存器cs,同一時間只能訪問乙個**段。

不能直接將值載入到cs,來實現從乙個**段到另一**段的跳轉。這種任務必須使用跳轉指令來完成。

任意乙個單獨的程式都只有乙個堆疊段,它是由堆疊段暫存器ss指定的。

在實模式段模型下,作業系統和使用者的程式共存於記憶體之中,如果使用者程式意外的破壞了作業系統存在於記憶體中的資料,則可能會導致整個系統的崩潰,這正是intel開發保護模式的初衷。

保護模式平面模型

linux沒有實模式的遺留問題存在,自從2023年出現以來,它一直執行在保護模式之下。

可以為linux和window nt以後的作業系統編寫保護模式下的匯程式設計序。

為windows編寫保護模式程式最簡單的方式是建立控制台程式(console),它是文字模式程式,執行在windows的控制台文字介面下。windows的控制台應用程式使用的是保護模式平面模型。

linux預設的是文字控制台程式,使用的也是保護模式平面模型。

保護模式平面模型下,程式看到的記憶體位址是0~(4g-1),每個位址都是乙個32bit的量,通用暫存器的大小是32bit,所以乙個通用暫存器可以指向4g記憶體空間中的任意位置,ip/eip暫存器的大小也是32bit,所以它可以指向4g記憶體中任意位置的機器指令。

段暫存器依然存在,但是它們以一種完全不同的方式工作。

段暫存器是作業系統的一部分,在幾乎多有情況下,使用者(程式設計師)不能直接操作段暫存器。

段暫存器的現在的任務是定義4g的記憶體空間出現在物理記憶體或者虛擬記憶體的什麼位置。

對於32位cpu而言,它的暫存器能夠定址的最大範圍是0~4g,如果計算機擁有超過4g的記憶體空間,則作業系統必須指定使用哪部分空間作為4g的記憶體空間。

虛擬記憶體是乙個系統,它可以將乙個更大的記憶體空間對映到磁碟等儲存介質上。

在得到的4g記憶體中,並非全部的4g的空間都是可以供使用者使用的,在4g記憶體空間中,作業系統使用的記憶體部分,對於非作業系統的應用程式而言是透明的,不可見的!即該部分被保護起來了!

在實模式平面模型中,使用者程式可見作業系統交給它的全部的64k記憶體

在保護模式平面模型中,使用者程式可見作業系統交給它的4g記憶體中的一部分

保護模型下不能做的事情

視訊記憶體對映的開始位址是0b00:0,兩個位元組一組,第乙個位元組表示ascii編碼,第二個位元組表示文字屬性(顏色、背景、下劃線等)

【現在】

1、在記憶體中建立乙個緩衝取,然後告訴linux將它當作視訊記憶體來使用(移植早期dos程式可用的方法)。

直接訪問埠硬體

直接呼叫bios

裝置的基本輸入輸出管理系統

64位長模式

x86-64體系結構定義了三個模式:實模式、保護模式、長模式。

【實模式】是一種相容模式,它使cpu可以執行舊的實模式作業系統和軟體,支援實模式平面模型和實模式段模型

【保護模式】是一種相容模式,它使cpu可以執行32位的作業系統、軟體、驅動程式

【長模式】是實64位模式,當cpu在長模式下時,所有的暫存器的寬度都是64bit。

所有在32位下可用的暫存器依然存在,並且被擴充套件為64bit,64bit版的暫存器以r開頭,rax,rbx,rcs,rdx等等。

64bit新新增了8個全新的64bit通用暫存器(它們沒有在32位中出現),它們被命名為r8,r9,r10,r11,r12,r13,r14,r15

64bit增加了8個128bit的sse暫存器(ia-32原先有8個sse暫存器),這樣64bit總共有16個sse暫存器。

彙編通用程式設計

程式功能 在指定的位置,用指定的顏色,顯示乙個用0結束的字串.引數 dh 行號 dl 列號 cl 顏色 注意本程式會有暫存器衝突問題,所以我的程式比較囉嗦,如果有高人望指點一二 assume cs code,ds data data segment db welcome to masm 0 data...

彙編顏色程式設計

彙編顏色程式設計 80 25彩色字元模式顯示緩衝區 顯示緩衝區分為8頁,每頁4kb 4000b 顯示器可以顯示任意一頁的內容,在每一頁的顯示緩衝區中 偏移000 09f對應顯示器上的第一行 80個字元佔160個位元組 偏移0a0 13f對應顯示器上的第2行 偏移014 1df對應顯示器上的第3行 偏...

彙編程式設計簡介

如今需要用彙編寫東西的場合是越來越少了,除了bootloader之類的應用,就是對 片斷進行優化,再有就是反向工程了。而真正要能在現代系統上玩轉彙編,需要對cpu架構 計算機結構 作業系統 工具鏈都有深入的了解,是非常有挑戰的。講的時候展示了 rockplayer 內部的彙編優化情況,順便也滿足了一...