2011年5月22日 星期日

MASM_6

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

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

@TID: FastEcho 1.40 17014


※  當我們在寫組合語言程式的時候,通常不會直接將十六進位的
  位元組(機器碼)放入記憶體中,而是打入一串『助憶符號』
  (Mnemonic Symbols),這些符號比十六進位數更容易記住。
※  助憶符號是以2或3個字元的名稱來代表某個組合語言指令
  ,以告訴微處理機應執行何種運算。
※  也就是說,助憶符號所構成的組合語言是為人類而設計的,
  而機器語言是針對 PC 的特性而設計的。
※  事實上,8088 微處理機真正所能讀取和了解的並非十六進位
  數值,而是二進位數或是位元形式;十六進位數只是使人類
  更易了解二進位數字的一種表示方式而已。

※  還記得 ASCII 碼?現在,我們來剖析一個可以將所有的 ASCII
  碼顯示在螢幕上的程式。
※  請將存在磁碟中的程式 ASCII.COM 載入並執行。
1.請輸入 DEBUG ASCII.COM
2.請輸入 U100,10E

1FED:0100 B90001        MOV     CX,0100
1FED:0103 B200          MOV     DL,00
1FED:0105 B402          MOV     AH,02
1FED:0107 CD21          INT     21
1FED:0109 FEC2          INC     DL
1FED:010B E2F8          LOOP    0105
1FED:010D CD20          INT     20
-

※  INC:遞增指令,每次將資料暫存器 DL 內的數值加 1 。
※  LOOP:迴圈指令,將執行次數放入計數暫存器 CX 中,每執行
  一次 LOOP 指令,CX 的內容值減 1 ,並跳回迴圈的開頭位址
(105),直到 CX 為 0 。
1.請輸入 G

※  當我們想在螢幕上任意地顯示字串(例如:開機時電腦會向您
  問侯),則可以使用 DOS 的 9H 號函數服務常式。
※  請輸入下列程式,存入磁碟(HALLO.COM)中,並執行看看:
1.請輸入 A100                    
2.請輸入 MOV DX,109              
3.請輸入 MOV AH,9
4.請輸入 INT 21
5.請輸入 INT 20
6.請輸入 DB 'HOW ARE YOU, SU$'

※  列印字串功能:DOS 的 09h 號函數服務。
※  輸入:AH=9    DS:DX = 字串的啟始位址
※  執行:INT 21  結果:字串顯示在螢幕上
DX:字串的偏移位址,即實際的啟始位址。
DS:字串的段位址,DEBUG 會自動檢查其值,目前不必管它。

※  在組合語言中,有兩種不同的指令:
1.正規指令:如 MOV 等,是屬於微處理機的指令,用來告訴 8088
       微處理機在程式執行時應做些什麼,所以它會以運
       算碼(OP-code)的方式存入記憶體中。

2.虛擬指令:如 DB 等,是屬於 DEBUG 等組譯器的指令,用來
       告訴組譯器在組譯程式時應做些什麼。
※  DB(Define Byte)指令用來告訴 DEBUG 將其後面單引號內的
  所有字元對應的位元組(ASCII 碼)放入記憶體中。

※  使用 9H 功能列印的字串必須以 $ 符號結尾。
※  想查看 DB 虛擬指令將那些位元組放入記憶體時,使用U命令
  並沒有太大的用處,此時改用D命令則可得到較佳的效果。
5.請輸入 U100,118
6.請輸入 D100,17F

1FED:0100 BA0901        MOV     DX,0109
1FED:0103 B409          MOV     AH,09
1FED:0105 CD21          INT     21
1FED:0107 CD20          INT     20
1FED:0109 48            DEC     AX
1FED:010A 6F            DB      6F
1FED:010B 7720          JA      012D
1FED:010D 61            DB      61
1FED:010E 7265          JB      0175
1FED:0110 20796F        AND     [BX+DI+6F],BH
1FED:0113 752C          JNZ     0141
1FED:0115 205355        AND     [BP+DI+55],DL
1FED:0118 2400          AND     AL,00
-

1FED:0100  BA 09 01 B4 09 CD 21 CD-20 48 6F 77 20 61 72 65  ......!. How are
1FED:0110  20 79 6F 75 2C 20 53 55-24 00 00 00 00 00 00 00   you, SU$.......
1FED:0120  00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00  ................
1FED:0130  00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00  ................
1FED:0140  00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00  ................
1FED:0150  00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00  ................
1FED:0160  00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00  ................
1FED:0170  00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00  ................
1FED- 


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

沒有留言:

張貼留言