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