實作練習,
實作前輩小木偶僅說明未實作的例子。
SCASB 和 SCASW 指令
這是 scan string 的意思,中文是掃描字串,它的作用是在一個字串中找到特定的位元組或字組。而這特定的位元組或字組放在 AL 或 AX 暫存器中,被掃描字串的長度位於 CX,字串位址位於 ES:DI 所指的位址。同樣也可以用方向旗標來指定往高位址或低位址掃描。同樣的 SCASB 或 SCASW 也可以用 REPE 來搭配使用。但是最常用的還是和 PRENE 搭配,它的意思是 repeat while not equal,意思是如果不相等則重複,試想當你在一個英文句子中,尋找英文字母『a』有沒有出現,直覺的方法是不是先看第一個字母,如果不是再看第二個字母。此處最常與 SCASB 搭配的 REPNE 也是如此,如果前面的字不相等,才找後面的字,所以用 REPNE ,而少用 REPE。您也可以用 REPNZ 來代替 REPNE。
說實在的,如果不加上實作,看前輩的文字,很難理解其中的一些細節,
更早之前,沒有feeling時,連實作也談不上。
這裏提到dosbox, 我的工作pc是acer vertion,win7 32位元,
去dosbox的官網,下載,安裝順利。
預設沒有debug這個程式。同事幫我找了一什麼都有的masm組語包,剛好裏面就有,
假設我放在D:\DOSML
D:\>cd dosml
D:\DOSML>dir
磁碟區 D 中的磁碟是 新增磁碟區
磁碟區序號: CCD3-4A7FD:\DOSML 的目錄
2012/09/21 上午 10:28 <DIR> .
2012/09/21 上午 10:28 <DIR> ..
2012/09/20 下午 02:43 <DIR> ASM
2012/09/20 下午 02:43 <DIR> BIN
2012/09/20 下午 02:43 <DIR> CV
2000/03/31 上午 11:03 838 CV.BAT
1991/04/09 上午 12:00 20,634 DEBUG.EXE
2012/09/20 下午 02:43 <DIR> INC
2012/09/20 下午 02:43 <DIR> LIB
2000/03/31 下午 01:05 707 LIB.BAT
2000/06/24 下午 10:53 595 ML.BAT
4 個檔案 22,774 位元組
7 個目錄 417,759,268,864 位元組可用
那在dosbox下,把此目錄mount 進來,
可下: mount c: d:\dosml, 意思是把它掛載進dosbox裏的c:,
這時候,約可理解到,**dosbox的c:,不同於外面win7的c:**這樣就有了
debug.
筆者還蠻感動的,因為筆者小時候在台東長大,電腦都是在學校上課才看到,家裏沒有電腦,
更沒有聽過軒轅劍(網路上dosbox的分享,都是裝軒轅劍)。
接著做一下今天的練習:
error的地方,可看出debug裏還有語法檢查。
單步執行看效果,
比較值得注意的是,
我們在hello world找o這個字元(ascii code裏的o是6f),
然後它一次就找到,單步執行裏沒有repeat 重覆5次的效果,一步到位,只能從di裏
看到,從300到305,找到,就不再往下找了。
小結:
之前網友有分享一萬小時(還是10萬小時)學習成專家,
要成專家,練習是免不掉的。這些筆者找的習題,
常常,做起來的時候,並不是十拿九穩,畢竟不是很熟練,
網友如果有windows的pc,又想重溫舊夢,dosbox顯然是不錯的選擇。
它和本機目錄檔案的掛載,做的非常方便。練組語很friendly,
用熟悉的編輯器,把code編好,mount(掛載)進dosbox,編譯,看結果。
怪了,高工高職資工系的教學,教師並不是這樣設環境,覺得有點可惜。
總要因地制宜一下。
平心而論,dosbox比freedos安裝上簡單太多了。
之前在學校念組語時,比較多的就是怎麼教怎麼key,完全沒能體會組語之美,這次鐵人賽期能follow Tim大之文,也算是重溫舊夢,有種恍如隔世之感。
我完全沒有印象,但我曾經在校修過這門課。
最近,有關OS比較大的新聞,
就是GOOGLE 不讓ACER 做阿里雲手機,後來認真看一下,其實對ANDROID的改變並不大,
難怪LINUX 核心組織,覺得GOOGLE 背離LINUX的精神。
阿里雲。唉。
中國人,該有自己的OS。
之前看有篇文章,學弟妺訪問宏達電的學長姐,有提到,曾經也想自己弄一套OS,技術上不是問題,
純是市場上的考量,而沒用自己的OS。
MOZILLA基金會的B2G專案,顯然是對ANDROID的下一波挑戰。
明天早起再一篇,這樣寫法,有點累。
果然太陽兄,真是強人啊!!