X-Authentication-Warning: delorie.com: mail set sender to djgpp-bounces using -f Date: Tue, 01 Nov 2005 23:35:11 +0100 From: Pafo007 <"Pafo007 at wanadoo dot fr"@unknown.addr> User-Agent: Mozilla Thunderbird 1.0 (Windows/20041206) X-Accept-Language: fr, en MIME-Version: 1.0 Newsgroups: comp.os.msdos.djgpp Subject: Re: Why the call instruction points 2 bytes before to the real start sub-routine ? References: <003501c5df1c$b3f4a440$2432a8c0 AT dcueva> In-Reply-To: <003501c5df1c$b3f4a440$2432a8c0@dcueva> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 8bit Lines: 36 Message-ID: <4367ee3f$0$1729$8fcfb975@news.wanadoo.fr> Organization: les newsgroups par Wanadoo NNTP-Posting-Date: 01 Nov 2005 23:37:52 CET NNTP-Posting-Host: 82.124.255.112 X-Trace: 1130884672 news.wanadoo.fr 1729 82.124.255.112:2975 X-Complaints-To: abuse AT wanadoo DOT fr To: djgpp AT delorie DOT com DJ-Gateway: from newsgroup comp.os.msdos.djgpp Reply-To: djgpp AT delorie DOT com Ouch! Going to 32bits mode isn't a easy thing: you have to build a GDT, to load GDTR with LGDT intruction, to set bit0 of CR0 register and to jump to your code in a 32bits segment... That's a hard way if you haven't read anything about it! Perhaps should you try this: http://www.osdever.net/tutorials/pmodetuts/all_pm_tuts.zip?the_id=36 That's a 17 chapter book about protected mode... Diego Cueva a écrit : > Thanks for your response. > > Now I am using a 32 bit disassembler: > > 00000000 90 nop > 00000001 E80B000000 call 0x11 > 00000006 66BE5C01 mov si,0x15c > 0000000A E834000000 call 0x43 > 0000000F CD20 int 0x20 > 00000011 6650 push ax > 00000013 6653 push bx > 00000015 6651 push cx > 00000017 6652 push dx > 00000019 B406 mov ah,0x6 > 0000001B B000 mov al,0x0 > 0000001D B500 mov ch,0x0 > > This dis-assembled code is correct, but when I run the program does not > work fine. > > The program act as a 16 bit code, this mean that the 1st CALL > instruction, jump to 010F. In other words, this compiled program only > execute: > 100. - NOP > 101. - CALL 010F (jump really to 10F not to 0x11) > 10F. - INT 0x20 :( That's all.