关于键盘中断的问题~ 这个问题困扰我两周了 还请知道的大神不吝赐教

轩智 2014-06-04 08:39:56

assume cs:code
code segment
start:
call empty
clock:

mov ax,0
mov es,ax

push es:[9*4]
pop ds:[0]
push es:[9*4+2]
pop ds:[2]

mov word ptr es:[9*4],offset int9
mov es:[9*4+2],cs

mov ax,0b800h
mov es,ax

begincoloc:
mov al,'2'
mov es:[0],al
mov al,'0'
mov es:[2],al
mov bx,4

mov cx,3
mov dl,9
c0:
push cx
mov al,dl
out 70h,al
in al,71h

mov ah,al
mov cl,4
shr ah,cl
and al,00001111b

add ah,30h
add al,30h

mov byte ptr es:[bx],ah
add bx,2
mov byte ptr es:[bx],al

call slash

pop cx
dec dl
loop c0

mov cx,3
mov dl,4
c1:
push cx
mov al,dl
out 70h,al
in al,71h

mov ah,al
mov cl,4
shr ah,cl
and al,00001111b

add ah,30h
add al,30h

mov byte ptr es:[bx],ah
add bx,2
mov byte ptr es:[bx],al

call colon

pop cx
sub dl,2
loop c1

call delay

jmp begincoloc

mov ax,0
mov es,ax

push ds:[0]
pop es:[9*4]
push ds:[2]
pop es:[9*4+2]

mov ax,4c00h
int 21h


;*************函数*************;
empty:
mov ax,0b800h
mov es,ax
mov cx,2000
mov di,0
mov al,' '
e:
mov es:[di],al
add di,2
loop e
mov bx,0
mov cx,0
mov di,0
mov si,0
ret

slash:
cmp dl,7
je blank
add bx,2
mov al,'/'
mov es:[bx],al
add bx,2
jmp short sret
blank:
add bx,2
mov al,' '
mov es:[bx],al
add bx,2
jmp short sret
sret:
ret

colon:
cmp dl,0
je blanks
add bx,2
mov al,':'
mov es:[bx],al
add bx,2
jmp short srets
blanks:
add bx,2
mov al,' '
mov es:[bx],al
add bx,2
jmp short srets
srets:
ret

delay:
mov dx,5h
mov ax,0
d:
sub ax,1
sbb dx,0
cmp ax,0
jne d
cmp dx,0
jne d
ret




;*************中断例程************;
int9:
push ax
push bx
push es

in al,60h
pushf
call dword ptr ds:[200h]

cmp al,1
jne int9ret

mov ax,0b800h
mov es,ax
mov cx,12
mov di,1
i:
inc byte ptr es:[di]
inc di
loop i

int9ret:
pop es
pop bx
pop ax
iret

int9end:
nop

code ends
end start

这是 王爽的汇编语言一书 我想要实现 在不断更新的系统时间 时按下esc键 实现变色效果 但一按esc键 整个程序就卡住了
...全文
213 10 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
轩智 2014-06-08
  • 打赏
  • 举报
回复
引用 9 楼 zara 的回复:
int9 上的问题吧,你保存原向量时 pop ds:[0] 之类的,ds 设置了吗,ds:[0] 在哪里?而在 int9: 里又是 call dword ptr ds:[200h] 这又是在哪里,前后还不一致,也都没见过设置 ds 的? 另外,改变颜色的话,每次应该给 di 增 2 因为一个字节是显示字符,再一个字节是显示的属性;再,你的需要修改的也不止 12 个字符吧。
谢谢您的回复 我已经解决这个问题了 虽然您的回答并不是我的最终解决办法 感谢你
zara 2014-06-06
  • 打赏
  • 举报
回复
int9 上的问题吧,你保存原向量时 pop ds:[0] 之类的,ds 设置了吗,ds:[0] 在哪里?而在 int9: 里又是 call dword ptr ds:[200h] 这又是在哪里,前后还不一致,也都没见过设置 ds 的?
另外,改变颜色的话,每次应该给 di 增 2 因为一个字节是显示字符,再一个字节是显示的属性;再,你的需要修改的也不止 12 个字符吧。
Guilty 2014-06-05
  • 打赏
  • 举报
回复
DOS的玩意儿太高端了,只能仰望。请教你有专门的PC装DOS吗?
轩智 2014-06-05
  • 打赏
  • 举报
回复
为什么没人啊
轩智 2014-06-05
  • 打赏
  • 举报
回复
引用 7 楼 Guilty 的回复:
[quote=引用 6 楼 a6731489 的回复:] [quote=引用 5 楼 Guilty 的回复:] [quote=引用 4 楼 a6731489 的回复:] [quote=引用 3 楼 Guilty 的回复:] DOS的玩意儿太高端了,只能仰望。请教你有专门的PC装DOS吗?
我用的是Masm for Windows 集成实验环境 2012.5[/quote] 不太了解,不过我感觉够呛,会模拟有BIOS中断向量给你改? 如果你没敲错,应该是环境不及格,只能DOS下玩。[/quote] 可是有类似的代码可运行啊。。。。。[/quote] 不要较真这些过时的东西了。 以前我上班是无聊,写过一个DOS驻留程序,在任何程序运行的时候按一个组合键把键盘变成可以弹音乐。 现在早忘光了,DOS没用。[/quote] 我真的是想知道为什么啊
Guilty 2014-06-05
  • 打赏
  • 举报
回复
引用 6 楼 a6731489 的回复:
[quote=引用 5 楼 Guilty 的回复:] [quote=引用 4 楼 a6731489 的回复:] [quote=引用 3 楼 Guilty 的回复:] DOS的玩意儿太高端了,只能仰望。请教你有专门的PC装DOS吗?
我用的是Masm for Windows 集成实验环境 2012.5[/quote] 不太了解,不过我感觉够呛,会模拟有BIOS中断向量给你改? 如果你没敲错,应该是环境不及格,只能DOS下玩。[/quote] 可是有类似的代码可运行啊。。。。。[/quote] 不要较真这些过时的东西了。 以前我上班是无聊,写过一个DOS驻留程序,在任何程序运行的时候按一个组合键把键盘变成可以弹音乐。 现在早忘光了,DOS没用。
轩智 2014-06-05
  • 打赏
  • 举报
回复
引用 5 楼 Guilty 的回复:
[quote=引用 4 楼 a6731489 的回复:] [quote=引用 3 楼 Guilty 的回复:] DOS的玩意儿太高端了,只能仰望。请教你有专门的PC装DOS吗?
我用的是Masm for Windows 集成实验环境 2012.5[/quote] 不太了解,不过我感觉够呛,会模拟有BIOS中断向量给你改? 如果你没敲错,应该是环境不及格,只能DOS下玩。[/quote] 可是有类似的代码可运行啊。。。。。
Guilty 2014-06-05
  • 打赏
  • 举报
回复
引用 4 楼 a6731489 的回复:
[quote=引用 3 楼 Guilty 的回复:] DOS的玩意儿太高端了,只能仰望。请教你有专门的PC装DOS吗?
我用的是Masm for Windows 集成实验环境 2012.5[/quote] 不太了解,不过我感觉够呛,会模拟有BIOS中断向量给你改? 如果你没敲错,应该是环境不及格,只能DOS下玩。
轩智 2014-06-05
  • 打赏
  • 举报
回复
引用 3 楼 Guilty 的回复:
DOS的玩意儿太高端了,只能仰望。请教你有专门的PC装DOS吗?
我用的是Masm for Windows 集成实验环境 2012.5
轩智 2014-06-04
  • 打赏
  • 举报
回复
大家帮帮忙吧~

21,497

社区成员

发帖
与我相关
我的任务
社区描述
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
社区管理员
  • 汇编语言
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧