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

Programation TASM : Saut 'hors de porté'

hacoeur
hacoeur
Niveau 9
03 janvier 2005 à 21:04:24

Bonjour a tous !

Voila mon probleme :

J´ai une insctruction jc finprog au début de mon programme en assembleur, mais l´etiquette finprog: est hors de porter du saut... Je sais qu´il existe un moyen d´augmenter la porté des sauts mais je ne me rappelle plus de la commande, est ce que quequ´un la connait ?

d´avance merci

( désolé si c´est pas tres clair mais j´ai essayer de faire de mon mieux :/)

dnob700
dnob700
Niveau 10
03 janvier 2005 à 21:36:16

ben le problème c´est que c´est JC aussi qu´il faut utiliser.

enfin je ne connat que 2 type de saut,les
jump short et les jump near

les short sont limité à 256 octets de porté ( ce qui explique que le tien puisse être hors de porté)

il faut donc utilisé un jump near qui est longue porté.
Mais normallement l´assembleur ( TASM donc) devrait le faire pour toi.

essaye JC NEAR finprog
pour lui forcer à utilise ce qu´il faut ( mais regarde dans sa doc s´il acepte ce genre de commande).

la question du pourquoi near, c´est que ça dae du temps des pointeur near et far du DOS et que ça ne sers plus à rien mais que c´est comme ça ( à moins qu´il ne me manque la clef qui explique pourquoi c´est comme ça).

Kelios
Kelios
Niveau 8
03 janvier 2005 à 22:18:59

Ouais near permet de sauter partout dans le même segment.
En flat memory model, techniquement, l´unique segment de code fait tout le 4GB, donc en gros tu saute ou tu veux et far ( qui change de segment) est inutile ( à pars certains cas qui sortent du contexte et qui seraient trop long à expliquer).
Dans mes souvenirs short est beaucoup plus rapide. M´enfin je me souviens plus trop trop de la raison, mais en somme, privilégie un jump short quand tu peux. Mais là, un near est essentiel.

Kelios
---------

dnob700
dnob700
Niveau 10
03 janvier 2005 à 22:41:01

bah surtout t´économise 4 octets avec un short plutot qu´un near.

a ce propso Kelios, je me suis mis un tout petit peu à la prog d´OS. pour l´instant j´ai réussi à compiler un boot loader qui marche plus ou moins, mais j´arrive pas à faire fonctionner bochs ( émulateur PC), tu ne connaitrais pas un autres émulateurs PC que celui là ( pour windows) ou bien une aide pour lui ?
merci.

Kelios
Kelios
Niveau 8
04 janvier 2005 à 01:40:41

" a ce propso Kelios, je me suis mis un tout petit peu à la prog d´OS" ^^

Bon pour bochs il faut faire des manips spéciales, et se faire un fichier de loadage avec des trucs à trippoter assez spéciales.

Techniquement parlant, je connais pasd d´autre *émulateur*. Je connais des virtualizers, mais perso j´aime bien bochs.

Niveau aide, va voir sur Bona Fide http://www.osdever.net/

Bon, je sais que tu n´aime pas msn messenger, mais moi je passe 50% de ma vie dessus, alors si tu veux m´attrapper, c´est le meilleur moyen ( les e-mails j´aime pas beaucoup).
Si tu ose(! :)) venir, vlà mon adresse:
wolfs_@hotmail.com
Là j´risque d´être utile, et en plus, on se fait des fiestas avec des Doritos virtuels ( sisi!) et de l´échange de Pepsi par USB ( encore mieux). On discute philosophie, code, équations de second degré et programmeuses femelles codant avec F9 et F10 [(c)2004 Goto]

Kelios
---------

dnob700
dnob700
Niveau 10
04 janvier 2005 à 21:09:31

merci, j´ai pas trop de temps en ce moment, mais je verrais.

twk2
twk2
Niveau 2
06 janvier 2005 à 21:14:36

essaye qemu:

http://www.h7.dion.ne.jp/~qemu-win/index.html
http://fabrice.bellard.free.fr/qemu/

hacoeur
hacoeur
Niveau 9
07 janvier 2005 à 23:26:22

Et bien non le jmp near ou far ne marche pas :´(

il accepte la commande a la compilation ( pas d´erreur de syntaxe) mais j´ai encore l´erreur " Relative jmp out of range . .."

Kelios
Kelios
Niveau 8
08 janvier 2005 à 01:48:24

Bon alors va falloir voir ça plus en détail.
Assembleur, et code ( tu wall ça).

Kelios
---------

hacoeur
hacoeur
Niveau 9
08 janvier 2005 à 18:22:41

Euh oui mais encore ? :D

dnob700
dnob700
Niveau 10
08 janvier 2005 à 18:28:16

1-tu vas sur le site : http://wall.cours-info.net/
2-tu copie ton code source dans la fenêtre prévue à cette effet.
3-tu enregistre
4-tu nous donne l´adresse.

hacoeur
hacoeur
Niveau 9
10 janvier 2005 à 22:09:30

Ah ok ! Merci :)

http://wall.cours-info.net/?id=324

Voila le code ! Si vous trouvez que la façon dont j´ai programmé ca c´est dégueulasse, c´est pas la peine de le préciser :D Je m´en doute ! Je vous ai epargné les macros lire, ecrire et exit je pense que tout le monde voit a quoi ca correspond !

dnob700
dnob700
Niveau 10
10 janvier 2005 à 22:20:54

merci, mais c´est à quelle ligne qu´il y a l´erreur ?

hacoeur
hacoeur
Niveau 9
11 janvier 2005 à 18:07:02

Et bien c´est a chaque " jc far err_quelquechose" qui pointe a la fin du fichier, dans les macros que j´ai mis tout en bas du code, il me dit " Relative jmp out of range . . ." pour chaque saut, c´est a dire que l´etiquette est trop loin... J´ai donc essayer comme vous m´avez conseiller les jc far ou near mais rien n´y fait, j´ai toujours cette erreur la...

Je pourrais bien mettre des sauts intermediaires ou les messages d´erreur plus " haut" dans le code mais je trouve ca un peu crade comme ca...

dnob700
dnob700
Niveau 10
11 janvier 2005 à 23:41:01

essaye de remplacer les macro par des fonction, enfin des bout de code normaux que t´appelle avec des jump.

je ne sais pas pourquoi ça ne marche pas, mais j´ai une idée : tout les jump donne toujours des adresse relative par rapport à la position du jmp.
Peut-être quel´assembleur, va d´abord regarder où est le jump remlacé le label par un adresse relative pour mettre la macro à sa place. Mais à ce moment, l´adresse relative n´a plus aucun sens et ça ne marche pas.

bon, je ne sais pas, mais change en un, pour essayer et voir si ça supprime cette erreur.

dnob700
dnob700
Niveau 10
16 janvier 2005 à 12:25:44

AH j´ai trouvé !

je viens de découvrir que c´est un jump FAR que tu utilise.
hors tu ne peut pas faire de saut conditionel ( donc jc) sur des far.

il faut en fait au lieu de faire ( en pseudocode) :

si plus grand va à LBL_LOIN
sinon on continue

tu doit faire plutot :

si plus petit ou égal va à LBL_PRES
VA à LBL_LOIN ( JUMP inconditionel ( jump far même))
LBL_PRES:
ici, on continue...

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