2011年5月22日 星期日

MASM_2

信區 : 破解網-破解技術討論區

日期 : 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

沒有留言:

張貼留言