王爽汇编语言实验16 (个人笔记)

实验要求:

安装一个新的int7ch 中断例程,为显示输出提供如下功能子程序。
(1)清屏
(2)设置前景色
(3)设置背景色
(4)向上滚动一行

入口参数说明
(1)用ah寄存器传递功能号:0表示清屏,1表示设置前景色,2表示设置背景色,3表示向上滚动一行
(2)对于1、2号功能,用al传递颜色值,al取值0-7

思路:

显存地址中偶数位为显示字符,奇数位为属性字节
前景色:2 1 0 位
背景色:6 5 4 位
闪烁: 7 位
高亮:3 位

清屏:将显存偶数位数据变为‘ ’;
设置前景色背景色,先将对应位上的二进制数通过与运算置0,再通过al传入的值进行或运算
向上滚,将从第二行开始,将第二行数据用remov指令复制到第一行依次进行

代码:

assume cs:code
code segment
start:	mov ax,cs
		mov ds,ax
		mov si,offset int7
		mov di,200h
		mov cx,offset int7cend-offset int7c
		mov ax,0
		mov es,ax
		cld
		rep movsb

		mov ax,0
		mov es,ax
		mov word ptr es:[7ch*4],200h
		mov word ptr es:[7ch*4+2],0

		mov ax,0202h      改变这里的ax值来检测
		int 7ch
		mov ax,4c00h
		int 21h

		org 200h              伪指令org表示从偏移地址200h处开始执行代码,为了以后执行中断时,偏移地址保持一致
int7c:	jmp short set              
		table dw sub0,sub1,sub2,sub3     用到数据标号,不仅可以表示内存单元的地址,还表示内存单元的长度 这里用来存放各个标号的偏移地址

set:	push bx
		cmp ah,3
		ja sret
		mov bl,ah
		mov bh,0
		add bx,bx                   通过add操作得到数据标号的偏移地址

		call word ptr table[bx]       默认段地址是CS

sret:	pop bx
		iret

sub0:	push bx
		push cx
		push es
		mov bx,0b800h
		mov es,bx
		mov bx,0
		mov cx,2000
sub0s:  mov byte ptr es:[bx],' '
		add bx,2
		loop sub0s
		pop es
		pop cx
		pop bx
		ret

sub1:   push bx 
		push cx
		push es

		mov bx,0b800h
		mov es,bx
		mov bx,1
		mov cx,2000
sub1s:  and byte ptr es:[bx],11111000b
		or es:[bx],al
		add bx,2
		loop sub1s
		
		pop es
		pop cx
		pop bx
		ret

sub2:	push bx
		push cx
		push es
		mov bx,0b800h
		mov es,bx
		mov bx,1
		mov cl,4
		shl al,cl
		mov cx,2000
sub2s:  and byte ptr es:[bx],10001111b
		or es:[bx],al
		add bx,2
		loop sub2s

		pop es
		pop cx
		pop bx
		ret

sub3:	push cx
        push si
		push di
		push es
		push ds

		mov si,0b800h
		mov es,si
		mov ds,si
		mov si,160
		mov di,0
		cld
		mov cx,24

sub3s:	push cx
		mov cx,160
		rep movsb
		add si,160
		add di,160
		pop cx
		loop sub3s

		mov cx,80
		mov si,0
sub3s1: mov byte ptr [160*24+si],' '
		add si,2
		loop sub3s1

		pop ds
		pop es
		pop di
		pop si
		pop cx
		ret
int7cend:nop

code ends
end start

截图展示:

王爽汇编语言实验16 (个人笔记)_第1张图片
王爽汇编语言实验16 (个人笔记)_第2张图片
王爽汇编语言实验16 (个人笔记)_第3张图片
王爽汇编语言实验16 (个人笔记)_第4张图片

你可能感兴趣的:(汇编笔记)