信區 : 破解網-破解技術討論區
日期 : 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
沒有留言:
張貼留言