DOS 的 DEBUG, 載入大於 64K 的資料, 64k 以後的資料放到甚麼位置呢


short URL : http://wp.me/ph3BR-NM

最近又翻看這兩篇文章, 無他, 有問題要解決, 又不懂得要領, 當然是再看看人家寫好的文字資料

http://thestarman.pcministry.com/asm/debug/Segments.html
http://thestarman.pcministry.com/asm/debug/debug.htm

.

希望學到一招半式, 好讓將來有趨近武林高手見習生的機會

結果是, 一問天清浮朗月, 點案軸開見真招

答案是, 每超過64K, 下一段從 CS + 1000h : 0000 開始接續

nEO_IMG_over_64K_data_DOS_debug_displacement

下面這個是答案的來源, 在此再次感謝他的提點

http://delphi.ktop.com.tw/board.php?cid=169&fid=999&tid=104956

高手有他的秘笈部落格  http://aftcast.pixnet.net/blog

.

Q&A


Q-

相信這個問題很冷門 (在2013年)

其實是這樣的, 俺需要用 DOS 的 DEBUG 去載入並處理一段資料.
因為DOS 的限制, 處理的檔案必須是 64K以下, 所以超過64k 的資料, 在記憶體內怎樣放置是個迷
至少俺還沒有看到/看懂相關的資料

原來以為是會順延到下一個 CS+1:0000, 但是沒有把握. 做了以下試驗,

創建了3個檔案, 分別是
xiao.1   64K, 0000 寫入 "xiaolaba.1", FFF0-FFFF 寫入 16個 1, 例如, '1111111111111111'
xiao.2   64K, 0000 寫入 "xiaolaba.2", FFF0-FFFF 寫入 16個 2, 例如, '2222222222222222'
xiao.3   10 bytes, 0000 寫入 'xiaolaba.3'

然後用 copy /b xiao.1+xiao.2+xiao.3 xiao.bin
這樣就得到了檔案大小為 0x2000a 的檔案 xiao.bin
接著用 debug xiao.bin, 再來 L 0
的確看到 debug 載入 0x2000a bytes, 因為 bx=0002, cx=000a
在 CS:0000 也看到第一個 'xiaolaba.1', CS:fff0-ffff 也正確顯示 16個 '1'
但是後面的資料並沒有在 順延的 CS+1:0000 或是 DS+1:0000 出現
所以, 這個順延的假設並不成立

但是, 俺把這個載入的資料存檔到新的檔案, 例如,
n xiao.4
w 0

得到的檔案卻是和 xiao.bin 完全相同, 所以, 還是回到原點, 到底 DOS 的 DEBUG, 載入大於 64K 的資料, 64k 以後的資料放到甚麼位置呢..

請教後得到了一個實在的答案, 看了之後馬上驗證了一下這個方法, 的確就解決了問號, 雖然還不明白為什麼這樣, 但是暫時按圖索驥就好.

其實俺並不是要花時間寫病毒, 害人又傷神的事沒必要做嘛. 主要是因為有一些年代久遠的機器, 它們的 PC 和控制很多都是在 DOS 3.3的年代寫的, 換了 P5 的 PC後, 就無法執行了, 因為原來的程序是 TURBO PASCAL 或是其他語言編寫的, 相信那個年代有很多 COMPILER 有大概是千年蟲類似的問題, CPU速度提升, 軟件延時或是計時通訊的部分就會出問題. 所以最近還要做 PATCH, 但是有些程序用了一些 PACKER 之類打包過, 沒法在靜態時做 PATCH, 必要在 LOADED IN MEMORY 時才能進行.

實際上單用電腦已經了解了成因, 也驗證了可以恢復運行, 但是實際安裝到機器作控制時, 沒有 386/486 PC 備料, 也不準備再採購了, 唯有換 PC, 或乾脆換新機器. 但總不能要求每個操作員能用 DEBUG 去修改, 然後再啟動機器, 因此希望寫個 DOS 底下的 XXX.COM, 能夠簡單解決問題.

類似的延時造成的問題, 這是其中一個經驗,
http://wp.me/ph3BR-dE

俺是看完這兩篇, 還是不明白其中原委, 才想到找個華人的版區問問看, 果然就解決這個疑問.
http://thestarman.pcministry.com/asm/debug/Segments.html
http://thestarman.pcministry.com/asm/debug/debug.htm

因為俺不是這方面的專業, 對 PC 的硬件和原理不懂, 只是碰到實際問題要解決, 但是求助無門, 必須 DIY.

--------------------------------

A-

是想寫病毒程式嗎?

應該是CS+1000h:0000
吧?!

--------------------------------

廣告

發表迴響

在下方填入你的資料或按右方圖示以社群網站登入:

WordPress.com Logo

您的留言將使用 WordPress.com 帳號。 登出 / 變更 )

Twitter picture

您的留言將使用 Twitter 帳號。 登出 / 變更 )

Facebook照片

您的留言將使用 Facebook 帳號。 登出 / 變更 )

Google+ photo

您的留言將使用 Google+ 帳號。 登出 / 變更 )

連結到 %s