王爽汇编语言,外中断例题,照抄都出错


王爽汇编语言,外中断例题,照抄都出错,求纠错,如图


2015-04-09 00:06梁嘉1990 | 分类:汇编语言 | 浏览30次


编程要求:安装一个新的 int  9 中断例程,

功能:在 DOS 下,按下“A”键后,除非不松开,如果松开,就显示满屏幕的“A”,

其他的键照常处理


连接编译正常,运行时我按下’A'再松开,并没有如期变成满屏幕的'A'


题目链接:http://zhidao.baidu.com/question/177873928081107684


做而论道回答如下: (2015-04-10 15:10  提问者采纳)


王爽这程序,出发点,就是错误的。


他把中断例程,很随意的,就安装在 00200H 的位置,

也不管此处,是不是还有,别人安装过什么。


另外,他安装了新中断例程后,这个安装程序就结束了。

他是希望,他所安装的新中断例程,能够长期驻留在内存。

一旦有人按A键再松开,就引起 'A' 的显示。


实际上,他安装程序结束的同时,他所安装的新中断程序,

也被操作系统给清除了。


可以看出来,他对 Winows 环境里面的 DOS 操作系统,还没有弄懂。

就是王爽的又一个错误。


楼主看不到显示 A,这就是正确的结果。

因为,新的 INT 9 例程,已经被清除了。



提问者评价:这是我看过的最靠谱的回答



附:王爽的错误程序。


assume cs:code

stack segment stack

db 128 dup(0)

stack ends


code segment

start:mov ax,stack

mov ss,ax

mov sp,128


mov ax,cs

mov ds,ax

mov si,offset int9


mov ax,0

mov es,ax

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 cx

push es

push di


in al,60h

pushf

call dword ptr cs:[200h]

cmp al,1eh+80h

jne int9ret


mov ax,0b800h

mov es,ax

mov di,0


mov cx,80*20

s:mov byte ptr es:[di],'A'

add di,2

loop s


int9ret:pop di

pop es

pop cx

pop ax

iret

int9end:nop


code ends

end start


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值