Ga naar inhoud

[Masm] Het jumpen wil niet zo goed lukken


Aanbevolen berichten

Ben bezig met een bootloader en na de eerste start wordt er een bestand geladen op een adres ES:BX. Hoewel Nasm prima werkt wil ik graag Masm gebruiken. De huidige jump instructie is JMP DWORD PTR ES:00000h Dit is ook het adres waar ik het image van het volgende bestandje laat starten. Toch blijft hij op de JMP instructie steken. Doe ik iets fout? (zal haast wel) :grin: p.s. Compileren gaat prima, dat is niet het probleem. Met Nasm gaat het wel en dat irriteert mij behoorlijk. _________________ I'm not a complete idiot, some parts are missing. [ Dit Bericht is bewerkt door: DarkScribe op 2002-03-16 09:36 ]
Link naar reactie
Er zit inderdaad verschil tussen de output van beide programma's. De output van Nasm is [code:1:dec0b0a8f5]AX=0004 BX=0000 CX=0002 DX=0000 SP=FFFE BP=0000 SI=0000 DI=0000 DS=078C ES=1000 SS=078C CS=078C IP=0118 NV UP EI PL ZR NA PE NC 078C:0118 EA00000010 JMP 1000:0000[/code:1:dec0b0a8f5] en de output van Masm is [code:1:dec0b0a8f5]AX=0004 BX=0000 CX=0002 DX=0000 SP=FFFE BP=0000 SI=0000 DI=0000 DS=078C ES=1000 SS=078C CS=078C IP=0118 NV UP EI PL ZR NA PE NC 078C:0118 26 ES: 078C:0119 FF2E0000 JMP FAR [0000] ES:0000=1F0E[/code:1:dec0b0a8f5] Ik heb gecontroleerd wat op ES:0h staat en in beide gevallen bevindt zich daar de code van het bestand dat ik daar plaats. Zoals ik het zie zou de code moeten werken maar toch... Let overigens niet op de IP want ik heb alle code weggehaald die niet van belang is, daarom is de IP zo laag. De code voor Nasm ziet er zo uit:[code:1:dec0b0a8f5][ORG 0x7C00] [BITS 16] JMP start ; Jump over BIOS parameter block start: MOV AH,002h ; Function for disk access MOV AL,004h ; Amount of sectors to read MOV CH,000h ; Track MOV CL,002h ; sector MOV DH,000h ; head MOV DL,000h ; drive MOV BX,01000h ; Create a buffer at 4096 MOV ES,BX MOV BX,00000h ; point to start of buffer INT 13h ; Jump code werkt hier wel JMP 0x1000:0x0000 ; transfer control ; Hier komt het DATA gedeelte[/code:1:dec0b0a8f5] en de code voor Masm[code:1:dec0b0a8f5]_TEXT SEGMENT WORD PUBLIC 'CODE' ASSUME CS:_TEXT, DS:_TEXT ORG 07C00h first: JMP start ; Hier komt dan het DATA gedeelte start: MOV AH,002h ; Function for disk access MOV AL,004h ; Amount of sectors to read MOV CH,000h ; Track MOV CL,002h ; sector MOV DH,000h ; head MOV DL,000h ; drive MOV BX,01000h ; Create a buffer at 4096 MOV ES,BX MOV BX,00000h ; point to start of buffer INT 13h ; Jump code werkt hier niet JMP DWORD PTR ES:00000h ; transfer control _TEXT ENDS END first[/code:1:dec0b0a8f5] [edit] Wat overigens wel lukt is wanneer ik de code van het bestand aanpas met debug zodat de JMP FAR verdwijnt en er EA00000010 voor in de plaats zet. Maar een bestand door Masm gemaakt moet ik niet hoeven patchen :sad: [/edit] _________________ I'm not a complete idiot, some parts are missing. [ Dit Bericht is bewerkt door: DarkScribe op 2002-03-17 20:07 ]
Link naar reactie
Omdat Masm met 1 van de volgende foutmeldingen komt, al naargelang de constructies die ik toepas. error A2096: segment, group or segment register expected error A2206: missing operator in expression error A2031: must be index or base register Dit zelfde effect krijg je ook als je CALL gebruikt. INVOKE zegt nog gekkere dingen over een prototype die nodig is voor een procedure. (logisch, overigens) :grin: Ben echt bang dat ik me wat meer moet verdiepen in Nasm, maar het is gratis dus de kosten vallen hier gelukkig wel mee. Heb gisteren overigens allerlei sites over het maken van OSsen afgegaan en allemaal gebruiken ze Nasm en gcc voor het maken van bootloaders. Misschien een teken aan de wand? [img:262ab3b97e]http://216.40.201.240/s/otn/confused/shrug03.gif[/img:262ab3b97e]
Link naar reactie
Ben er uit, ik vond ergens een macro die precies doet wat ik wil. Dit is 'm [code:1:60777d4ca7]JMPFAR MACRO destination,selector ; dynamic JMP FAR SEG:OFF db 0eah ;; jmp instruction dw offset destination ;; offset word dw selector ;; segment selector word endm [/code:1:60777d4ca7] Ik kan weer dansen van plezier [img:60777d4ca7]http://216.40.198.77/mysmilies/s/otn/realhappy/offwall.gif[/img:60777d4ca7] _________________ I'm not a complete idiot, some parts are missing. [ Dit Bericht is bewerkt door: DarkScribe op 2002-03-21 11:32 ]
Link naar reactie

Om een reactie te plaatsen, moet je eerst inloggen

Gast
Reageer op dit topic

×   Geplakt als verrijkte tekst.   Herstel opmaak

  Er zijn maximaal 75 emoji toegestaan.

×   Je link werd automatisch ingevoegd.   Tonen als normale link

×   Je vorige inhoud werd hersteld.   Leeg de tekstverwerker

×   Je kunt afbeeldingen niet direct plakken. Upload of voeg afbeeldingen vanaf een URL in

×
×
  • Nieuwe aanmaken...