; far pointer load ; IN ES:BX far pointer to data ; CX number of bytes to copy ; 0:DX destination buffer ; only CX is trashed lod: push si push di push es ; ES:DI := DS:DX mov ax, ds mov es, ax mov di, dx ; DS:SI := 0:BX xor ax, ax mov ds, ax mov si, bx ; copy pushf cld rep movsb popf ; reset DS to kernel data mov ds, cx pop es pop di pop si ret ; far pointer store ; IN ES:BX far ptr ; CX number of bytes ; 0:DX source buffer ; only CX is trashed sto: push si push di mov si, dx mov di, bx ; do the copy pushf cld rep movsb popf pop di pop si ret