From: "David Mitchell" Newsgroups: comp.os.msdos.djgpp Subject: Re: Assembly routine Date: Fri, 2 Jul 1999 17:12:22 +1200 Organization: Inet Ltd, Christchurch, New Zealand Lines: 30 Message-ID: <930893937.855103@kyle.inet.net.nz> References: <377b163a DOT 2813653 AT news DOT telepac DOT pt> NNTP-Posting-Host: kyle.inet.net.nz X-Trace: titan.xtra.co.nz 930893177 4637563 202.50.171.4 (2 Jul 1999 05:26:17 GMT) X-Complaints-To: abuse AT xtra DOT co DOT nz NNTP-Posting-Date: 2 Jul 1999 05:26:17 GMT X-Newsreader: Microsoft Outlook Express 4.72.3110.5 X-MimeOLE: Produced By Microsoft MimeOLE V4.72.3110.3 Cache-Post-Path: kyle.inet.net.nz!unknown AT p42-tnt1 DOT inet DOT net DOT nz X-Cache: nntpcache 2.3.3 (see http://www.nntpcache.org/) To: djgpp AT delorie DOT com DJ-Gateway: from newsgroup comp.os.msdos.djgpp Reply-To: djgpp AT delorie DOT com aperes wrote in message <377b163a DOT 2813653 AT news DOT telepac DOT pt>... > >Please help me! > >I'm trying to write a routine that transfers the contents of a buffer >to video memory. This is my routine: > > FlipAsm(_my_ds(), (int) virtual_screen); you want to call it by: FlipAsm(_my_ds(), &virtual_screen); also: > asm(" > MOVW %0, %%ES /* ES= video (%0) */ > MOVW %1, %%DS /* DS= buffer (%1) = segmento dados */ > > MOVL $0xA0000, %%EAX > MOVL %%EAX, %%EDI /* EDI = Ax0000, ES:DI > MOVL %2, %%EAX > MOVL %%EAX, %%ESI /* ESI = source, DS:SI */ This code is wrong. You are moving the Data segment to ES, whereas you want to move 0x0a000 to ES, and xorw %%si, %%si Then it should work. You don't need the video variable. David