iT邦幫忙

DAY 16
2

freedos bochs 16位元 組合語言…等系列 第 16

組合語言熱身:debug之F,SCASB 和 SCASW , 找尋字串中含某特定字元(byte,word)

  • 分享至 

  • xImage
  •  

實作練習,
實作前輩小木偶僅說明未實作的例子。

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-4A7F

D:\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安裝上簡單太多了。


上一篇
組合語言熱身:debug之E ,CMPSB 和 CMPSW ,字串的比較及ZF零旗標。
下一篇
組合語言熱身:debug之10,SHR 和AND指令
系列文
freedos bochs 16位元 組合語言…等17
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

2 則留言

0
ted99tw
iT邦高手 1 級 ‧ 2012-10-09 22:06:43

沙發

之前在學校念組語時,比較多的就是怎麼教怎麼key,完全沒能體會組語之美,這次鐵人賽期能follow Tim大之文,也算是重溫舊夢,有種恍如隔世之感。

0
timloo
iT邦研究生 2 級 ‧ 2012-10-10 00:50:33

我完全沒有印象,但我曾經在校修過這門課。

最近,有關OS比較大的新聞,

就是GOOGLE 不讓ACER 做阿里雲手機,後來認真看一下,其實對ANDROID的改變並不大,
難怪LINUX 核心組織,覺得GOOGLE 背離LINUX的精神。

阿里雲。唉。

中國人,該有自己的OS。

之前看有篇文章,學弟妺訪問宏達電的學長姐,有提到,曾經也想自己弄一套OS,技術上不是問題,
純是市場上的考量,而沒用自己的OS。

MOZILLA基金會的B2G專案,顯然是對ANDROID的下一波挑戰。

明天早起再一篇,這樣寫法,有點累。

果然太陽兄,真是強人啊!!

我要留言

立即登入留言