home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
The C Users' Group Library 1994 August
/
wc-cdrom-cusersgrouplibrary-1994-08.iso
/
listings
/
v_07_08
/
v7n8127a.txt
< prev
next >
Wrap
Text File
|
1989-10-02
|
2KB
|
72 lines
IDEAL
%pagesize 56,120
MODEL LARGE
P386
STRUC descSTRUCTURE ;global descriptor table entry
seglim dw ? ;max size of the segment
loaddr dw ? ;24-bits of address little-endian
hiaddr db ?
axright db ? ;access rights must be 93h
res0 dw ? ;reserved - must be zero
ENDS
stack
DB 512 DUP (?)
dataseg
label GDT descstructure ;User supplied partially filled-in GDT
descstructure <0,0,0,0,0> ;dummy - must be zeros
descstructure <0,0,0,0,0> ;descriptor of this GDT - must be zero
label movesource descstructure
descstructure <0ffffh,0,0,0,0> ;descriptor of source block
label movedest descstructure
descstructure <0ffffh,0,0,0,0> ;descriptor of destination block
descstructure <0,0,0,0,0> ;BIOS will modify to Protected code seg
DESCSTRUCTURE <0,0,0,0,0> ;BIOS will modify to Protected stk seg
POSTER DB 0
COUNTER DW 0
FILL DB 2400 DUP (0AAH) ;move this to FELL
FELL DB 2400 DUP (055H)
MACRO MAKE_24_BIT_ADDR SEGVAL, OFSET, MEG
MOV AX,MEG
MOV CX,SEGVAL
REPT 4
SHL CX,1
RCL AX,1
ENDM
ADD CX,offset OFSET
ADC AL,0 ;fixup if carry out of 16 bits
ENDM
codeseg
proc start near
cld ;string direction
mov ax,dgroup ;init data seg
MOV DS,AX
make_24_bit_addr ds, fill, 0 ;test pattern
MOV [MOVESOURCE.LOADDR],CX ;addr goes into GDT entry for
MOV [MOVESOURCE.HIADDR],AL ; source
make_24_bit_addr ds, fell, 0 ;address target area
MOV [MOVEdest.LOADDR],CX
MOV [MOVEdest.HIADDR],AL
MOV [MOVEsource.axright],93h;tell 80x86 protection it's ok
MOV AX,DS ;point ES:SI to our GDT
MOV ES,AX
MOV SI,OFFSET GDT
MOV AH,87H ;request function 87h
MOV CX,1200 ;how many WORDS to move
INT 15H
MOV AH,4CH ;terminate program
INT 21H
ENDP
end start