. : : Assembly Language : : .  |  首页  |  我提出的问题  |  我参与的问题  |  我的收藏  |  消息中心   |  游客  登录  | 
刷新 | 提问 | 未解决 | 已解决 | 精华区 | 搜索 |
  《汇编语言》论坛 ->基础知识
  管理员: assembly   [回复本贴] [收藏本贴] [管理本贴] [关闭窗口]
主题 : :  急,请教为什么实模式dos下运行exe文件直接退出系统  [待解决] 回复[ 5次 ]   点击[ 486次 ]  
frogoscar
[帖 主]   [ 发表时间:2011-06-20 07:27 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2011-05-16 07:53
请教:我在虚拟dos里运行15.5的改变屏幕显示颜色的那个exe文件(当然编译链接后),程序直接退出。debug单步跟踪的话,到mov word ptr es:[9*4],204h就出错了。
然后因为书上说:本章中所有关于键盘的程序,...必须在dos实模式下运行。所以我就参考http://www.asmedu.net/bbs/pasteinfo.jsp?part=1&level=book&kind=1002&qkSg=2&qID=35612&readSg=1
这篇帖子内容安装了virtual PC,什么都弄好了。然后用共享文件把我window xp里的masm工具包拷贝到virtual PC的dos里面,然后用masm编译链接f1.asm,生成f1.exe文件(f1是我随便取的名字),但是为什么我 C:>\asm\f1.exe,dos就直接关闭窗口退出了,回到了virtual PC的初始启动选项窗口。好奇怪捏,为什么没出效果,就直接退出系统了??
我网上也找了下,但还没找到解决办法。
请问哪位大侠知道不?多谢啦!
而且纯的dos没有debug,我还得装一个。。。
急啊,学到15章就卡在这里了。万分感谢!!
frogoscar
[第1楼]   [ 回复时间:2011-06-29 19:11 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2011-05-16 07:53
装了dos7.1后,debug是自带了,但还是已运行f1.exe就退出了
eax001
[第2楼]   [ 回复时间:2011-07-10 02:47 ]   [引用]   [回复]   [ top ] 
荣誉值:1
信誉值:0
注册日期:2009-10-11 02:23
把源码贴出来看看吧!如果源码无误,则可能是程序运行过快,你还没反应程序已经运行结束退出了!加些等待时间试试!
frogoscar
[第3楼]   [ 回复时间:2011-07-11 16:55 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2011-05-16 07:53
assume cs:code

stack segment
        db 128 dup (0)
stack ends

code segment
start:  mov ax,stack
        mov ss,ax
        mov sp,128

        push cs
        pop ds

        mov ax,0
        mov es,ax

        mov si,offset int9     ;source address
        mov di,204h            ;destination address
        mov cx,offset int9end-offset int9
        cld
        rep movsb

        push es:[9*4]
        pop es:[200h]
        push es:[9*4+2]
        pop es:[202h]

        cli
        mov word ptr es:[9*4],204
        mov word ptr es:[9*4+2],0
        sti

        mov ax,4c00h
        int 21h

int9:   push ax
        push bx
        push cx
        push es

        in al,60h

        pushf
        call dword ptr cs:[200h]    ;because at the moment in "int 9", CS = 0

        cmp al,3bh                  ;scan code of F1
        jne int9ret

        mov ax,0b800h
        mov es,ax
        mov bx,1
        mov cx,2000
   s:   inc byte ptr es:[bx]
        add bx,2
        loop s

int9ret:pop es
        pop cx
        pop bx
        pop ax
        iret

int9end:nop

code ends

end start



源码就是按照书上敲的。
之前那个检测点15.1涉及到的程序(就是按esc键改变字符颜色那个)可以正常执行的。

我在虚拟机上装了dos,是不是实模式?请指教,一定要用汇编网发的那个纯Dos下的汇编操作环境才能进实模式的dos?谢谢!
eax001
[第4楼]   [ 回复时间:2011-08-08 07:26 ]   [引用]   [回复]   [ top ] 
荣誉值:1
信誉值:0
注册日期:2009-10-11 02:23
虚拟机的兼容性并不是很好!建议不要用虚拟机
frogoscar
[第5楼]   [ 回复时间:2011-08-09 16:38 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2011-05-16 07:53
好,我试试。那用汇编网首发的纯dos系统好像进去也有点怪怪的
需要登录后才能回帖 -->> 请单击此处登录
    Copyright © 2006-2024   ASMEDU.NET  All Rights Reserved