后来我下载了一个32位的debug程序,用-A命令来调试int21的09h,结果一运行这个语句,debug程序就死在那边了!
所以请教各位大侠,这种情况到底是怎么一回事呢?是不是windowsXP不支持的原因,如果有哪为大哥成功的实现了我上面所说的,请把您详细的步骤告诉我可以吗!
在此,先谢谢各位了!
13 个解决方案
#1
不可能不支持
#2
好象windows xp程序设计已经不支持中断了。
#3
八成是忘写程序结束指令(mov ah,4ch int 21h)
#4
恩。。。。。。。。反正在2000下和98下是不太一样的,有些直接写端口的程序在2000下不能运行,其他的操作我还没有发现什么不同啊!
#5
用BOCHS吧,那个东西应该可以的吧!
#6
一定能用,我用过呀
#7
好像要用exe2bin.exe转为com格式
#8
大家好,谢谢各位的回复,上面有兄弟说成功过的,所以我今天就做了实验:
我的机器装的是windowsXP 编译器使用了masm5.0
汇编代码如下:
data segment
message db "Hello",'$'
data ends
code segment
assume cs:code,ds:data
begin:
mov ax,data
mov ds,ax
mov dx,offset message
mov ah,09h
int 21
mov ah,4ch
int 21
code ends
end begin
编译连接成功生成可执行文件,运行可执行文件,程序死在那边,也没有显示Hello信息!
这个时候我还是以为windowsXP不支持int 21的09h功能,正打算收手!突然想到用debug调试一下!也好死心,于是我运行debug disp.exe
在调用-u 0查看装入内存的程序的汇编代码,这个时候问题出现了,结果为(屏幕信息):
C:\Documents and Settings\wutao\My Documents\????\????\???????>debug disp.exe
-r
AX=0000 BX=0000 CX=0020 DX=0000 SP=0000 BP=0000 SI=0000 DI=0000
DS=0B39 ES=0B39 SS=0B49 CS=0B4A IP=0000 NV UP EI PL NZ NA PO NC
0B4A:0000 B8490B MOV AX,0B49
-u 0
0B4A:0000 B8490B MOV AX,0B49
0B4A:0003 8ED8 MOV DS,AX
0B4A:0005 BA0000 MOV DX,0000
0B4A:0008 B409 MOV AH,09
0B4A:000A CD15 INT 15
0B4A:000C B44C MOV AH,4C
0B4A:000E CD15 INT 15
0B4A:0010 1E PUSH DS
0B4A:0011 54 PUSH SP
0B4A:0012 DB8C1624DD8C ESC 19,[SI+2416]TBYTE PTR [SI+8CDD]
0B4A:0018 06 PUSH ES
0B4A:0019 28DD SUB CH,BL
0B4A:001B 8F0614DD POP [DD14]
0B4A:001F 8F0618DD POP [DD18]
-
哈哈,真奇怪,代码中的int 21全部变成了int 15,我也不知道int 15功能是什么反正导致程序异常!
于是,为了实验int 21的09h功能winXP是否支持,我又有了如下动作,最后成功了:
-a a
0B4A:000A int 21
0B4A:000C
-a e
0B4A:000E int 21
0B4A:0010
-u 0
0B4A:0000 B8490B MOV AX,0B49
0B4A:0003 8ED8 MOV DS,AX
0B4A:0005 BA0000 MOV DX,0000
0B4A:0008 B409 MOV AH,09
0B4A:000A CD21 INT 21
0B4A:000C B44C MOV AH,4C
0B4A:000E CD21 INT 21
0B4A:0010 1E PUSH DS
0B4A:0011 54 PUSH SP
0B4A:0012 DB8C1624DD8C ESC 19,[SI+2416]TBYTE PTR [SI+8CDD]
0B4A:0018 06 PUSH ES
0B4A:0019 28DD SUB CH,BL
0B4A:001B 8F0614DD POP [DD14]
0B4A:001F 8F0618DD POP [DD18]
-g
Hello
Program terminated normally
-
哈哈,实践证明winXP是支持地!!
不过我还要请教各位大侠:为什么按照我源程序编译后的可执行文件载入后会变成int 15呢,我真是百思不得其解,还请高手指点!难道masm5.0在XP下运行会有bug?????
呵呵,谢谢大家拉!
我的机器装的是windowsXP 编译器使用了masm5.0
汇编代码如下:
data segment
message db "Hello",'$'
data ends
code segment
assume cs:code,ds:data
begin:
mov ax,data
mov ds,ax
mov dx,offset message
mov ah,09h
int 21
mov ah,4ch
int 21
code ends
end begin
编译连接成功生成可执行文件,运行可执行文件,程序死在那边,也没有显示Hello信息!
这个时候我还是以为windowsXP不支持int 21的09h功能,正打算收手!突然想到用debug调试一下!也好死心,于是我运行debug disp.exe
在调用-u 0查看装入内存的程序的汇编代码,这个时候问题出现了,结果为(屏幕信息):
C:\Documents and Settings\wutao\My Documents\????\????\???????>debug disp.exe
-r
AX=0000 BX=0000 CX=0020 DX=0000 SP=0000 BP=0000 SI=0000 DI=0000
DS=0B39 ES=0B39 SS=0B49 CS=0B4A IP=0000 NV UP EI PL NZ NA PO NC
0B4A:0000 B8490B MOV AX,0B49
-u 0
0B4A:0000 B8490B MOV AX,0B49
0B4A:0003 8ED8 MOV DS,AX
0B4A:0005 BA0000 MOV DX,0000
0B4A:0008 B409 MOV AH,09
0B4A:000A CD15 INT 15
0B4A:000C B44C MOV AH,4C
0B4A:000E CD15 INT 15
0B4A:0010 1E PUSH DS
0B4A:0011 54 PUSH SP
0B4A:0012 DB8C1624DD8C ESC 19,[SI+2416]TBYTE PTR [SI+8CDD]
0B4A:0018 06 PUSH ES
0B4A:0019 28DD SUB CH,BL
0B4A:001B 8F0614DD POP [DD14]
0B4A:001F 8F0618DD POP [DD18]
-
哈哈,真奇怪,代码中的int 21全部变成了int 15,我也不知道int 15功能是什么反正导致程序异常!
于是,为了实验int 21的09h功能winXP是否支持,我又有了如下动作,最后成功了:
-a a
0B4A:000A int 21
0B4A:000C
-a e
0B4A:000E int 21
0B4A:0010
-u 0
0B4A:0000 B8490B MOV AX,0B49
0B4A:0003 8ED8 MOV DS,AX
0B4A:0005 BA0000 MOV DX,0000
0B4A:0008 B409 MOV AH,09
0B4A:000A CD21 INT 21
0B4A:000C B44C MOV AH,4C
0B4A:000E CD21 INT 21
0B4A:0010 1E PUSH DS
0B4A:0011 54 PUSH SP
0B4A:0012 DB8C1624DD8C ESC 19,[SI+2416]TBYTE PTR [SI+8CDD]
0B4A:0018 06 PUSH ES
0B4A:0019 28DD SUB CH,BL
0B4A:001B 8F0614DD POP [DD14]
0B4A:001F 8F0618DD POP [DD18]
-g
Hello
Program terminated normally
-
哈哈,实践证明winXP是支持地!!
不过我还要请教各位大侠:为什么按照我源程序编译后的可执行文件载入后会变成int 15呢,我真是百思不得其解,还请高手指点!难道masm5.0在XP下运行会有bug?????
呵呵,谢谢大家拉!
#9
原来我一直在XP下运行这个disp.exe文件都说是无效指令或者程序异常,我都以为是XP不支持,实际上不是了,是因为disp.exe中的指令实际上变成了int 15,所以运行disp.exe会导致异常!
#10
INT 21H
#11
对哦,是的,呵呵!我在debug里面用习惯了,把数值都认为是16位的了!那么现在所有的问题都解决了,谢谢各位,谢谢李诚大哥!结帖
#12
回复人: csdsjkk() ( ) 信誉:99 2004-1-8 10:15:38
八成是忘写程序结束指令(mov ah,4ch int 21h)
你该谢他
八成是忘写程序结束指令(mov ah,4ch int 21h)
你该谢他
#13
感谢大家
#1
不可能不支持
#2
好象windows xp程序设计已经不支持中断了。
#3
八成是忘写程序结束指令(mov ah,4ch int 21h)
#4
恩。。。。。。。。反正在2000下和98下是不太一样的,有些直接写端口的程序在2000下不能运行,其他的操作我还没有发现什么不同啊!
#5
用BOCHS吧,那个东西应该可以的吧!
#6
一定能用,我用过呀
#7
好像要用exe2bin.exe转为com格式
#8
大家好,谢谢各位的回复,上面有兄弟说成功过的,所以我今天就做了实验:
我的机器装的是windowsXP 编译器使用了masm5.0
汇编代码如下:
data segment
message db "Hello",'$'
data ends
code segment
assume cs:code,ds:data
begin:
mov ax,data
mov ds,ax
mov dx,offset message
mov ah,09h
int 21
mov ah,4ch
int 21
code ends
end begin
编译连接成功生成可执行文件,运行可执行文件,程序死在那边,也没有显示Hello信息!
这个时候我还是以为windowsXP不支持int 21的09h功能,正打算收手!突然想到用debug调试一下!也好死心,于是我运行debug disp.exe
在调用-u 0查看装入内存的程序的汇编代码,这个时候问题出现了,结果为(屏幕信息):
C:\Documents and Settings\wutao\My Documents\????\????\???????>debug disp.exe
-r
AX=0000 BX=0000 CX=0020 DX=0000 SP=0000 BP=0000 SI=0000 DI=0000
DS=0B39 ES=0B39 SS=0B49 CS=0B4A IP=0000 NV UP EI PL NZ NA PO NC
0B4A:0000 B8490B MOV AX,0B49
-u 0
0B4A:0000 B8490B MOV AX,0B49
0B4A:0003 8ED8 MOV DS,AX
0B4A:0005 BA0000 MOV DX,0000
0B4A:0008 B409 MOV AH,09
0B4A:000A CD15 INT 15
0B4A:000C B44C MOV AH,4C
0B4A:000E CD15 INT 15
0B4A:0010 1E PUSH DS
0B4A:0011 54 PUSH SP
0B4A:0012 DB8C1624DD8C ESC 19,[SI+2416]TBYTE PTR [SI+8CDD]
0B4A:0018 06 PUSH ES
0B4A:0019 28DD SUB CH,BL
0B4A:001B 8F0614DD POP [DD14]
0B4A:001F 8F0618DD POP [DD18]
-
哈哈,真奇怪,代码中的int 21全部变成了int 15,我也不知道int 15功能是什么反正导致程序异常!
于是,为了实验int 21的09h功能winXP是否支持,我又有了如下动作,最后成功了:
-a a
0B4A:000A int 21
0B4A:000C
-a e
0B4A:000E int 21
0B4A:0010
-u 0
0B4A:0000 B8490B MOV AX,0B49
0B4A:0003 8ED8 MOV DS,AX
0B4A:0005 BA0000 MOV DX,0000
0B4A:0008 B409 MOV AH,09
0B4A:000A CD21 INT 21
0B4A:000C B44C MOV AH,4C
0B4A:000E CD21 INT 21
0B4A:0010 1E PUSH DS
0B4A:0011 54 PUSH SP
0B4A:0012 DB8C1624DD8C ESC 19,[SI+2416]TBYTE PTR [SI+8CDD]
0B4A:0018 06 PUSH ES
0B4A:0019 28DD SUB CH,BL
0B4A:001B 8F0614DD POP [DD14]
0B4A:001F 8F0618DD POP [DD18]
-g
Hello
Program terminated normally
-
哈哈,实践证明winXP是支持地!!
不过我还要请教各位大侠:为什么按照我源程序编译后的可执行文件载入后会变成int 15呢,我真是百思不得其解,还请高手指点!难道masm5.0在XP下运行会有bug?????
呵呵,谢谢大家拉!
我的机器装的是windowsXP 编译器使用了masm5.0
汇编代码如下:
data segment
message db "Hello",'$'
data ends
code segment
assume cs:code,ds:data
begin:
mov ax,data
mov ds,ax
mov dx,offset message
mov ah,09h
int 21
mov ah,4ch
int 21
code ends
end begin
编译连接成功生成可执行文件,运行可执行文件,程序死在那边,也没有显示Hello信息!
这个时候我还是以为windowsXP不支持int 21的09h功能,正打算收手!突然想到用debug调试一下!也好死心,于是我运行debug disp.exe
在调用-u 0查看装入内存的程序的汇编代码,这个时候问题出现了,结果为(屏幕信息):
C:\Documents and Settings\wutao\My Documents\????\????\???????>debug disp.exe
-r
AX=0000 BX=0000 CX=0020 DX=0000 SP=0000 BP=0000 SI=0000 DI=0000
DS=0B39 ES=0B39 SS=0B49 CS=0B4A IP=0000 NV UP EI PL NZ NA PO NC
0B4A:0000 B8490B MOV AX,0B49
-u 0
0B4A:0000 B8490B MOV AX,0B49
0B4A:0003 8ED8 MOV DS,AX
0B4A:0005 BA0000 MOV DX,0000
0B4A:0008 B409 MOV AH,09
0B4A:000A CD15 INT 15
0B4A:000C B44C MOV AH,4C
0B4A:000E CD15 INT 15
0B4A:0010 1E PUSH DS
0B4A:0011 54 PUSH SP
0B4A:0012 DB8C1624DD8C ESC 19,[SI+2416]TBYTE PTR [SI+8CDD]
0B4A:0018 06 PUSH ES
0B4A:0019 28DD SUB CH,BL
0B4A:001B 8F0614DD POP [DD14]
0B4A:001F 8F0618DD POP [DD18]
-
哈哈,真奇怪,代码中的int 21全部变成了int 15,我也不知道int 15功能是什么反正导致程序异常!
于是,为了实验int 21的09h功能winXP是否支持,我又有了如下动作,最后成功了:
-a a
0B4A:000A int 21
0B4A:000C
-a e
0B4A:000E int 21
0B4A:0010
-u 0
0B4A:0000 B8490B MOV AX,0B49
0B4A:0003 8ED8 MOV DS,AX
0B4A:0005 BA0000 MOV DX,0000
0B4A:0008 B409 MOV AH,09
0B4A:000A CD21 INT 21
0B4A:000C B44C MOV AH,4C
0B4A:000E CD21 INT 21
0B4A:0010 1E PUSH DS
0B4A:0011 54 PUSH SP
0B4A:0012 DB8C1624DD8C ESC 19,[SI+2416]TBYTE PTR [SI+8CDD]
0B4A:0018 06 PUSH ES
0B4A:0019 28DD SUB CH,BL
0B4A:001B 8F0614DD POP [DD14]
0B4A:001F 8F0618DD POP [DD18]
-g
Hello
Program terminated normally
-
哈哈,实践证明winXP是支持地!!
不过我还要请教各位大侠:为什么按照我源程序编译后的可执行文件载入后会变成int 15呢,我真是百思不得其解,还请高手指点!难道masm5.0在XP下运行会有bug?????
呵呵,谢谢大家拉!
#9
原来我一直在XP下运行这个disp.exe文件都说是无效指令或者程序异常,我都以为是XP不支持,实际上不是了,是因为disp.exe中的指令实际上变成了int 15,所以运行disp.exe会导致异常!
#10
INT 21H
#11
对哦,是的,呵呵!我在debug里面用习惯了,把数值都认为是16位的了!那么现在所有的问题都解决了,谢谢各位,谢谢李诚大哥!结帖
#12
回复人: csdsjkk() ( ) 信誉:99 2004-1-8 10:15:38
八成是忘写程序结束指令(mov ah,4ch int 21h)
你该谢他
八成是忘写程序结束指令(mov ah,4ch int 21h)
你该谢他
#13
感谢大家