安装一个新的int9中断例程,功能:在DOS下,按’A'键后,除非不在松开,如果松开,就显示满屏幕的‘a’,其他的见照常处理

提示:按下一个键时产生的扫描码为通码

松开一个键后产生的扫描码为断码 断码=通码+80h

设置一个无限循环  作为可输入操作的前提

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,128(0)call cpy_new_int9call sav_old_int9    ;将原来的int 9中断例程的入口地址保存在0:200 0:202中call set_new_int9 ;设置中断向量表TESTA:      mov ax,1000hjmp TESTAmov ax,4c00hint 21h;========================================
new_int9:   push axin al,60hpushfcall dword ptr cs:[200h]cmp al,9ehjne int9Retcall set_screen_letterint9Ret:    pop axiret;=======================================
set_screen_letter:push bxpush cxpush dxpush esmov bx,0b800hmov es,bxmov bx,0mov dl,'A'setScreenLetter:mov es:[bx],dladd bx,2loop setScreenLetterpop espop dxpop cxpop bxretnew_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 movsbret ;===========================================
sav_old_int9:mov bx,0mov es,bxclipush es:[9*4]pop es:[200h]push es:[9*4+2]pop es:[202h]sti     ret;==============================================
set_new_int9:mov bx,0mov es,bxclimov word ptr es:[9*4],7e00hmov word ptr es:[9*4+2],0stiret;================================================code ends
end start

松开一个键后产生的扫描码为断码 断码=通码+80h

汇编语言王爽 实验十五相关推荐

  1. 汇编语言王爽-实验9

    王爽汇编语言实验9 实验要求 参考资料 代码 assume cs:codedata segmentdb 'welcome to masm'db 02h, 24h, 71j data endscode ...

  2. 开发日记-20190914 关键词 汇编语言王爽版 第五章

    第五章 [BX]和loop指令 5.2 Loop指令 loop指令的格式是:loop标号,CPU执行loop指令的时候,要进行两步操作, (cx)=(cx)-1 判断cx中的值,不为零则转至标号处执行 ...

  3. 汇编语言---王爽 (实验 8)分析一个奇怪的程序

    简介 : 分析下面的程序 , 在运行前思考 , 这个程序可以正常返回吗 ? 运行后再思考 , 为什么是这种结果 ? 通过这个程序加深对相关内容的理解 assume cs:code code segme ...

  4. 汇编语言王爽 实验第四章

    实验一 :创建第一个源程序 在asm文件夹中创建一个名为t2的记事本 编写源文件,其次将其格式修改为asm文件 用masm t2;进行编译生成obj文件 然后用link t2;进行连接生成exe文件 ...

  5. 汇编语言王爽 实验12

    都在代码里面了 ​ assume cs:code,ds:data,ss:stackdata segmentdb 128 dup(0) ;一般把中断输出的字符 写道 0000:0200 -0000:03 ...

  6. 【汇编语言 王爽】实验14代码

    实验需求如下: 编程,以"年/月/日 时:分:秒"的格式显示时间 注意:CMOS RAM中储存着系统的配置信息,除了保存时间信息的单元外,不要向其他单元写入内容,否则将引起一些系统 ...

  7. 汇编语言 王爽 第四版 实验5

    汇编语言 王爽 第四版 课后检测点 课后实验 持续更新~~ 实验5 编写.调试具有多个段的程序 1 编译连接下面程序,用debug加载.跟踪,回答问题. assume cs:code,ds:data, ...

  8. 汇编语言 王爽 第四版 实验1

    汇编语言 王爽 第四版 课后检测点 课后实验 持续更新~~ 文章目录 实验1 查看CPU和内存,用机器指令和汇编指令编程 1 开始执行命令: 2 指令 过程 3 4 实验1 查看CPU和内存,用机器指 ...

  9. 汇编语言——王爽版 总结

    汇编语言-王爽summary<考试复习版> 摆烂一学期,期末抱佛脚 只针对必要内容总结,并非按目录总结 文章目录 汇编语言-王爽summary<考试复习版> `只针对必要内容总 ...

  10. 汇编语言 王爽 第四版 第二章 检测点2.2

    汇编语言 王爽 第四版 课后检测点 课后实验 持续更新~~ 检测点2.2 给定段地址为0001H,仅通过变化偏移地址寻址,CPU的寻址范围为 0010H 到 1000FH . 最小肯定是偏移地址为0, ...

最新文章

  1. 异构计算架构师眼中的AI算法(object detection)
  2. 处理问题:变量名‘@UserName’已声明。变量名在插叙批次或存储过程内部必须唯一
  3. Forefront_TMG_2010-TMG发布SSL OWA Exchange 2010
  4. 8.元组tup.rs
  5. java spi机制_Java是如何实现自己的SPI机制的? JDK源码(一)
  6. PHP字符串函数hex2bin( 转换十六进制字符串为二进制字符串)
  7. 【SAP Abap】SAP Eclipse ADT开发环境配置与应用
  8. 前端直传阿里云OSS
  9. [数值计算-1]:数学建模、科学计算、数值计算的关系
  10. STM32LED--基于HAL库(LCD与LED冲突?一文看懂如何精准劝架)
  11. 用matlab求解分支定界法,matlab分支定界法程序
  12. 墨卡托经纬度坐标转换
  13. 从 160 万到 1.5 亿美元 ,开源软件迎来融资热潮
  14. 【雅思大作文考官范文】——第十一篇:'homework' essay
  15. 坪山区关于开展2022年度科技创新专项资金申报工作的通知
  16. Java 8 新增函数式接口到底是什么?
  17. 飞鱼科技<校招开发面试官>面试经验分享
  18. 完成你的第一个智能无人机
  19. MMA-Mathematica定义函数
  20. 德鲁克:卓有成效的管理者,一次只做一件事

热门文章

  1. SourceTree使用笔记 ssh-key配置
  2. java swing 飞机大战游戏 github 免费 开源 公开 源码
  3. 【QQ机器人】来认领一只派蒙Bot吧:QQ娱乐机器人,免费开源、易搭建、20余种功能集成、可扩展
  4. 【Android 12 AOSP学习】Android 12源码下载编译
  5. Third《高质量程序设计指南—C++/C语言》(第二版)
  6. live2d_原画人插画教程,想知道live2d虚拟主播是怎么制作出来的吗?
  7. 【MFC开发(2)】新建一个对话框MFC项目(vs2013)
  8. java并发包 atomic_Java并发包之AtomicXX
  9. matlab2012安装过程中退出,Matlab 2012安装图解
  10. windows配置Hadoop开发环境