•
•
•
•
What is DaniWeb IT Discussion Community?
You're currently browsing the Assembly section within the Software Development category of DaniWeb, a massive community of 455,985 software developers, web developers, Internet marketers, and tech gurus who are all enthusiastic about making contacts, networking, and learning from each other. In fact, there are 3,795 IT professionals currently interacting right now! Registration is free, only takes a minute and lets you enjoy all of the interactive features of the site.
Please support our Assembly advertiser: Programming Forums
Views: 1449 | Replies: 6
![]() |
•
•
Join Date: Oct 2007
Posts: 19
Reputation:
Rep Power: 2
Solved Threads: 1
Now i have been able to create the gdt's and when i change to pmode, will a short JMP flush the instruciton prefetch queue? here is a sample of my code and the gdt and gdtr content,
whta am i suppose to do to make my pmode correct, i mean be able to use the descriptors without rebooting? writing to the RAM? pleeeeeeeeeeeeeeeeaaaaaaaaaaaase help. Sam
mov ax,07c00h mov ds,ax lgdt [ds:descr] ;switch to pmode by setting bit 0 of CR0 ;after switching to pmode jmp pmode; when i use JMP 0:7c00h+pmode ir reboots, the 1st 0 is code gdt pmode: ;here when i try to write to RAM, it will reboot mov ax,8h;the data segment mov ds,ax;it reboots here mov ax,0f44h mov [0h],ax descr: db 0ffh,0ffh,00h,00h,07ch,gdt gdt: db 0ffh,0ffh,0,0,0,8a,0cfh,0;code segment db 0ff,0ffh,0,0,0,82,0cfh,9;data segment
Last edited by Ancient Dragon : Dec 2nd, 2007 at 10:04 am. Reason: add code tags
•
•
Join Date: Dec 2007
Posts: 3
Reputation:
Rep Power: 0
Solved Threads: 0
Looked at Fine's stuff, good in itself, doesn't help you, though.
Here's from http://en.wikipedia.org/wiki/Protected_mode
The point here is to force the assembler to use a far jump. For some assemblers, unfortunately, this requires:
For the Pentium and later processors, clearing the prefetch queue is no longer necessary.
Here's from http://en.wikipedia.org/wiki/Protected_mode
; set PE bit mov eax, cr0 or eax, 1 mov cr0, eax ; far jump (cs = selector of code segment) jmp cs:@pm @pm: ; Now we are in PM.
The point here is to force the assembler to use a far jump. For some assemblers, unfortunately, this requires:
db 0eah ;far jump
For the Pentium and later processors, clearing the prefetch queue is no longer necessary.
•
•
Join Date: Dec 2007
Posts: 3
Reputation:
Rep Power: 0
Solved Threads: 0
My first thought was "Well, you're probably rebooting because of a triple-fault. Have you defined your interrupt descriptor table (IDT)?"
But now I really see the 7c00, and suppose you're writing a bootloader. It's a lot easier, nowadays, to let grub do the bootloader stuff, but if you insist, there's a lot to go wrong.
What's the nature of your project? Are you just experimenting to learn a lot?
But now I really see the 7c00, and suppose you're writing a bootloader. It's a lot easier, nowadays, to let grub do the bootloader stuff, but if you insist, there's a lot to go wrong.
What's the nature of your project? Are you just experimenting to learn a lot?
•
•
Join Date: Mar 2008
Posts: 2
Reputation:
Rep Power: 0
Solved Threads: 0
•
•
•
•
; far jump (cs = selector of code segment) jmp cs:@pm @pm: ; Now we are in PM.
The point here is to force the assembler to use a far jump. For some assemblers, unfortunately, this requires:
Hi, I can't make it out how the far jump works out.
Sorry that I've posted a similar question on another thread here. I found this thread after I posted that.
So, how can "jmp cs: @pm" jumps to "@pm"? Isn't it supposed to jump to the physical address "cs * 16 + @pm"?
Last edited by koyi : Mar 8th, 2008 at 1:37 am.
![]() |
•
•
•
•
•
•
•
•
DaniWeb Assembly Marketplace
•
•
•
•
Currently Active Users Viewing This Thread: 1 (0 members and 1 guests)
Similar Threads
- protected mode programming guide (Assembly)
- Protected mode reboots (Assembly)
- Help needed for a project concerning protected mode (Assembly)
- 32 BIt Flat Real mode (Community Introductions)
- Protected Mode Memory Map (C)
Other Threads in the Assembly Forum
- Previous Thread: Far jump to a label?
- Next Thread: Converting this code to support Windows 98


Linear Mode