CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

Un peu d'assembleur pour changer

Vampire6
Vampire6
Niveau 5
31 juillet 2002 à 20:45:42

Quelqu´un pourrait m´expliquer pourquoi ce morceau de code assembleur pourtant très simple ne fonctionne pas. Il sert simplement à passer en mode graphique.

Il plante toujours à l´exécution de l´interruption
10h. Peut-être que cela vient de Windows mais je voudrais avoir l´avis d´autres personnes.

Pour information je travaille sous environnement Windows 2000 avec Visual C++ 6.

Merci d´avance.

Voici le code.

void main()
{
__asm
{
mov ah,13h
mov al,0h
Int 10h
}
}

Vampire6
Vampire6
Niveau 5
31 juillet 2002 à 20:50:04

Désolé pour le double topic si un administrateur traine dans le coin il peut effacer celui qui est de trop.

Chris_le_ouf
Chris_le_ouf
Niveau 5
31 juillet 2002 à 20:51:16

C´est très simple : CA vient de Windows. L´interruption 10h c´est un truc de dos, ça ne peut que planter dans un prog win32.

Vampire6
Vampire6
Niveau 5
31 juillet 2002 à 20:55:45

Oui mais le DOS est quand même un peu pris en charge par Windows car j´arrive à faire tourner des anciens jeux du genre Kyrandia,discworld et j´en passe.

C´est pour cela que je me pose la question de savoir pourquoi ca ne fonctionne pas.

Chris_le_ouf
Chris_le_ouf
Niveau 5
31 juillet 2002 à 21:00:47

Tu confonds 2 choses, oui Windows arrive a faire tourner (plus ou moins bien selon les cas) les programmes DOS, mais dans ton cas, quand tu compiles ton source, VC++ en fait ou prog win32, pas un prog DOS, et dans un prog win32, je sais pas ce que fait l´interruption 10h, mais ce qui est sûr, c´est que c´est PAS l´interruption graphique tu connais, d´où le plantage

Vampire6
Vampire6
Niveau 5
31 juillet 2002 à 21:18:01

Bon ok je me doutais un peu que ca serait ca mais je voulais tenter le coup.

Sinon tu saurais pas comment on fait pour créer un programme DOS dans visual c++ ?

En tout cas merci Chris_le_ouf

Chris_le_ouf
Chris_le_ouf
Niveau 5
31 juillet 2002 à 21:29:11

Je t´en prie Vampire ; )
En fait, je crois qu´on peut pas faire de prog DOS avec visual c++ 6
Tu peux faire une console application, mais c´est juste une appli win32 qui utilise une fenetre DOS comme interface. Donc je sais pas, essaye de telecharger DJGPP, et encore, non, ça va pas le faire parce que l´assembleur inline a une syntaxe de barbare la-dedans... je sais pas, tourne toi vers Borland je pense

Vampire6
Vampire6
Niveau 5
31 juillet 2002 à 21:36:47

Borland mmmmh je crois que j´ai une version qui traine sur un cd mais qui est assez ancienne.

Dommage que Visual c++ ne crée pas des exécutables DOS mais bon c´est comme ca.

Merci pour le conseil.
A+

hs_dino
hs_dino
Niveau 9
31 juillet 2002 à 22:43:39

Je ne pense pas que l´histoire du 16 ou du 32 bits soit la raison, puisque que ca fonctionne tres bien en 32bits sous DOS ( et oui, le DOS en mode étendue tourne en 32Bits ! !! ).

Je pense tout simplement que Win2K est un environnement protégé et qu´il interdit l´acces direct au BIOS, d´ou le joli "Acces Violation", car ce code fonctionne sous Win95-98.

Si tu souhaites changer le mode d´ecran, essaie plutot un ChangeDisplaySettings.

J´espere que j´aurais pu t´aider.

Dino

Vampire6
Vampire6
Niveau 5
31 juillet 2002 à 23:29:33

C´est tout à fait le message d´erreur que j´ai reçu
HS Dino. Sacrer Bill Gates va, il m´empêche de faire ce que je veux.

Pour en revenir au problème, en fait c´est vrai que je voulais changer le mode d´écran, mais comme j´avais envie d´apprendre ne serait que quelques bribes d´assembleur je me suis dis, tient, pourquoi ne pas essayer et voila le résultat.

Enfin bref merci quand même d´avoir essayé de m´aider hs dino.

Chris_le_ouf
Chris_le_ouf
Niveau 5
01 août 2002 à 01:20:16

Une version ancienne de Borland, c´est exactement ce qu´il te faut Vampire ; -)
HS Dino, je sais pas trop c´est quoi ton trip, mais le système d´exploitation DOS tourne en mode réel 16 bits. J´ai jamais dit que le problème était une histoire de 16 bits/32 bits, j´ai dit que le problème c´était d´utiliser l´interruption 10h dans une application win32

hs_dino
hs_dino
Niveau 9
01 août 2002 à 21:27:07

HS Dino, je sais pas trop c´est quoi ton trip, mais le système d´exploitation DOS tourne en mode réel 16 bits.

Ah bon ? oh merde ! c´est con ca alors...
Bah essaye un petit :
mov ah,89h
int 15h
...hé ben putain, vla mon processeur en mode protégé ! !! et sous DOS en plus ? ! rholalalala et pis j´ai acces a toute la memoire système ! !! et pis en plus j´ai des registres 32 bits ! !!! oh ben ca alors....ce DOS alors, quel fourbe ! !!
Bon biensur, y´a les DOSEXTENDER, c´est plus facile que de coder tout ce cirque en assembleur, pour ceux qui ne le savent pas, un DOSEXTENDER permet de coder en mode protégé : 32bits et memoire a gogo, etc...

J´ai jamais dit que le problème était une histoire de 16 bits/32 bits.

Bah, j´ai jamais dis que tu l´avais dis.

j´ai dit que le problème c´était d´utiliser l´interruption 10h dans une application win32.

euh, oui ? ?? j´ai du rater un épisode là ! !! pour moi, WIN32 = application windows 32 bits ! ...
Enfin bref, c´est possible également, reste à validé cette supposition en essayant sur une application 16 bits.

HS Dino, je sais pas trop c´est quoi ton trip.

Bah c´est pas compliqué, mon trip, c´est la prog, c´est ce que je fais depuis déja 11 ans. Je fais des jeux, tout ca quoi ! ( enfin, quand je dis que je fais des jeux, je parle de ´vrais´ jeux )

Chris_le_ouf
Chris_le_ouf
Niveau 5
01 août 2002 à 21:33:06

Ah enfin la réponse
Alors mon gars je savais que t´allais répondre ça
Evidemment qu´on peut faire passer le cpu en mode protégé quand on est sous DOS, ce que je te dis moi, c´est que le système d´exploitation en lui même tourne en mode réel, c´est tout.
" et pis en plus j´ai des registres 32 bits ! "
t´es sûr que tu fais de la prog ? ? non parce que ya pas besoin d´être en mode protégé pour avoir accès aux registres 32 bits, tu confonds tout la.

Chris_le_ouf
Chris_le_ouf
Niveau 5
01 août 2002 à 22:44:10

Puisque tu réponds pas, je vais rajouter une petite couche.
D´un côté ton message me rassure, car si toi tu fais des jeux, ça veut dire qu´il n´y a pas besoin d´être trop balèze. Par exemple :
"...hé ben putain, vla mon processeur en mode protégé ! ! ! et sous DOS en plus ? ! rholalalala et pis j´ai acces a toute la memoire système ! ! ! et pis en plus j´ai des registres 32 bits ! ! !! oh ben ca alors....ce DOS alors, quel fourbe ! ! !
Bon biensur, y´a les DOSEXTENDER, c´est plus facile que de coder tout ce cirque en assembleur, pour ceux qui ne le savent pas, un DOSEXTENDER permet de coder en mode protégé : 32bits et memoire a gogo, etc..."
Ce passage est pitoyable, tu nous montres que tu ne comprends pas grand chose, et que tu ne sais pas ce qu´est un dos extender.

"Enfin bref, c´est possible également, reste à validé cette supposition en essayant sur une application 16 bits."
Alors ça, ça nous montre que tu n´as pas dû programmer bcp en assembleur, tu veux essayer pour valider mdr ! !! tu connais pas l´interruption 10h ? ? Moi je te dis qu´il n´y a pas besoin d´essayer pour valider, ça marche.

Par contre, d´un autre côté, savoir que tu rames depuis 11 ans pour ce résultat, ça ça me fait peur !

Sous forums
  • Aide à l'achat Mac
  • Macintosh
  • Création de Jeux
  • Programmation
  • Création de sites web
  • Linux
  • Internet
  • Steam Deck
  • Hardware
La vidéo du moment