键盘中断, 一般按下键盘上的某个按钮就会触发键盘中断.

assume cs:code, ds:data, ss:stackdata segmentdb 128 dup(0)
data endsstack segment stackdb 128 dup(0)
stack endscode segmentstart:    mov ax, stackmov ss, axmov sp, 128call cpy_new_int9call set_old_int9        call set_new_int9testA:     mov ax, 1000Hjmp testAcall set_init_int9mov ax, 4C00Hint 21H;=======================================
set_init_int9:mov bx, 0mov es, bxclipush es:[200H]pop es:[9*4]push es:[202H]pop es:[9*4+2]stiret
;=======================================
set_new_int9:   push bxpush esmov bx, 0mov es, bxclimov word ptr es:[9*4], 7E00Hmov word ptr es:[9*4+2], 0stipop espop bxret
;========================================
set_old_int9:push bxpush esmov bx, 0mov es, bxclipush es:[9*4]pop es:[200H]      ; int9 ippush es:[9*4+2]pop es:[202H]    ; int9 csstipop espop bxret
;=========================================
new_int9:push axin al, 60Hpushfcall dword ptr cs:[200H]cmp al, 48H  ; 方向键-- 上  扫描码je isUpcmp al, 50H  ; 方向键-- 下  扫描码je isDowncmp al, 3BH  ; F1 扫描码jne int9Retcall change_screen_colorint9Ret:   pop axiret  ;============================================================
isUp:mov di, 160*10+40*2mov bx, 0B800Hmov es, bxmov byte ptr es:[di], 'U'jmp int9Ret;============================================================
isDown:mov di, 160*10+40*2mov bx, 0B800Hmov es, bxmov byte ptr es:[di], 'D'jmp int9Ret
;============================================================
change_screen_color:push bxpush cxpush esmov bx, 0B800Hmov es, bxmov bx, 1mov cx, 2000   ; 整个屏幕是 25行  80列,  1列是2个字节, 所以一行一共160个字节changeColor:    inc byte ptr es:[bx];mov byte ptr es:[bx], 01000001Badd bx, 2loop changeColorpop espop cxpop bxret
new_int9_end: nop;========================================
cpy_new_int9:mov bx, csmov ds, bxmov si, OFFSET new_int9mov bx, 0mov es, bxmov di, 7E00Hmov cx, OFFSET new_int9_end - OFFSET new_int9cldrep movsbretcode endsend start

当按下"F1"键,会改变屏幕颜色,  当按 "上方向键",会在屏幕上打印"U", 按“下方向键”,会在屏幕上打印"D"

汇编:键盘中断(int 9)相关推荐

  1. c语言 汇编中断程序,ARM7 C语言嵌入汇编开关中断

    __inline void IRQEnable(void) { int tmp; __asm { MRS tmp,CPSR       ///读取CPSR的值 BIC tmp,tmp,#0x80 // ...

  2. GNU ARM汇编--(五)中断汇编之嵌套中断处理

    在上篇<GNU ARM汇编--(四)中断汇编之非嵌套中断处理>中分析了最简单的中断处理的写法,再看TQ2440启动代码中的中断向量表的写法就一目了然了.今天抽时间对嵌套中断处理的学习做下整 ...

  3. 51单片机开发 矩阵键盘中断实验与简易计算器及proteus仿真

    51单片机开发 矩阵键盘中断实验与简易计算器及proteus仿真 文章目录 51单片机开发 矩阵键盘中断实验与简易计算器及proteus仿真 实验内容 一.实验一 矩阵键盘中断实验 数码管显示 1.仿 ...

  4. arm汇编 调用linux中断,GNU ARM汇编(四)中断汇编之非嵌套中断处理

    原标题:GNU ARM汇编(四)中断汇编之非嵌套中断处理 在写这篇blog之前,不得不感慨一句:纸上得来终觉浅,绝知此事要躬行.作为EE出身的,虽然好久好久没用汇编写 的中断了,但自我感觉对中断的理解 ...

  5. NASM汇编语言与计算机系统11-9号与0X16号中断显示键盘输入(int)

    本文的示例将显示从键盘上输入一个按键,屏幕上显示该按键的内容 0x09号中断:当从键盘上敲一个按键,会将按键的内容放到0x60端口,然后执行9号中断例程,由于9号中断例程已经被bios写好了,所以会直 ...

  6. c语言里10h代表什么,汇编中的10H中断int 10h详细说明

    汇编中的10H中断是由BIOS对显示器和屏幕所提供的服务程序.使用int 10h服务程序时,必须先指定ah寄存器为以下显示服务编号之一,以指定需要调用的功用. 显示服务 (Video Service: ...

  7. 8086汇编(10、int9键盘中断)

    今天我们来实现个功能按F1 不断改变屏幕颜色 概念: 按键盘会产生扫描码 通码 按住不放 断码 弹起,通码+80H int9中断对应的端口为60H,也就是我们按下键盘,就可以从60H中读取到扫描码 扫 ...

  8. c语言键盘中断扫描码,用51单片机中断编写的4x4键盘程序

    应用查询扫描编写键盘程序,由于要给按键去抖动,程序变得比较复杂和冗长(详见2013年9月29日博文<MSP430和AT89C51单片机4x4键盘C程序>),如果用中断编写,设置中断响应在下 ...

  9. 利用BIOS 中断INT 0x10显示字符和字符串

    注:以下程序系原创,使用AT&T格式汇编来调用BIOS 0x10中断,如有错误,欢迎指正.表达能力较差,写的不好,但若能帮助一二访客,幸甚. 使用BIOS 显示服务(Video Service ...

最新文章

  1. asp.net断点续传技术
  2. tensorflow学习(7. GAN实现MNIST分类)
  3. Delphi中拖动无边框窗口的5种方法
  4. 继承的CSS类在Chrome开发者工具里的显示
  5. Maven 使用bat批量清除本地仓库的lastUpdated文件
  6. 11g oracle xe启动_详解Oracle等待事件的分类、发现及优化
  7. 前端学习(757):预解析
  8. 201312-1 出现次数最多的数
  9. SeismicUnix:wtlib.c[小波变换库]
  10. python 分数等级转换_一文读懂,新高考“3+1+2”模式中等级赋分如何换算?
  11. paip.提升用户体验---c++ ide 自动化注释插件的开发...
  12. 昆仑通泰触摸屏与PLC通讯故障处理
  13. 王超(清华大学博士)Linux期末考核
  14. WiFi无线网络的几种认证与加密方式
  15. 基于ThingsBoard二次开发的物联网平台ThingsKit-Link白皮书
  16. 游戏编辑器制作(9)
  17. 进制之间的相互转换(超详细)
  18. 全力冲unreal了
  19. c#如何实现叫号操作_基于.NET的排队语音叫号系统设计与实现
  20. 2022区块链应用全景及未来展望

热门文章

  1. 数据库复习总结(12)数据检索
  2. 最小树形图(朱刘算法)
  3. 总结开发Silverlight项目准则(转)
  4. (转)一个带自定义分页,排序功能的DATAGRID控件(公开源码)
  5. 程序员的魔法——用Masking GAN让100,000人都露出灿烂笑容
  6. Spring Boot教程(三十四)整合elk(1)
  7. w,vmstat,top,sar
  8. 虚幻填坑004:减少starter content占用空间,只保留使用的assets
  9. BackTrack5 (BT5)无线password破解教程之WPA/WPA2-PSK型无线password破解
  10. U盘启动盘制作方法 2种绝招轻松搞定