汇编王爽实验15,按F1更改屏幕字体颜色

本文探讨了一段涉及堆栈和中断服务程序(ISRs)的代码,讲述了如何重新组织内存段,如栈段和代码段,以及如何修改中断向量表。主要内容包括堆栈初始化、指令操作和ISRs的保存与恢复,适合了解中断处理和内存管理的开发者阅读。
摘要由CSDN通过智能技术生成
assume cs:code,ss:stack
stack segment
	db 128 dup (0)
stack ends

code segment
main:
	mov ax,stack
	mov ss,ax
	mov sp,128;栈段
	
	mov ax,cs
	mov ds,ax
	mov si,offset int9;源数据段
	
	mov ax,0
	mov es,ax
	mov di,204h;目标段
	
	mov cx,offset int9end - offset int9
	
	cld
	rep movsb;完成传送新int9
	
	push es:[9 * 4]
	pop es:[200h]
	push es:[9 * 4 + 2]
	pop es:[202h];保存原int9中断例程的入口地址
	
	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
		
		pushf
		call dword ptr cs:200h
		
		in al,60h
		
		cmp al,3bh
		jne ok
		
		mov ax,0b800h
		mov es,ax
		mov bx,1
		mov cx,2000
		lp:
			inc byte ptr es:[bx]
			add bx,2
		loop lp
		
		ok:
			pop es
			pop cx
			pop bx
			pop ax
			iret
	int9end:  
			nop
code ends
end main

在这里插入图片描述
谢谢阅读

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值