Mail Archives: djgpp/1997/04/15/01:23:15
From: | <fremlin AT oncology DOT wisc DOT edu>
|
Newsgroups: | comp.os.msdos.djgpp
|
Subject: | Re: Why add 36008 to offset to reach buffer?
|
Date: | Mon, 14 Apr 97 21:15:27 CST
|
Organization: | University of Wisconsin, Madison
|
Lines: | 59
|
Message-ID: | <86332.fremlin@oncology.wisc.edu>
|
NNTP-Posting-Host: | f209-146.net.wisc.edu
|
To: | djgpp AT delorie DOT com
|
DJ-Gateway: | from newsgroup comp.os.msdos.djgpp
|
On 11 Apr 1997 00:36:59 GMT,
Guido Bursch <bursch AT uni-muenster DOT de> wrote:
>Hi all!
>
>I have a question for my little virtual screen program.
>I made up a virtual scree in mode 13h with:
>
>unsigned char virtscreen[64000];
>
>Then I try to access it via inline-asm:
>
>__asm__("
> pushl %%eax\n
> movl $36008, %%eax\n ?????
> movb $15, %0(,%%eax,1)\n
> popl %%eax"
> :
> : "m"(&virtscreen)
This is wrong. As far as I see it, you are putting the address where
the variable 'virtscreen' is stored in a register. 'virtscreen' is
already a pointer so you should just store 'virtscreen' in the register,
i.e. : "m" (virtscreen).
>);
>
>and then copy it with dosmemput or movedata to video memory.
>It changes the first pixel to white (what I want).
>But why I have to add 36008 to the 'offset' (eax) to
>reach the first pixel?
It appears to be just luck that adding 36008 to the memory address
where 'virtscreen' is stored gets you the address where the data
pointed to by 'virtscreen' is stored.
But how did you get 36008? By trial and error?!
>It would be great, if anyone would tell me what I'm
>doing wrong.
>
> Thanks alot!!
Good luck and happy coding!
>
>BTW: Please dont't email me personally (it may cause problems).
>
>
(fremlin AT oncology DOT wisc DOT edu or fremdh AT essex DOT ac DOT uk)
Cattle die, kindred die,
Every man is mortal;
But I know one thing that does not die,
The glory of a great deed
The Elder Edda
- Raw text -