信區 : 破解網-破解技術討論區
日期 : Tue May 14, 09:29
來自 : Jerry Cls 39:40/103
給 : All
標題 : asm2
--------------------------------------------------------------------------------
@TID: FastEcho 1.40 17014
----------------------------------------------------------------
※ 在遠古時代,人類就懂得使用『符號』來表示物體的數量。
※ 起初,這些符號只是口述的。
※ 例如:一頭長毛象、二塊石頭、三個人 ...。
※ 後來逐漸演化出較進步的數字系統,如: 結繩、畫線 ...。
※ 隨著人類文明的演進,人們所要計算的數量愈來愈大,發現
這些方法不太方便。
※ 羅馬人嘗試以單獨的符號來表示 1 以外的數值,例如:
V代表 5,X 代表 10 等。
※ 雖然後來證明仍不切實際,但已為近代的數字系統,
開啟了新的方向。
※ 隨著經驗的累積,阿拉伯人歸納出了一些基本原則:
1.某個數值以下的數以單獨的符號表示。
2.超過該數值時,則在另一行重新開始。
3.使用一個特殊符號來表示『空』行。
※ 於是,阿拉伯人以人類的手指數,為分行的基準數值,創
造出了大家所熟悉的阿拉伯數字 0,1,2,3,4,5,6,7,8,9。
※ 在組合語言中,我們常在數值後面加上『d』,表示其為
十進位(Decimal)數。
※ 由於人類有十根手指,所以藉由扳手指的便利,我們逐漸
習慣了十進位的數字系統。
※ 上帝以其形體創造人類,同樣的,人類也以自己的形體付與
電腦生命。
※ 電腦本身也具有實體軀殼與思考的靈魂。
※ 電腦的軀殼就是我們常見的『硬體』,包含五大單元:
算術邏輯單元
輸入單元 控制單元 輸出單元
記憶單元
※ 電腦的靈魂就是 MS-DOS,用來控制這五大部門的運作。
※ 『 組合語言 』就是用來撰寫 MS-DOS 的基本語言。
※ 『中央處理單元,CPU』主要是指微處理機,是可以執行
電腦所有算術/邏輯運算與基本 I/O 控制功能的單一晶片。
※ 組合語言與特定的微處理機晶片之間的關係牢不可分,也就
是說,不同的微處理機其組合語言的指令語法亦不相同。
※ 個人電腦由 1981 年推出至今,其主要微處理機之發展過程
為: 8088 → 80286 → 80386 → 80486。
※ 愈後面出來的微處理機,其功能愈強,指令亦愈複雜,但其
必能包含前面微處理機的功能。
※ 為了確保您的組合語言程式可以適用於各種機型,所以仍以
使用 8088 的組合語言,其相容性最佳。
※ 『 組合語言入門 』亦以解說 8088 組合語言為主。
※ 像人類的腦細胞一樣,電腦使用IC(內含無數個電晶體)
當『 主記憶體』 。
※ 記憶體是電腦運作中的關鍵成分,也是電腦在工作當中儲存
資訊的地方。
※ 主記憶體的組織有如許多可存放數值的儲存位置,各以一個
『位址』來識別。
※ 個人電腦所使用的儲存位置是由『8 個位元』所組成,稱作
『位元組』,是個大小恰好可以放進一個字元的資訊單位。
※ 以一個組合語言程式設計師的觀念而言,『記憶體』就是電
腦內部可以用來存放『位元組』的地方。
※ 每一記憶體位置都有一個用來定位的位址。
※ 位址是一個數字,從零開始,往最高位址增加。
※ 由於位址是數字,電腦便能用其算術能力來計算與處理記憶
體位置,而且各種電腦的設計都有其位址大小的限制。
0100 10010000
0101 00000010
0102 11000011
0103 00000000
位址 有效的資料
※ 8088 系列的個人電腦採開放式的硬體架構,以『擴充槽』
與其他週邊裝置互通訊息。
※ 每個擴充槽上有 62 條通道(I/O channel),其中分配 20 條
給記憶體用。
※ 亦即,在 8088 中,位址有 20 個位元長,所以微處理機擁
有達2 的定址空間,相當於1M(1024K,1K=1024)Byte
,這也是 MS-DOS 的有效控制範圍。
※ 大多數 8088 能做的算術都限於處理 16 位元的字元,其範
圍從2 ~2 ,即 0 到 64K。
※ 所以,必須用『分段式定址』的觀念才能控制整個位址。
※ 完整的 20 位元位址可分成兩部份,皆由 16 個位元組成:
1.區段部分(Segment):原來 16 個位元後面加上四個二進位0
(一個 16 進位的0),變成 20 個位元
,可設定至 1 M 中任何一個 64K 區段。
2.相對部份 (Offect):直接使用 16 個位元來接著區段部份,
指向該區段中的任何一個位址。
※ 實際上,區段部份常成為相對部份能夠定址 64K 工作區域
的一個『基礎位址』。
※ 在組合語言中,您常會看到分段式定址寫成:『2222:3333』
,其實際的 20 位元位址值為:
※ 暫存器(Register):是電腦內部的一個實體元件,有點像
記憶體的一個位址;不過,由於它是微處理機晶片的一部分
,而不是記憶晶片的一部分,所以在暫存器之間的資料傳送
非常快速。
※ 8088 指令還可以在暫存器上做許多在記憶位置上無法做到
的事,例如:
1.可將暫存器內的資料執行算術及邏輯運算。
2.存於暫存器內的位址可用來指向記憶體的某個位置。
3.暫存器可以用來讀寫資料到電腦的週邊設備。
※ 8088 有 8 個 8 位元的『一般暫存器』,分別是:
AH 與 AL,BH 與 BL,CH 與 CL,DH 與 DL。
※ 這些 8 位元暫存器可配對組成 16 位元暫存器:
AH AL = AX 『累加暫存器』常用於運算。
BH BL = BX 『基底暫存器』常用於位址索引。
CH CL = CX 『計數暫存器』常用於計數。
DH DL = DX 『資料暫存器』常用於資料傳遞。
※ 為了運用所有的位址,8088 也設定了四個『區段暫存器』,
專門用來保存位址的區段部份:
CS 用於設定程式碼區段(Code Segment)的位址。
DS 用於設定資料區段(Data Segment)的位址。
SS 用於設定堆疊區段(Stack Segment)的位址。
ES 用於設定額外區段(Extra Segment)的位址。
※ 當一個程式要執行時,DOS 就要來決定程式碼、資料和堆疊
各要用到那些位置,而設定區段暫存器 CS,DS,SS 來指向
這些起始位置。
※ 通常程式語言處理機都是將『資料區段暫存器-DS』固定,
而根據需要修改『程式碼區段暫存器-CS』。
※ 所以,DOS 和『程式語言處理機』可以在可定址資料空間小
於 64K 的情況下,讓程式可寫成任意大小。
※ 一般而言,BASIC 直譯器(Interpreter)就是程式處理機,
而您所認為的 BASIC 程式,其實只是其資料的一部分。
※ 所以,您的程式和其資料組合起來的大小,限制在 DS 所同
時涵蓋的 64K 內。
※ 這就是一般 BASIC 程式和 COM 檔案不得大於 64K 的原因。
※ 8088 以記憶體做為工作場所,卻使用暫存器做為草稿紙,以
加速工作。
※ 除了前面所提的暫存器外,還有一些特殊功能的暫存器:
IP 指令指標(Intruction Pointer)暫存器
與 CS 配合使用,可追蹤程式的執行過程。
SP 堆疊指標(Stack Pointer)暫存器
與 SS 配合使用,可指向目前的堆疊位置。
BP 基礎指標(Base Pointer)暫存器
可用作 SS 區段的一個相對基礎位置。
SI 來源索引(Source Index)暫存器
可用來提供相對於 DS 區段之來源指標 。
DI 目的索引(Destination Index)暫存器
可用來提供相對於 ES 區段之目的指標 。
--- SuperBBS 1.17 (Reg)
* Origin: BEAR BBS OPEN:24HR TEL : (02)377-6746 (39:40/103)
PATH: 40/103 100
沒有留言:
張貼留言