信區 : 破解網-破解技術討論區
日期 : Wed May 15, 12:27
來自 : Jerry Cls 39:40/103
給 : All
標題 : asm11
--------------------------------------------------------------------------------
@TID: FastEcho 1.40 17014
crlf segment
assume cs:crlf
mov dl,0dh ;carriage return
mov ah,2 ;display function
int 21h ;call DOS
mov dl,0ah ;linefeed
mov ah,2 ;display function
int 21h ;call DOS
int 20 ;return from crlf
crlf ends
end
※ 現在我們就可以將 BINIHEX 、 DECIBIN 及 CRLF 等模組合併
成一個完整的大程式了。
※ 首先,我們必須將這三個模組程式改成『程序,Procedure』,
然後,再寫一段簡短的小程式來輪流呼叫每一個程序。
※ 所謂程序是由一群組合語言指令集合而成,通常用於執行特定
的、定義完整的工作,在電腦語言中,常被稱做『副程式』。
crlf proc near
mov dl,0dh
mov ah,2
int 21h
mov dl,0ah
mov ah,2
int 21h
ret
crlf endp
※ 類似 SEGMENT 與 ENDS 虛擬指令,PROC 與 ENDP 成對出現,
用來識別並定義一個程序。
※ 其實,PROC 真正的作用只是告訴組譯器:所呼叫的程序是
屬於近程(NEAR)或遠程(FAR)。
※ 一般的程式是由 DEBUG 直接呼叫的,所以用 INT 20 返回,
對於用 CALL 指令所呼叫的程序而言,則必須改用 RET 。
※ 返回指令 RET 會把控制權轉移到堆疊頂端所指定的位址,而
該位址是由呼叫此程序的 CALL 指令所放入的。
;************************************************
decihex segment ;DECIHEX -- Main Program
assume cs:decihex
repeat: call decibin ;keyboard to binary
call crlf ;print cr and lf
call binihex ;binary to screen
call crlf ;print cr and lf
jmp repeat ;do it again
;------------------------------------------------
decibin proc near ;PROCEDURE TO CONVERT DEC
............ ; ON KEYBD TO BINARY AND
decibin endp ; LEFT RESULT IN BX
;------------------------------------------------
binihex proc near ;PROCEDURE TO CONVERT BIN
............ ; NUMBER IN BX TO HEX ON
binihex endp ; CONSOLE SCREEN
;------------------------------------------------
crlf proc near ;PROCEDURE TO PRINT
............ ; CARRIAGE RETURN
endp ; AND LINEFEED
;------------------------------------------------
decihex ends
;************************************************
end
※ CALL 指令用來呼叫一個副程式(程序),並將控制權轉移到
運算元內的副程式位址,同時將 CALL 的下一指令位址定為
『返回位址』,並存入堆疊中。
※ CALL 可分為近程(NEAR)及遠程(FAR)兩種:
1.NEAR:IP 暫存器的內容被放入堆疊中。
用於程式與程序在同一記憶區段中。
2.FAR :CS 暫存器與 IP 暫存器的內容依順序存入堆疊中。
用於程式與程序在不同一記憶區段中。
※ 探討了組合語言程式設計的較佳流程,希望能奠定您
獨立設計的基礎,而如何利用模組化的觀念來設計程式,則
全仰賴您平時苦練、多看的苦功,只要再多參考相關的書籍
,您必可從範例中獲取的更多的應用技巧,祝您成功。
THE END
全文完
--- SuperBBS 1.17 (Reg)
* Origin: BEAR BBS OPEN:24HR TEL : (02)377-6746 (39:40/103)
PATH: 40/103 100
沒有留言:
張貼留言