Accès mémoire Mode FLAT

Soyez le premier à donner votre avis sur cette source.

Vue 2 781 fois - Téléchargée 461 fois

Description

Ce programme bascule le processeur en mode FLAT et permet l'utilisation
des registres 32 bits pour accéder à la totalité de la RAM (4Go) tout
en restant en mode Réel (16 bits)
Ce qui pemet également d'avoir accès à la RAM vidéo de manière linéaire,et
donc d'exploiter des modes haute résolution (l'adresse vidéo se trouve
généralament en D000:0000h E000:0000h ou F000:0000h )
Ce programme fonctionne sous DOS (testé avec MSDOS et FREEDOS)
il peut être sans grande modification être utilisé sur un système sans OS

Codes Sources

A voir également

Ajouter un commentaire Commentaires
Forthman Messages postés 23 Date d'inscription samedi 25 décembre 2004 Statut Membre Dernière intervention 9 janvier 2014
9 janv. 2014 à 09:14
Bonjour,

Arf! oui tu as raison, je n'ai pas indiqué pour quel OS est destiné ce code... (c'est corrigé)
Raté, c'est pas du Win$ mais du DOS, et le fichier compilé est un .COM
pour la documentation du code, il est tellement petit que je n'ai pas pensé cela utile...

merci
François
Scaq Messages postés 8 Date d'inscription lundi 7 octobre 2002 Statut Membre Dernière intervention 8 janvier 2014
8 janv. 2014 à 15:01
Hum, ça fait plus de 10 ans que j'ai pas touché à l'asm, mais ayant développé un squelette de système d'exploitation 16/32bit linéaire, j'aurais ajouté dans ta description que la source est pour windows (.exe ), et j'aurais plus commenté le code.

Voici un bout de mon code j'espère être utile :

INICS:

;INSTALL VESA
MOV AX,4F00h
MOV DI,VBE_INFO_VESA ;512 octets
INT 10h ;OUT: AX=Status

MOV AX,4F01h
MOV CX,[MODE]
MOV DI,VBE_INFO_MODE ;256 octets
INT 10h ;OUT: AX=Status
;LFB linear frame buffer video
MOV AX,4F02h
MOV BX,[MODE]
OR BX,4000h ;LFB enable
MOV DI,Pointer_CRTC_INFO
INT 10h

;Symbiose-BIOS
; masque interruption bios
CLI

; masque toutes les IRQ
MOV AL,0FFh
OUT 21h,AL
MOV AL,0FFh
OUT 0A1h,AL

; masque NMI
MOV AL,10000000b
OUT 70h,AL

;CODE 16bit REEL,MEMOIRE 32bit LINEAIRE

; A20 enable
IN AL,92h
OR AL,00000010b
OUT 92h,AL

; Reset Registres et flags
XOR EAX,EAX
MOV DS,AX
MOV ES,AX
MOV FS,AX
MOV GS,AX
MOV SS,AX
XOR EBX,EBX
XOR ECX,ECX
XOR EDX,EDX
XOR EDI,EDI
XOR ESI,ESI
MOV ESP,Stacks
MOV EBP,ESP
PUSH EAX
POPFD

SGDT [GDT16]
LGDT [GDT]

MOV EAX,CR0
INC EAX
MOV CR0,EAX

MOV BX,08h
MOV DS,BX
MOV ES,BX
MOV FS,BX
MOV GS,BX
MOV SS,BX

DEC EAX
MOV CR0,EAX

;INSTALL EXCEPTIONS
MOV EAX,EXCEPT00
MOV [0000h],EAX
MOV EAX,EXCEPT00
MOV [0008h],EAX
MOV EAX,EXCEPT00
MOV [0010h],EAX
MOV EAX,EXCEPT00
MOV [0018h],EAX
;INI_PIC
;INSTALL IRQs
;unmask NMI
XOR AX,AX
OUT 70h,AL
;PIC
MOV AL,11101100b ;activ IRQ,b4=com1,b1=clavier,b0=timer
OUT 21h,AL
STI

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.