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

asm int21

dnob700
dnob700
Niveau 10
24 septembre 2004 à 00:02:33

je voulais me passer de conio.h dans un de mes programmes.

or, je me sers de getch() pour bloquer l´exécution du programme.

alors j´ai eue l´idée d´essayer ce bout de code pour remplacer l´appel à getch():

__asm
{
mov ah,0Ah
int 21h
}

mais sur le int 21h il me fait un access violation reading.

Mes notion en assembleur étant proche de zéro, ej en suis pas sur de bien utiliser la fonction d´une part, et d´autre part, je me demandais s´il était tout simplement possible d´utiliser le int 21h dans un programme où si windows l´interdit.

merci d´avance d´aider un pauvre programmeur VB qui ne sait pas comment faire dès qu´il sort de son putain de langage ( vous vous souvenez de celle là...).

JeanYvesYves
JeanYvesYves
Niveau 10
24 septembre 2004 à 00:39:04

windows l´interdit. le seul moyen est d´utiliser un compilateur DOS, qui travaille en mode réel ( car les compilos windows travaillent en mode protégé)

LGV
LGV
Niveau 28
24 septembre 2004 à 00:52:18

et meme si ça marchait, tu n´y gagnerais rien ; le plus interessant c´est encore de passer par des flux buferrisé via l´OS pour acceder au périphérique ( quand on besoin de choses rapides, comme pour une appli interactive quoi). Mais remplacer un getch n´apportera pas grand chose

Yoda_Software
Yoda_Software
Niveau 30
24 septembre 2004 à 01:43:11

Le mode protégé de Windows, c´est bien ce qui m´a stoppé dans mon utilisation des interruptions ( particulièrement les 16h et 21h).
Je viens de ressortir ma Bible PC pour me raffraichir l´esprit et je suis tombé sur des tas de bouts de papier me servant de marque-page.
Ah ! Ça rappelle pleins de bons souvenirs ! :)

Kelios
Kelios
Niveau 8
24 septembre 2004 à 03:11:40

Ça m´étonne quand même un peu beaucoup qu´il bloque l´int DOS, même en mode protégé w32...

Parce que, pour Microsoft, c´est pas si dur de réécrire int 21h pour win32...

Pourquoi n´est-il pas supporté?
Question de sécurité peut-être? Bof...

De toute façon, c´est LGV, dans son infinie sagesse, qui t´as donné la bonne réponse. Oublie int 21h :)

" merci d´avance d´aider un pauvre programmeur VB qui ne sait pas comment faire dès qu´il sort de son putain de langage ( vous vous souvenez de celle là...)."
Ouè pauv nuul kan esse ke tconprendra k VB c nul!!1!!!1 sal lame pfff....

Kelios
---------

Yoda_Software
Yoda_Software
Niveau 30
24 septembre 2004 à 04:09:11

Cobol Powa ! :ok:

dnob700
dnob700
Niveau 10
24 septembre 2004 à 09:12:53

bon d´accord ( /me s´en va piteusement)

je voulais juste enlevé le conio.h que j´utilisais pour une instruction en tout et pour tout dans le prog.

Mais en asm, quand on veut lire une touche du clavier, on fait comment ( si on est en mode protégé) ?
Et puis on peut utiliser le mode réel sous XP ? j´avais cru comprendre que non.
Et ya pas une instruction asm pour repasserun mode réel ?

Et pourquoi [completez avec la question que vous voulez] ?

merci de répondre à mes question angoissé.

JeanYvesYves
JeanYvesYves
Niveau 10
24 septembre 2004 à 11:43:56

Kelios >
ça a l´air de te choquer que win bloque aussi le 21h.
N´oublie que le 21h, comme le 10h, accede directement a la VRAM, il " poke" littéralement des données dans le buffer d´échange avec l´écran.
ça c´est contraire a la philosophie de tout ce qui est OS, qui se doit de tout controler et réguler :)

jarose
jarose
Niveau 10
24 septembre 2004 à 13:20:55

Linux/GCC

asm (
" movl $3, %eax\n\t" \
" movl $0, %ebx\n\t" \
" int $0x80"
) ;

Et pourquoi [Cobol est encore utilisé] ? C´est infame...

Yoda_Software
Yoda_Software
Niveau 30
24 septembre 2004 à 17:17:16

Et oui, Cobol est toujours utilisé, je sais c´est infâme, mais bon, si je veux trouver du boulot, il ne faut pas que je crâche sur un poste Cobol si j´en trouve 1 !

DasHuhn
DasHuhn
Niveau 10
24 septembre 2004 à 21:36:38

Message à Kelios : tu dois toujours m´expliquer tout ça, merci :)

Kelios
Kelios
Niveau 8
25 septembre 2004 à 01:14:39

JYY>
Oh mais c´est que l´int21 pourrait faire des appels intrinsèques aux drivers...
´Pas obligé de fonctionner pareil, juste de produire le même effet et de se " commander" pareil. Le point de départ et d´arrivée doit être identique, mais pas le chemin pour y arriver. Et ce chemin pourrait se dévier de façon à rentrer dans la philo OS présente chez Windows. Pertes de perfs? Mouais, mais n´oublions pas que le but n´est pas d´offrir les meilleures perfs mais plutôt de l´offrir, tout simplement!

Sur un autre regiastre...

C0B0L pwns j00r 14n6u463!!!1!!!1!, vous saurez!

" DasHuhn Posté le 24 septembre 2004 à 21:36:38
Message à Kelios : tu dois toujours m´expliquer tout ça, merci "
Ben alors contacte moi par msn messengeuuur. :)

Kelios
---------

Kelios
Kelios
Niveau 8
25 septembre 2004 à 01:29:21

Je t´avais oublié dnob... :(

Bon:
" Mais en asm, quand on veut lire une touche du clavier, on fait comment ( si on est en mode protégé) ? "
Ben t´utilise une librairie, pardi!
Sous windows t´as la win32...
Autre solution, tu la pique à un langage. Je sais que c´est possible de voler la stdlibc, même si j´ai jamais essayé ; )
De la même façon, ça serait possible poru la majorité des langages, même si cela ne serait pas nécessairement évident, langage oblige.
Par exemple, c´est pas mal plus dur pour la stdlibc++, de par la nature objet du langage ( la représentation en asm du concept d´objet est pour le moins... hybride :) )

" Et puis on peut utiliser le mode réel sous XP ? j´avais cru comprendre que non. "
XP a un émulateur d´environnement mode réel comme émulateur DOS. Donc oui, mais ce n´est pas... natif, c´est émulé :)

" Et ya pas une instruction asm pour repasserun mode réel ? "
Ouais, bien sur,
mov eax, cr0
and eax, FFFFFFFEh
mov cr0, eax

Devrait faire l´affaire. Mais tu peux pas l´utiliser :)
C´est une instruction privilégiée! ´te faut un ring 0 minimum pour pouvoir utiliser mov avec cr0...
Gneuh, en gros, si t´es pas le kernel, ben tu peux pas le faire, MrProco veux pas :)
Maintenant, si tu cherches à bypasser ça, ça risque d´être extrêmement difficile...

Kelios
---------

DasHuhn
DasHuhn
Niveau 10
25 septembre 2004 à 11:26:53

Kelios> Mais t´es po là aussi :o

dnob700
dnob700
Niveau 10
25 septembre 2004 à 15:51:16

merci kelios ( et les autres aussi).

Bon, je crois que je vais continuer à utiliser getch.

Mais si je compilas le même code sous DOS ( du vrai DOS, pas une émulation), ça tournerait sous XP après ?

Yoda_Software
Yoda_Software
Niveau 30
25 septembre 2004 à 16:29:10

Je ne pense pas !

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