推 loveflames:你怎麼轉ASCII的 11/04 16:14
推 jason12308:轉ascii add 30h啊…… 11/04 20:44
→ ppttcc:我在tochar中加48到dl中轉成ASCII 11/04 20:46
推 loveflames:查了一下int 21h,show有覆蓋原本al的值 11/04 20:59
推 loveflames:一開始的dh是多少 11/04 21:17
→ ppttcc:我沒有設定dh值,是否要作歸零的動作? 11/04 21:56
推 loveflames:系統搞不好有給他初值,你會用debug看暫存器吧 11/04 21:58
→ ppttcc:在試的過程中有將ax歸零,其他暫存器則沒有 11/04 21:58
→ ppttcc:那我用debug r看看好了,剛才試了下,有無將dx清0,確實會有影 11/04 22:09
→ ppttcc:響,現在第一個字元正常了,後一個字元還要修正 11/04 22:10
推 loveflames:後一個字元的錯誤是因為int 11/04 22:13
→ ppttcc:trace後的結果是如同您說的,的確是int21h搞的鬼.而且SP似乎 11/04 23:22
→ ppttcc:最後回不去原來呼叫前的位址就中斷了... 11/04 23:23
→ ppttcc:跳躍似乎不在near的範圍? 11/04 23:25
推 loveflames:int是far jump 11/04 23:30
→ ppttcc:比較奇怪的是,我只用了int 21h的輸出功能,卻呼叫了一堆的函 11/04 23:33
→ ppttcc:式 11/04 23:34
推 loveflames:int有點像call,只是改成跳到ISR的位址 11/04 23:35
推 loveflames:然後ISR再呼叫其他函式 11/04 23:36
→ ppttcc:另一個比較奇怪的地方是,程式似乎沒有正常執行完就中斷 11/04 23:37
→ ppttcc:因為我沒有看到SP有回到最頂端 11/04 23:37
推 loveflames:沒執行到iret? 11/04 23:41
→ ppttcc:iret是什麼呢?離開debug前看到的指令是REPZ與一個db指令 11/04 23:54
推 loveflames:iret像副程式的ret,從ISR返回原來程式 11/04 23:56
→ ppttcc:所以我還是定義個變數比較保險... 11/05 00:07
→ loveflames:我想是debug.exe的問題,我用-t也無法返回 11/05 00:30