一个综合的程序
题目要求:安装一个新的INT 7CH中断例程,实现清屏,设置前景色,设置背景色,向上滚动一行的功能
assume cs:code
code segment
start:
mov ax,cs
mov ds,ax
mov si,offset intstart
mov ax,0
mov es,ax
mov di,200h
mov cx,offset intstartend-offset intstart
cld
rep movsb
;以上9句为安装中断例程
mov word ptr es:[7ch*4],200h
mov word ptr es:[7ch*4+2],0
;以上2句为设置中断向量
mov ax,0b800h
mov es,ax
mov di,0
mov cx,2000
s: mov byte ptr es:[di],'A'
add di,2
loop s
mov ah,2 ;达不到预期的效果啊?
mov al,5
int 7ch
mov ax,4c00h
int 21h
intstart: jmp short set
table dw sub1,sub2,sub3,sub4
set: ;push ax
push bx
cmp ah,3
ja sret
mov bl,ah
mov bh,0
add bx,bx
call word ptr table[bx]
sret: pop bx
;pop ax
ret
sub1: push ax
push bx
push di
push cx
mov ax,0b800h
mov es,ax
mov ax,0
mov ax,di
mov cx,2000
sub1s:mov byte ptr es:[di],' '
add di,2
loop sub1s
pop cx
pop di
pop bx
pop ax
ret
sub2: push es
push bx
push cx
mov bx,0b800h
mov es,bx
mov bx,1
mov cx,2000
sub2s: and byte ptr es:[bx],11111000b
or es:[bx],al
loop sub2s
pop cx
pop bx
pop es
ret
sub3: push es
push bx
push cx
mov bx,0b800h
mov es,bx
mov bx,1
mov cl,4
shl al,cl
mov cx,2000
sub3s: and byte ptr es:[bx],10001111b
shl al,1
shl al,1
shl al,1
shl al,1
or es:[bx],al
add bx,2
loop sub3s
pop cx
pop bx
pop es
ret
sub4: push bx
push es
push ds
push di
push si
push cx
mov bx,0b800h
mov es,bx
mov ds,bx
mov di,0
mov si,160
cld
mov cx,24
sub4s: push cx
mov cx,160
rep movsb
pop cx
loop sub4s
mov cx,80
mov si,0
sub4ss: mov byte ptr [160*24+si], ' '
add si,2
loop sub4ss
pop bx
pop es
pop ds
pop di
pop si
pop cx
ret
intstartend: nop
code ends
end start
弄了老半天,总是出现内存出错的信息 望哪位高人给讲解一下 我主要是那个应用测试的程序段不会写