|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
;编写子程序实现功能1,清屏 2,设置前景色 3,设置背景色 4,向上滚动一行
assume cs:code
code segment
start: mov ax,cs
mov ds,ax
mov si,offset int7
mov ax,0
mov es,ax
mov di,200h
mov cx,offset int7ch-offset int7
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 ah,2 ;ah传递执行子程序的序号 0:清屏 1:设置前景色 2:设置背景色 3:向上滚动一行
mov al,2 ;al存储颜色
int 7ch
mov ax,4c00h
int 21h
ORG 200H
int7:jmp short s0
a dw fun1,fun2,fun3,fun4
s0:push bx
cmp ah,3
ja s5
mov bl,ah
mov bh,0
add bx,bx
call word ptr a[bx]
s5:pop bx
nop
iret
fun1:push bx ; 清屏
push es
push cx
mov bx,0b800h
mov es,bx
mov bx,0
mov cx,2000
s:mov byte ptr es:[bx],' '
add bx,2
loop s
pop cx
pop es
pop bx
ret
fun2:push bx ; 设置前景色
push es
push cx
mov bx,0b800h
mov es,bx
mov bx,1
mov cx,2000
s1:and byte ptr es:[bx],11111000b
or es:[bx],al
add bx,2
loop s1
pop cx
pop es
pop bx
ret
fun3: push bx ; 设置背景色
push es
push cx
shl al,1
shl al,1
shl al,1
shl al,1
mov bx,0b800h
mov es,bx
mov bx,1
mov cx,2000
s2:and byte ptr es:[bx],10001111b
or es:[bx],al
add bx,2
loop s2
pop cx
pop es
pop bx
ret
fun4: push di ;向上滚动一行
push es
push cx
push si
push ds
mov di,0b800h
mov es,di
mov ds,di
mov di,0
mov si,160
mov cx,24
s3: push cx
mov cx,160
cld
rep movsb
pop cx
loop s3
mov si,0
mov cx,80
s4:mov byte ptr es:[160*24+si],' '
add si,2
loop s4
pop ds
pop di
pop cx
pop es
pop bx
ret
int7ch:nop
code ends
end start
|
|