汇编程序:显示时间中响应键盘中断
2017-05-28 17:38
267 查看
【任务】
在屏幕的左上角动态显示时间,期间,按下Home键后,能显示”Home”,按下End键后,退出程序。
【参考解答】
【说明】
本程序是汇编程序:显示时间(分秒)的扩充,实现了显示时间过程中,键盘中断做一些处理,这已经有了一点实用的模型,可以再自行扩充,例如用于战斗类游戏设计中,按下方向键,实现开火、加速等,这些都好控制了。
还可以在主程序中完成一定的功能,将显示时间也由定时器控制,用中断机制完成,这个可以作为时一步学习的方向。
在屏幕的左上角动态显示时间,期间,按下Home键后,能显示”Home”,按下End键后,退出程序。
【参考解答】
assume cs:code stack segment db 128 dup (0) stack ends data segment dw 0,0 home db 'Home',0dh,0ah,'$' 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:[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 ; 显示时间 show: mov al,2 ;分 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 bx,0b800h mov es,bx mov byte ptr es:[0],ah mov byte ptr es:[1],01001111b mov byte ptr es:[2],al mov byte ptr es:[3],01001111b mov byte ptr es:[4],':' mov byte ptr es:[5],01001111b mov al,0 ;秒 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 bx,0b800h mov es,bx mov byte ptr es:[6],ah mov byte ptr es:[7],01001111b mov byte ptr es:[8],al mov byte ptr es:[9],01001111b jmp show ; 定义中断例程 int9: push ax push bx push dx push es in al,60h pushf pushf pop bx and bh,11111100b push bx popf call dword ptr ds:[0] mov bl, al ;保存al cmp al,47h ; 47h是HOME键的扫描码 jne ifend ;处理HOME lea dx, home mov ah,9 int 21h jmp int9ret ifend: cmp bl, 4Fh ;4Fh是end键的扫描码 jne int9ret ;处理END,使程序结束,注意在此要恢复中断向量 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 int9ret:pop es pop dx pop bx pop ax iret code ends end start
【说明】
本程序是汇编程序:显示时间(分秒)的扩充,实现了显示时间过程中,键盘中断做一些处理,这已经有了一点实用的模型,可以再自行扩充,例如用于战斗类游戏设计中,按下方向键,实现开火、加速等,这些都好控制了。
还可以在主程序中完成一定的功能,将显示时间也由定时器控制,用中断机制完成,这个可以作为时一步学习的方向。
相关文章推荐
- n久前的51单片机4*4键盘加4数码管显示汇编程序
- 汇编语言: 试编写一段程序,从键盘接收一个 0-65535 间的十进制无符号数,并在终端上显示与 它等值的二进制数。
- 汇编程序,显示系统时间
- 汇编程序:显示时间(分秒)
- 汇编语言 :从键盘输入一个单个字符,显示该字符的ASCII码,回车键退出循环,终止程序
- 汇编语言: 试编写一段程序,从键盘接收一个四位的十六进制数,并在终端上显示与它等值的二 进制数。
- 汇编语言: 编写一个程序,从键盘输入一个不长于8位的四进制数,并将所输入的数以10进制数 形式显示出来。
- 一段简单的汇编程序,显示键盘按健的扫描码和ASCII码
- 显示系统当前时间的汇编程序
- 汇编语言: 编写一个程序,从键盘输入一个 0~65535 之间的 10 进制无符号数,然后以 16 进制 和四进制数形式显示出所输入的数。
- 利用BIOS中断或DOS中断实现一个显示当前时间的程序
- 汇编-从键盘输入数据并显示的程序
- 汇编语言: 试编写一段程序,从键盘接收一个-32768-32767 间的十进制有符号数,并在终端上 显示与它等值的二进制数。
- 根据服务器时间作为起始,显示时钟的小程序
- 汇编语言显示系统时间代码分析(14)
- 数码管显示矩阵键盘扫描程序
- NASM 纯汇编打造简单中文操作系统(4 mouse.inc 鼠标驱动部分(设置鼠标中断,建立中断处理程序))
- jsp中以服务器时间作为起始,显示时钟的小程序
- 显示系统时间(汇编) 图形化显示
- 试编写程序,要求从键盘输入3个16进制数,并根据对3个数的比较显示信息