34 lines
402 B
NASM
34 lines
402 B
NASM
bits 16
|
|
swap:
|
|
push bx
|
|
movzx bx,dl
|
|
mov dl,[cs:bx+(table-$$)]
|
|
pop bx
|
|
.jmp: jmp 0:0
|
|
nop
|
|
nop
|
|
install:
|
|
;; DS = CS, ES = 0
|
|
mov edi,[es:si+4*0x13]
|
|
mov [swap.jmp+1],edi
|
|
mov di,[es:0x413]
|
|
dec di
|
|
mov [es:0x413],di
|
|
shl edi,16+6
|
|
mov [es:si+4*0x13],edi
|
|
shr edi,16
|
|
mov es,di
|
|
xor di,di
|
|
rep movsd
|
|
mov si,0
|
|
mov di,0
|
|
mov ds,si
|
|
mov es,di
|
|
mov ecx,0
|
|
mov esi,0
|
|
mov edi,0
|
|
jmp 0:0
|
|
|
|
align 16
|
|
table:
|