This sample of a direct write video page scroll routine for standard textmode screens was taken from ANSI.SYS
; DATA
Attribute db 7
VideoMemSeg dw b800
VideoPageSegOff db 0
; SET UP FOR BLANKING LAST LINE
mov bh,Attribute ; Current Video attribute
mov bl,20h ; ASCII space character
mov bp,50h ; 80 words per line
; POINT TO VIDEO MEMORY AT THE CORRECT PAGE
mov ax,VideoMemSeg ; Segment address of video memory (B800)
add ax,VideoPageSegOff ; Video page number * Page byte length / 16
mov es,ax
mov ds,ax
xor di,di ; Move to first line
mov si,0A0h ; from second line (160 bytes per line)
mov cx,780h ; Page word length
; DO IT
cld
rep movsw ; Scroll the page
mov ax,bx
mov cx,bp
rep stosw ; Blank the last line