2011年5月22日 星期日

MASM_7

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

日期 : Tue May 14, 12:12                                                      
來自 : Jerry Cls                                               39:40/103
給   : All                                
標題 : ASM7                                                                 
--------------------------------------------------------------------------------

@TID: FastEcho 1.40 17014


※  現在,我們來剖析一個更見彈性的程式:可以由鍵盤輸入任意
  字串,然後再忠實地顯示一次。
※  請將存在磁碟中的程式 MIRROR.COM 載入並執行。
1.請輸入 NMIRROR.COM        3.請輸入 G
2.請輸入 L                  4.請輸入 THIS IS MY PROGRAM$

※  提供緩衝式鍵盤輸入:DOS 的 0Ah 號函數服務。
※  輸入:AH=A    DS:DX = 緩衝區位址
※  執行:INT 21  結果:鍵盤字元存於緩衝區內
※  緩衝區實際上就是一系列的記憶位置,其大小由 db 所定義。

※  本程式 db 20 指示 DEBUG 保留 20h 個未用的記憶體位置供
  緩衝區使用,並將值 20h 存入第一個位元組(116)中。
※  當您輸入字串並按 Enter 鍵後,DOS 的 0Ah 號功能會將真正
  輸入的字元個數存第二個位元組(117)中。

1FED:0100   MOV     DX,0116
1FED:0103   MOV     AH,0A
1FED:0105   INT     21
1FED:0107   MOV     DL,0A
1FED:0109   MOV     AH,02
1FED:010B   INT     21
1FED:010D   MOV     DX,0118
1FED:0110   MOV     AH,09
1FED:0112   INT     21
1FED:0114   INT     20
1FED:0116   DB      20

※  由於緩衝式鍵盤輸入功能 Ah 在每個字串最後都會印一個歸位
  字元(由 Enter 鍵產生),使得游標會自動回到輸入列的最
  前端。

※  為了使螢幕映射輸出的字串不會蓋掉原來輸入的字串,所以利
  用功能 2h 列印一個換列字元(OAh),使得游標移到下一列的
  的最前端。

※  列印字串功能 9h 的 DX 暫存器要保存字串的啟始位置。
※  牢記:9h 功能只有遇到 $ 符號時才會停止輸出字元,因此您
  打入字串的最後必須加上 $ 符號,否則 9h 功能會繼續將記憶
  體中的無用資料胡亂地列印出來。

※ 『組譯器,Assembler』可將符號指令轉換成機器語言。
※ 『機器語言』是真正存在 PC 記憶體,而由 8088 處理機執行
  的二進位數值。
※  由二進位數值組成的程式,能以 COM 的檔案形式存於磁片上。
  符號指令                              記憶體
    MOV AH,2              DEBUG
    INT 21       輸入            輸出
    INT 20              (A命令)
(打入 DEBUG 中)                          目的碼

※  撰寫一個較長的組合語言程式時,若我們要逐一翻閱 8088
  參考手冊,將每個指令組合成目的碼,則您將不會覺得學習
  組合語言是件有意義的事。
※  然而,機器語言程式規劃的過程中,最無法和人類的天份配
  合,但卻又是與電腦最能配合的階段,便是『組合』本身。
※  『工欲善其事,必先利其器』,Micrsoft MASM 是 PC 最佳
  的組譯器,可自動將組合語言轉換為機器語言。

※  與其說 DEBUG 類似組譯器,倒不如說它較類似直譯器更貼切。
※  DEBUG 的 A 命令可將每一個符號指令,逐一轉成機器語言,
  存於記憶體中,且立刻執行。
※  真正組譯器(MASM)的運作是利用文書處理程式(如:EDLIN
  、PE Ⅱ等)將符號指令建成一個完全獨立且附屬檔名為 .ASM
  的文字檔案。
※  此文字檔案又稱『原始碼檔案』,是 MASM 程式的輸入部分。
   輸入       MASM       輸出
    SMILE.ASM            SMILE.OBJ

※  MASM 將輸入的 ASM 檔案,組譯且建成一個 .OBJ 的磁碟檔案
  ,稱為『目的碼檔案,OBJet』。
※  OBJ 檔案僅包含有關程式各部份要載入何處及如何與其他程式
  合併的各項資訊,無法直接載入記憶體執行。

※ 『鏈結程式,LINK』可幫我們將 OBJ 檔案轉換成可載入記憶體
  執行(EXEcute)的 EXE 檔案。
※  您還可以用『EXE2BIN,EXEcute TO BINary』檔案,將 EXE 檔
  案轉成 COM (COMmand)檔案。
※  DOS 的 COMMAND.COM 在執行外部命令時,是直接在適當的磁片
  中尋找一個命令處置檔,並加以執行。
※  命令處置檔有三類,以其附屬檔名來區別;COMMAND.COM 每次
  都是以固定的順序尋找,其優先順序為 COM → EXE → BAT。

※  COM 檔案只由程式所需的二進位數值所組成,是儲存程式最簡
  單的方式,不但佔用的記憶體最少,而且載入速度最快。
※  EXE 檔案除了二進位數值外,同時還包含一個由檔案有關的各
  種資訊所組成的『檔頭,Header』,所以檔案較大。
※  COM 檔案可直接利用 INT 20 返回 DEBUG,而 EXE 檔案則需要
  較複雜的返回程序。
※  載入 COM 檔案時,無法與其他檔案鍵結起來,所以不能產生
  記憶體空間超過 64K 的 COM 檔案;而 EXE 檔案則較易利用不
  同的記憶段來執行不同的功能,所以其大小可超過 64K Bytes。
※  由於初學的程式不大,且為了完全了解所有的過程,所以我們
  以 COM 檔案為第一個組合語言程式的形式。 


--- SuperBBS 1.17 (Reg)
 * Origin: BEAR BBS OPEN:24HR  TEL : (02)377-6746 (39:40/103)
PATH: 40/103 100

沒有留言:

張貼留言