作者ggg12345 (ggg)
看板Programming
标题Re: [问题]组语
时间Sun Sep 23 17:20:00 2007
※ 引述《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
1F:→ xcycl:Program compatibility flags ? 134.208.32.66 09/23 22:54
2F:推 twisters121:很棒的说明...感谢喔~~ 61.70.53.157 09/24 08:07
3F:推 softcloud:先把DOS开成全萤幕 再执行看看 218.169.79.219 09/24 19:44
4F:→ ggg12345:全萤幕会把display挂给DOSprompt,有效.但 140.115.6.234 09/25 00:01
5F:→ ggg12345:怎麽切回去 window ? 140.115.6.234 09/25 00:03
6F:推 twisters121:ctrl+Esc 61.70.53.157 09/27 16:14
7F:推 ggg12345:记得是这两键没错,不过我的w2k切不回去了 140.115.1.146 09/27 16:55
8F:推 twisters121:我是用win xp..可以 61.70.53.157 09/30 17:07