首页 > 编程语言 > 详细

王爽《汇编语言》(第三版)实验15解析

时间:2020-10-31 16:40:03      阅读:38      评论:0      收藏:0      [点我收藏+]

安装新的 int 9 中断例程
安装一个新的 int 9 中断例程,功能: 在DOS下,按下“A”键后,除非不再松开,如果松开,就显示满屏幕的“A”,其他的键照常处理。
提示:断码=通码+80H

代码如下

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]
		
		cli
		mov word ptr es:[9*4],204h
		mov word ptr es:[9*4+2],0
		sti
		
		mov ax,4c00h
		int 21h
		
	int9:
		push ax
		push bx
		push cx
		push es
		
		in al,60h
		
		pushf 
		call dword ptr cs:[200h]	; 当此中断例程执行时(CS)=0
		
		cmp al,1Eh+80h	; 	‘A’的断码为1eh+80h
		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

王爽《汇编语言》(第三版)实验15解析

原文:https://www.cnblogs.com/nojacky/p/13905860.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!