跪求.....王爽汇编中外中断的一个例题改编,
题目是让 安装一个新的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
求助啊......自己顶一下 本帖最后由 haiouda 于 2014-9-28 21:59 编辑
这个我也一直没有完成,在我机器上执行到mov word ptr es:,cs ,就直接出问题了,我发贴也一直没有人指点过;
我曾试着,用U盘启动DOS去执行,结果,,我下载那个DOS启动盘不但一好用,还把我的WIN给弄不好使了……
如果你能下载个DOS,用U盘启动进DOS去调试, 我想应该会好使的
页:
[1]