41 lines
556 B
NASM
41 lines
556 B
NASM
|
bits 16
|
||
|
org 100h
|
||
|
|
||
|
jmp start
|
||
|
|
||
|
shuffle_start:
|
||
|
push 0xB800
|
||
|
pop es
|
||
|
mov cx, 80*24*2
|
||
|
mov ax, 'AA'
|
||
|
xor di, di
|
||
|
rep stosw
|
||
|
.lbl: jmp .lbl
|
||
|
shuffle_end:
|
||
|
nop
|
||
|
shuffle_len equ (shuffle_end - shuffle_start + 1)
|
||
|
|
||
|
start:
|
||
|
; calculate physical address of shuffled part
|
||
|
xor eax, eax
|
||
|
push ds
|
||
|
pop ax
|
||
|
shl eax, 4
|
||
|
add ax, shuffle_start
|
||
|
mov dword [source], eax
|
||
|
|
||
|
mov ax, 0012h
|
||
|
mov di, shuffle_descriptors
|
||
|
mov cx, num_shuffle_descriptors
|
||
|
mov ebp, 0x7c00
|
||
|
int 22h
|
||
|
int3
|
||
|
|
||
|
shuffle_descriptors:
|
||
|
dd 0x7C00
|
||
|
source: dd 0
|
||
|
dd shuffle_len
|
||
|
|
||
|
num_shuffle_descriptors equ 1
|
||
|
|