汇编王爽老师,编写int 9中断例程,用esc键改变字母颜色
2021/11/23 17:10:12
本文主要是介绍汇编王爽老师,编写int 9中断例程,用esc键改变字母颜色,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
第一点要注意的是原int 9例程用 iret 语句返回,从栈里弹出三个数据。我们用call 语句调用int 9 例程,需要也入栈一个寄存器值 pushf,保持对应。
修改中断向量表时,用 cli 和 sti 语句禁用中断,和恢复中断。防止程序出错。
assume cs:code,ds:data,ss:stack stack segment db 128 dup (0) stack ends data segment db 4 dup (0) data ends code segment main: mov ax,stack mov ss,ax mov sp,128;设置栈段 mov ax,data mov ds,ax;设置数据段,保存原int9中断例程入口地址 mov ax,0 mov es,ax cli mov ax,es:[9 * 4];IP mov ds:[0],ax mov ax,es:[9 * 4 + 2];CS,保存原int9入口 mov ds:[2],ax sti mov word ptr es:[9 * 4],offset int9 mov word ptr es:[9 * 4 + 2],cs;int9 指向新段 mov ax,0b800h mov es,ax mov ah,'a' show: mov es:[160 * 12 + 40 * 2],ah call delay inc ah cmp ah,'z' jna show mov ax,0 mov es,ax cli push ds:[0] pop es:[9 * 4] push ds:[2] pop es:[9 * 4 + 2] sti mov ax,4c00h int 21h delay: push ax push dx mov dx,10h mov ax,0 godelay: sub ax,1 sbb dx,0 cmp ax,0 jne godelay cmp dx,0 jne godelay pop dx pop ax ret int9: push ax push bx push es in al,60h pushf pushf pop bx and bh,11111100b push bx popf call dword ptr ds:[0];以call调用,int9以iret返回 cmp al,1 jne int9ret mov ax,0b800h mov es,ax inc byte ptr es:[160 * 12 + 2 * 40 + 1] int9ret: pop es pop bx pop ax iret;重点,以iret返回中断掉用 code ends end main
测试效果如下:
谢谢阅读
这篇关于汇编王爽老师,编写int 9中断例程,用esc键改变字母颜色的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-05-25Elevate Your Lead Generation Game with Maps Scraper AI
- 2024-05-15PingCAP 黄东旭参与 CCF 秀湖会议,共探开源教育未来
- 2024-05-13PingCAP 戴涛:构建面向未来的金融核心系统
- 2024-05-09flutter3.x_macos桌面os实战
- 2024-05-09Rust中的并发性:Sync 和 Send Traits
- 2024-05-08使用Ollama和OpenWebUI在CPU上玩转Meta Llama3-8B
- 2024-05-08完工标准(DoD)与验收条件(AC)究竟有什么不同?
- 2024-05-084万 star 的 NocoDB 在 sealos 上一键起,轻松把数据库编程智能表格
- 2024-05-08Mac 版Stable Diffusion WebUI的安装
- 2024-05-08解锁CodeGeeX智能问答中3项独有的隐藏技能