. : : Assembly Language : : .  |  首页  |  我提出的问题  |  我参与的问题  |  我的收藏  |  消息中心   |  游客  登录  | 
刷新 | 提问 | 未解决 | 已解决 | 精华区 | 搜索 |
  《汇编语言》论坛 ->外中断
  管理员: assembly   [回复本贴] [收藏本贴] [管理本贴] [关闭窗口]
主题 : :  15.5的例题为什么没法运行呢?  [待解决] 回复[ 6次 ]   点击[ 400次 ]  
kgate1
[帖 主]   [ 发表时间:2011-04-30 12:05 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2011-04-29 18:09
就是那道例题,我试从“命令提示符”和“运行”里运行但都不成。誊下来的源程序我检查了几遍,应该没问题。在那个装系统时留下的dos下试运行时没找到exe文件。不知道那出错了,望同仁解惑。



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
        mov di,204h
        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],204h
        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]
        
        cmp al,0
        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
kgate1
[第1楼]   [ 回复时间:2011-04-30 12:18 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2011-04-29 18:09
cmp al,0  我改成了esc键试了,应该对源程序没影响。
nbaqqqq
[第2楼]   [ 回复时间:2011-05-03 23:15 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:2
注册日期:2010-11-24 19:24
cli  
        mov word ptr es:[9*4],204h   //我用debug调试发现这错了,跳到一个错误的地址去了,感觉cli语句没起作用
        mov word ptr es:[9*4+2],0 
        sti
nbaqqqq
[第3楼]   [ 回复时间:2011-05-03 23:17 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:2
注册日期:2010-11-24 19:24
不过不单步调试那就没错误了
shuimx
[第4楼]   [ 回复时间:2011-06-10 15:23 ]   [引用]   [回复]   [ top ] 
荣誉值:6
信誉值:0
注册日期:2011-05-28 09:49
esc 的扫描码是 01h
shuimx
[第5楼]   [ 回复时间:2011-06-10 15:29 ]   [引用]   [回复]   [ top ] 
荣誉值:6
信誉值:0
注册日期:2011-05-28 09:49
把  cmp al,0 改为 cmp al,1 改成了esc键
在 cmd.exe 下不能执行
但是在 command.com 下可以执行。
我也不明白为什么。。
dallas48
[第6楼]   [ 回复时间:2011-06-27 16:52 ]   [引用]   [回复]   [ top ] 
荣誉值:4
信誉值:2
注册日期:2011-01-06 10:33
我的可以啊
cmd.exe可以
不过试验15就不行了
试验15只有在command.com下才可以执行
而且试验15debug调试会出错
需要登录后才能回帖 -->> 请单击此处登录
    Copyright © 2006-2024   ASMEDU.NET  All Rights Reserved