Re: [問題]組語
※ 引述《twisters121 (...)》之銘言:
: 程式在編譯和連結上都沒有問題
: 但程式執行時 有時候可以印出
: 有時候確不可以
: 這是什麼問題???
: 程式碼如下
:
: .model small
: .stack 100h
: .data
: message db "hello world",0dh,0ah,"$"
: .code
: main proc
: mov ax,@data
: mov ds,ax
: mov dx,offset message
: mov ah,09h
: int 21h
: mov ax,4c00h
: int 21h
: main endp
: end main
:
: → james732:把code放上來吧 218.172.102.46 09/22 16:16
: ※ 編輯: twisters121 來自: 61.70.53.157 (09/22 16:31)
: 推 LPH66:看來沒啥問題啊@@ 140.112.250.80 09/22 18:42
: 推 ggg12345:先在dos prompt跑一次debug退出再跑hello 140.115.6.234 09/22 23:03
: 推 twisters121:樓上是正解..但不知為何會這樣 61.70.53.157 09/23 14:01
==============
這可能還要請其他高人來指正補充.
如果是用 turbo ASM 提供的 IDE 發展環境, 她會在 winXX 下 fork
出一個 v86 process 來執行要運行的指令(hello.exe) , 這個 v86
會完整模擬 DOS 使用環境, 那就可反覆正確執行.
但, 若用 DOS prompt 調出 command line 再下指令執行時, 可能是
MicroSoft 不再想支援 DOS Mode operation , 那個 dos prompt 出
現時就沒建好 int 21h 的 DOS 支援環境. 但用 debug 執行後, debug
通常會補上需要用到的 int vector 及 psp , 因此就會正常執行.
完整的 DOS 是 1MB 範圍的 8086 空間, 包含 DOS 開機時塞進 Himem
的 driver program 及 INT table . WinXX 啟動的 DOS Prompt 是虛
擬的 V86 , 需要透過 OS 與 VM86 mode 切換來銜接 1MB 區的絕對地
址, Win9X 之後, 這種支援就被取消了, 可能是要強迫使用者使用新版
的應用程式.
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.115.6.234
→
09/23 22:54, , 1F
09/23 22:54, 1F
推
09/24 08:07, , 2F
09/24 08:07, 2F
推
09/24 19:44, , 3F
09/24 19:44, 3F
→
09/25 00:01, , 4F
09/25 00:01, 4F
→
09/25 00:03, , 5F
09/25 00:03, 5F
推
09/27 16:14, , 6F
09/27 16:14, 6F
推
09/27 16:55, , 7F
09/27 16:55, 7F
推
09/30 17:07, , 8F
09/30 17:07, 8F
討論串 (同標題文章)
Programming 近期熱門文章
PTT數位生活區 即時熱門文章