【汇编语言】实验15-在DOS下,按下‘A‘键后,除非不再松开,如果松开,就显示满屏幕的‘A’

源程序

assume cs:code

stack segment
	db 128 dup(0)
stack ends

code segment
start:
	mov ax,stack
	mov ss,ax
	mov sp,128

	call init_reg												;初始化寄存器
	call cpy_int9												;开始复制中断例程到 0000:0204
	call set_int9												;安装中断例程

	mov ax,4c00h
	int 21h

init_reg:
	mov ax,cs
	mov ds,ax
	mov si,offset int9											;cld, rep movsb,es*16+di = ds*16+si

	mov ax,0
	mov es,ax
	mov di,204h

	mov cx,offset int9_end - offset int9						;要复制的中断例程的长度
	ret

int9:															;int 9 控制键盘外设
	push ax
	push bx
	push cx
	push es

	in al,60h													;键盘的输入处理过程,扫描码,送入60h端口,引发9号中断,CPU执行中断例程,处理键盘输入

	pushf
	call dword ptr cs:[200h]

	cmp al,9Eh													;断码 = 扫描码 + 80H
	jne int9_ret												;如果不等,跳出

	mov ax,0B800H												;如果松开键盘,执行满屏的A
	mov es,ax
	mov cx,2000
	mov bx,0
	
	mov al,'A'
	
full_screen:
	mov byte ptr es:[bx],al										;'A' 的ASCII码 = 41H
	add 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值