《汇编语言》第16章——实验16 编写包含多个功能子程序的中断例程

需求

安装一个新的 int 7ch 中断例程,为显示输出提供如下功能子程序。

功能 1. 清屏;
2. 设置前景色;
3. 设置背景色;
4. 向上滚动一行。
参数 ah ah 寄存器传递功能号0 表示清屏,1 表示设置前景色,2 表示设置背景色, 3 表示向上滚动一行;
参数 al al 传送颜色值(al){ 0,1,2,3,4,5,6,7 }
用于12号功能

s16.asm

assume cs:code
code segment
 start:	
		call install_int7ch
 		mov ah,0
		mov al,3
		int 7ch		

		mov ax,4c00h
		int 21h

; =======================================================	
; ------------------- 子程序 install_7ch  -----------------
; 设置显示效果
; -------------------------------------------------------
; 参数: 	无
; 返回: 无
; -------------------------------------------------------
install_int7ch:
		push ax
		push si
		push di
		push es
		push cx
		; ---------------- 安装(复制数据) ----------------
		mov ax,cs
		mov ds,ax

		mov ax,0
		mov es,ax

		mov si,offset int7ch ;设置 ds:si 指向源地址
		mov di,200h 		;设置 es:di 指向目的地址
		mov cx,offset int7ch_end-offset int7ch
		cld			;设置传输方向为正。movsb中si,di递增
		rep movsb 	;将ds:si 拷贝到 es:di 长度cx
		; ---------------- 安装(复制数据) ----------------

		; ----------------- 设置中断向量 -----------------
		mov ax,0
		mov es,ax
		cli								; 临时屏蔽中断
		mov word ptr es:[7ch*4],200h  	; 设置【中断处理程序】的:偏移地址
		mov word ptr es:[7ch*4+2],0h 	; 设置【中断处理程序】的:段地址
		sti 							; 恢复中断响应
		; ----------------- 设置中断向量 -----------------
		pop cx
		pop es
		pop di
		pop si
		pop ax
		ret
; -------------------- 子程序 install_7ch -----------------
; =================================================
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Yengi

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值