【汇编语言】by王爽 | 实验17.2:使用 int 16h 中断例程读取键盘缓冲区

前言:本实验为王爽老师的《汇编语言》第三版中的实验17.2(p303)

实验环境:DOSBox 0.74-3

基础知识:请先查看书中 17.2 节关于 int 16h 中断例程键盘缓冲区的介绍。

实验任务:

        编程,接收用户的键盘输入,输入“r”,将屏幕上的字符设置为红色;输入“g”,将屏幕上的字符设置为绿色;输入“b”,将屏幕上的字符设置为蓝色

程序代码: 

assume cs:code

code segment 
start: ;调用16h的0号功能
       ;从键盘缓冲区读取一个键盘输入返回ax
       ;ah=扫描码,al=ascii码
       mov ah,0
       int 16h  
       mov ah,00000001b  ;ah为蓝色
       cmp al,'r'
       je red 
       cmp al,'g'
       je green
       cmp al,'b'
       je set_color
       jmp short quit  ;按下非r、g、b的其它键返回DOS
  red: shl ah,1
green: shl ah,1

set_color:
       mov bx,0b800h
       mov es,bx
       mov di,1
       mov cx,2000
    s: and byte ptr es:[di],11111000b  ;将属性字节012位(前景色)置0
       or byte ptr es:[di],ah  ;设置前景色
       add di,2
       loop s

       ;本次设置完成后返回start继续设置(不返回DOS)
       jmp far ptr start

 quit: mov ax,4c00h
       int 21h

code ends
end start

运行结果: 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值