信區 : 破解網-破解技術討論區
日期 : Tue May 14, 09:37
來自 : Jerry Cls 39:40/103
給 : All
標題 : asm5
--------------------------------------------------------------------------------
@TID: FastEcho 1.40 17014
※ 想不想改變記憶體的內容?最簡單的方法就是使用F命令。
※ F命令可在記憶體中填入(Fill)一個特定的十六進位數。
※ 語法:『F<啟始位址> <結束位址> <填入值>』
1.首先,請輸入 F100 17F 00
2.然後,再輸入 D100
1FED:0100 5F 5E 5D C2 02 00 01 00-00 00 0C 00 0D 00 0B 00 _^].............
1FED:0110 0F 00 10 00 0E 00 BA 36-15 B9 04 00 E9 E5 F2 50 .......6.......P
1FED:0120 B8 01 00 50 2B C0 50 E8-91 55 0B C0 79 08 B4 40 ...P+.P..U..y..@
1FED:0130 E8 A7 2D F9 EB 04 E8 10-06 F8 C3 E8 89 FB 74 01 ..-...........t.
1FED:0140 C3 B8 71 00 E9 61 2E A9-10 00 75 1A E8 78 FB BA ..q..a....u..x..
1FED:0150 00 00 C3 A1 A0 30 A3 86-30 B8 0D 00 E9 1C 2E 83 .....0..0.......
1FED:0160 3E 12 2F 3C 73 ED 57 FF-36 12 2F B8 27 00 E8 D3 >./<s.W.6./.'...
1FED:0170 0D BF 25 00 74 0D 2B FF-B8 C2 00 E8 C6 0D 75 06 ..%.t.+.......u.
-F100 17F 00
-D100
1FED:0100 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................
1FED:0110 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................
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 ................
3.記憶位置 100 到 17F 現在都已填入 00,這正是F命令所指定
的。
※ E命令是用來輸入(Enter)一串位元組的資料到記憶體中,
以構成程式。
※ 要將此程式插入記憶體中,只要在E命令後面跟著程式所要
存放的位址即可。
1.首先,請輸入 E100
2.然後,再輸入 B2 01 B4 02 CD 21 CD 20
3.現在您已將程式放入記憶體中了,請輸入 G
4.畫面上將出現此程式執行的結果。
Program terminated normally
※ 由於機器碼是給電腦看的,當然不適合用來寫程式。
※ 我們可以使用組合語言指令直接來編寫程式,A命令就是用來
將組合語言指令『組譯,Assemble』成十六進位數值的機器碼。
※ 以 DEBUG 編寫的程式一定要由位址 100h 開始才有效。
1.請依序輸入 A100
2.請依序輸入 MOV DL,1
3.請依序輸入 MOV AH,2
4.請依序輸入 INT 21
5.請依序輸入 INT 20
6.請按 Enter 鍵
7.現在您已經將組合語言程式放入記憶體中了,請輸入 G
8.畫面上所出現的結果將與用E命令編寫的程式一樣。
Program terminated normally
9.請輸入 D100
10.位址 100 到 107 就是程式的內容,與E編寫的機器碼一樣。
1FED:0100 B2 01 B4 02 CD 21 CD 20-00 00 00 00 00 00 00 00 .....!. ........
1FED:0110 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................
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 ................
※ 我們可以用U命令將十六進位的機器碼反組譯(Unassemble)
成組合語言指令,語法:『U<啟始位址>,<終止位址>』
※ 您將發現:每一行右邊的組合語言指令就是被組譯成中間相
對的機器碼,而 8088 實際上就是以機器碼來執行程式。
1.請輸入 U100,106
1FED:0100 B201 MOV DL,01
1FED:0102 B402 MOV AH,02
1FED:0104 CD21 INT 21
1FED:0106 CD20 INT 20
MOV DL,01
MOV AH,02
INT 21
INT 20
※ MOV A,B 將 B 的內容移(MOVe)到 A 中。
※ MOV DL,01 將數值 01h 移入 DL 暫存器
※ MOV AH,01 將數值 01h 移入 DL 暫存器
※ DOS 功能服務是存在於 ROM-BIOS 與 IO.SYS 內的輸出入常式
,我們可以利用 INT 21 來呼叫,其過程為:
1.中斷要求先被送到 MSDOS.SYS 部份
2.依 AH 的值,轉送到 IO.SYS 或 ROM-BIOS 中的適當常式。
※ INT:呼叫由中斷(Interrupt)向量所指的常式。
※ 顯示器輸出功能:DOS 的 02h 號函數服務。
※ 輸入:AH=2 DL=字元之對應數值
※ 執行:INT 21 結果:字元顯示在螢幕上
※ INT 21:DOS 的中斷服務,由函數呼叫使用,程式可透過此
中斷來呼叫所有的 DOS 函數服務常式。
※ INT 20: DOS 的中斷服務,用來終止程式作業,使程式執行後,
將控制權交回給 DEBUG,並出現 Program terminated normally 訊息。
※ DEBUG 中可以用R命令來查看 8088 中的暫存器(Register)
,也可以用來改變暫存器的內容。
※ 您還記得每個暫存器所代表的意義嗎?
※ 請注意 IP 暫存器,它保存了目前將執行的指令位址。
1.請輸入 R
AX=0000 BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000
DS=1FED ES=1FED SS=1FED CS=1FED IP=0100 NV UP EI PL NZ NA PO NC
1FED:0100 B201 MOV DL,01
-
1.當程式由 100 開始執行,且以 INT 20 指令結束時,DEBUG 會
自動將 IP 的內容更新設定為 100。
※ 當您要將此程式做成一個獨立的外部程式,以便在 DOS 的提
示符號下隨時都可以執行,則必須用N命令對該程式命名。
※ 程式檔案一定要為 COM ,否則下次無法以 DEBUG 載入。
※ 語法:N<程式名稱>.COM
1.請輸入 NSMILE.COM
※ 接著,您必須告訴 DEBUG 此程式有多長:程式從 100 開始到
106,所以實際佔用 7 個位元組。
※ 我們利用 BX 暫存器 存放此值高位元組部分,而以 CX 暫存
器存放此值的低位元組部分。
2.請輸入 RBX (查看 BX 暫存器的內容)
3.因 BX 已設定為 0,請按 Enter 鍵
4.請輸入 RCX (查看 CX 暫存器的內容)
5.請輸入 7 (程式的位元組個數)
※ 最後,請用W命令將該程式寫入(Write)磁片中。
6.請輸入 W
待續!!!!!
--- SuperBBS 1.17 (Reg)
* Origin: BEAR BBS OPEN:24HR TEL : (02)377-6746 (39:40/103)
PATH: 40/103 100
沒有留言:
張貼留言