JNSimba 发表于 2014-9-25 22:27:55

跪求.....王爽汇编中外中断的一个例题改编,

题目是让 安装一个新的int 9中断例程,功能是在dos模式下,按F1键后改变当前屏幕的显示颜色

小甲鱼的视频说,由于windows将8086给保护起来了,所以安装了也看不到结果
于是我修改了一下源程序,不再将其安装,类似于前面一个例子(按下ESC改变颜色), 将中断例程放在程序中
可是为什么运行完后,按下F1无反应.....
我的环境是虚拟机下的XP
代码是:

assume cs:code

stack segment
        db 128 dup(0)
stack ends
datasegment
dw 0,0
data ends
code segment
start:
        mov ax,stack
        mov ss,ax
        mov sp,128
       
        mov ax,data
        mov ds,ax
       
        mov ax,0
        mov es,ax
       
        push es:
        pop ds:
        push es:
        pop ds:                        ;将原来的int 9中断例程的入口地址保存在ds:0、ds:2单元中
       
       
       
        cli
        mov word ptr es:,offset int9
        mov word ptr es:,cs                ;设置中断向量表
        sti
       
        mov ax,0
        mov es,ax
       
        push ds:
        pop es:
        push ds:
        pop es:                ;恢复原来中断向量表的int 9中断例程的地址
       
        mov ax,4c00h
        int 21h
;------新的int 9 中断例程------       
int9:
        push ax
        push bx
       
        push es
       
        in al,60h
       
        pushf
       
        pushf
        pop bx
        and bh,11111100b
        push bx
        popf
        call dword ptr ds:
       
        cmp al,3bh
        jne int9ret
       
        mov ax,0b800h
        mov es,ax
        mov bx,1
        mov cx,2000
s:        inc byte ptr es:
        add bx,2
        loop s
       
int9ret:
        pop es
        pop cx
        pop bx
        pop ax
        iret
code ends
end start

JNSimba 发表于 2014-9-26 20:39:24

求助啊......自己顶一下

haiouda 发表于 2014-9-28 21:58:17

本帖最后由 haiouda 于 2014-9-28 21:59 编辑

这个我也一直没有完成,在我机器上执行到mov word ptr es:,cs   ,就直接出问题了,我发贴也一直没有人指点过;
我曾试着,用U盘启动DOS去执行,结果,,我下载那个DOS启动盘不但一好用,还把我的WIN给弄不好使了……

如果你能下载个DOS,用U盘启动进DOS去调试, 我想应该会好使的
页: [1]
查看完整版本: 跪求.....王爽汇编中外中断的一个例题改编,