汇编语言(第3版,王爽著):实验15 安装新的 int 9 中断例程
2022/5/27 1:21:25
本文主要是介绍汇编语言(第3版,王爽著):实验15 安装新的 int 9 中断例程,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
1) 思路:
- 如果完整的看完了第 15 章节的内容,那么题目还是很简单的
- 只需要判断 A 键松开后,向端口 60h 发送的扫描码(即 A 键的断码为 9eh)
2) 代码实现:
文件名:exp15.asm
assume cs:code stack segment db 128 dup (0) stack ends code segment start: mov ax, stack mov ss, ax mov sp, 128 push cs pop ds mov ax, 0 mov es, ax mov si, offset int9 ; 设置 ds:si 指向源地址 mov di, 204h ; 设置 es:di 指向目的地址 mov cx, offset int9end - offset int9 ; 设置 cx 为传输长度 cld ; 设置传输方向为正 rep movsb push es:[9*4] pop es:[200h] push es:[9*4+2] pop es:[202h] ; 保存原 int 9 中断例程的入口地址到 0:200 ~ 0:203 cli mov word ptr es:[9*4], 204h mov word ptr es:[9*4+2], 0 sti ; 在中断向量表中设置新的 int 9 中断例程的入口地址 mov ax, 4c00h int 21h int9: push ax push bx push cx push es in al, 60h ; 从 60h 端口读出键盘的输入 pushf call dword ptr cs:[200h] ; 模拟 int 指令调用原 int 9 中断例程(原 int 9 中断例程的地址在 0:200 ~ 0:203);当此中断例程执行时 (CS)=0 cmp al, 9eh ; A 键的断码为 9eh jne int9ret mov ax, 0b800h mov es, ax mov bx, 0 mov cx, 2000 s: mov byte ptr es:[bx], 'A' add bx, 2 loop s int9ret: pop es pop cx pop bx pop ax iret int9end: nop code ends end start
3) 程序运行效果:
这篇关于汇编语言(第3版,王爽著):实验15 安装新的 int 9 中断例程的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-04-17基于SpringWeb MultipartFile文件上传、下载功能
- 2024-04-14个人开发者,Spring Boot 项目如何部署
- 2024-04-14RAG应用开发实战02-相似性检索的关键 - Embedding
- 2024-04-14出海软件草根逆袭打法是什么?
- 2024-04-13鸿蒙原生应用再新丁!企查查 碧蓝航线 入局鸿蒙
- 2024-04-11RAG应用开发实战(01)-RAG应用框架和解析器
- 2024-04-10DevOps已死?2024年的DevOps将如何发展
- 2024-04-10码农必看:常见源代码混淆技术详解
- 2024-04-07以一当十丨TiDB 在东吴证券秀财 APP 的应用实践
- 2024-04-07月活超 1.1 亿,用户超 4 亿,你也在用的「知乎」是如何在超大规模 TiDB 集群上玩转多云多活的?来听听知乎代晓磊的答案!