(汇编语言)中断:改变当前屏幕显示颜色

本文介绍了一个INT9中断例程的安装过程,通过该例程,按下F1键可以改变当前屏幕的颜色。文章详细展示了使用汇编语言进行中断例程的安装步骤,并解释了如何通过修改屏幕缓冲区来实现颜色变化。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

安装一个int9中断例程,按F1改变当前屏幕显示颜色 

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
    mov di, 204h
    mov cx, offset int9end - offset int9
    cld
    rep movsb
 
    push es:[9 * 4]
    pop es:[200h]
    push es:[9 * 4 + 2]
    pop es:[202h]
 
    cli
    mov word ptr es:[9 * 4], 204h
    mov word ptr es:[9 * 4 + 2], 0
    sti
 
    call delay
 
    mov ax, 4c00h
    int 21h
 
delay:
    push ax
    push dx
 
    mov dx, 10h
    mov ax, 0
sd:
    sub ax, 1
    sbb dx, 0
    cmp ax, 0
    jne sd
    cmp dx, 0
    jne sd
    pop dx
    pop ax
    ret
 
int9:
    push ax
    push bx
    push cx
    push es
 
    in al, 60h
 
    pushf
    call dword ptr cs:[200h]
 
    cmp al, 3bh
    jne int9ret
 
    mov ax, 0b800h
    mov es, ax
    mov bx, 1
    mov cx, 2000
s:
    inc byte ptr es:[bx]
    add bx, 2
    loop s
 
int9ret:
    pop es
    pop cx
    pop bx
    pop ax
    iret
 
int9end:
    nop
code ends
end start

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值