|

楼主 |
发表于 2025-3-21 15:05:01
|
显示全部楼层
以下是安装程序
assume cs:code
code segment
setbegin: jmp short getid
table dw sub1,sub2,sub3,sub4
getid: push bx
cmp ah,3
ja iretp
mov bh,0
mov bl,ah
add bx,bx
call word ptr table[bx]
iretp: pop bx
iret
sub1: push es
push cx
push bx
mov bx,0b800h
mov es,bx
mov bx,0
mov cx,2000
lpcls: mov byte ptr es:[bx],' '
add bx,2
loop lpcls
pop bx
pop cx
pop es
ret
sub2: push es
push cx
push bx
mov bx,0b800h
mov es,bx
mov bx,1
mov cx,2000
lpfore: and byte ptr es:[bx],11111000b
or es:[bx],al
add bx,2
loop lpfore
pop bx
pop cx
pop es
ret
sub3: push es
push cx
push bx
mov cl,4
shl al,cl
mov bx,0b800h
mov es,bx
mov bx,1
mov cx,2000
lpbgd: and byte ptr es:[bx],10001111b
or es:[bx],al
add bx,2
loop lpbgd
pop bx
pop cx
pop es
ret
sub4: push es
push cx
push ds
push di
push si
mov dx,0b800h
mov es,dx
mov ds,dx
mov di,0
mov si,160
mov cx,24
cld
lpscr: push cx
mov cx,160
rep movsb
pop cx
loop lpscr
mov cx,80
mov di,160*24
clsr: mov byte ptr es:[di],' '
add di,2
loop clsr
pop si
pop di
pop ds
pop cx
pop es
ret
setend: nop
start: mov ax,cs
mov ds,ax
mov ax,0
mov es,ax
mov di,200h
mov si,offset setbegin
mov cx,offset setend - offset setbegin
cld
rep movsb
cli
mov word ptr es:[7ch*4],0
mov word ptr es:[7ch*4+2],20h
sti
mov ax,4c00h
int 21h
code ends
end start |
|