bonsoir, je suis une débutante en assembleur 8086, svp quelle est la relation qui existe entre la taille du segment memoire et la taille des registres ou le bus d'adresses merci !
Salut, en mode reel (16-bit), la taille d'un segment est codé sur 16 bit, et on accede via [segment:offset], le segment peut etre renseigné par ds/es/ss et l'offset par bx, bp, si, di.
Et l'adresse absolue est calculée par (segment * 16) + offset
Et a propos du bus d'address, il est limité a 48 bit de mémoire, mais peut etre configure selon le mode du cpu (mode reel (16) / mode protégée (32) / mode long (64)) ce son les principaux mode du cpu sans rentrée dans les detail.
Le cours de BigOnOff, qu'on m'a recommandé sur le forum, est extrêmement complet, et mis à jour très régulièrement. Pour mon pauvre petit cerveau qui avait bien du mal à comprendre une datasheet, ce poly a été un miracle!
masm ( http://www.masm32.com/ ) le macro assembleur de Microsoft, (limité au format PE, clauses qui interdisent de créer des malwares, ne supporte pas l'assemblage de certaines instructions...)
1°) Concrètement en quoi masm est limité? Cela veut dire qu'il est bridé volontairement? Dans ce cas pourquoi ne pas se contenter de nasm?
2°) Concernant The Art of Assembly, je me suis penché dessus, en pensant l'acheter, et je me suis aperçu qu'il était plutôt orienté HLA, qui n'est pas de l'assembleur pur. Est ce que vous connaissez un bouquin (ou un ensemble de bouquins) qui permettrait d'apprendre l'assembleur d'une manière assez complète?
- Edité par le zero pointé le 7 septembre 2013 à 20:08:01
Pour la partie documentations génériques, j'ai des trucs à proposer.
Le premier document que je propose parle des assembleurs, les logiciels qui traduisent du code assembleur en langage machine. Il est disponible via ce lien : Assemblers and loaders. Le livre en lui-même est assez vieux, mais son contenu est toujours d'actualité. De plus, il contient quelques trucs sur l'ASM, même si ce n'est pas transcendant.
Et puis, dans les documentations générales, pourquoi ne pas mettre "Fonctionnement des ordinateurs de zéro", ou plus spécifiquement, les chapitres qui traitent de l'ASM et du langage machine ? Vous avez déjà ajouté des livres d’architecture, autant pousser la logique jusqu’au bout.
salut pouvez vous les gars nous donner une list avec toute les valuer possible de l'instruction int est aussi une description de ce que fait chaque une comme:
int 0x21 ;pour affichier le text a partire de l'address qui se trouve dans dx.
j'ai pas compris ce programme j'ai besoin de votre aide : ecrire un programme en assembleur qui permet de calculer la somme et la difference entre deux variables de type un octet , les deux variables sont non initialisé
j'ai pas compris ce programme j'ai besoin de votre aide : ecrire un programme en assembleur qui permet de calculer la somme et la difference entre deux variables de type un octet , les deux variables sont non initialisé
Qu'est ce que tu ne comprends pas ?
Attention : ce forum n'est pas destiné à faire faire ses exercices.
juste pour ajouter un lien que je juge assez intéressant mais encore incomplet pour l'instant : il s'agit essentiellement d'un tutoriel sur " l'assembleur " qui recommence avec les bases jusqu'au niveau avancé. Voilà le lien : https://x86asmdemystified.landen.co/?source=memo_asm_openclassroom
- Edité par cotoporto 29 novembre 2019 à 10:24:54
tu aimerais apprendre l'assembleur avec NASM depuis zéro ? clique ici suis le fil de discussions ici
J'ai aussi mis en place un forum pour ceux qui veulent utiliser le compilateur nasm pour écrire des programmes en 64 bits et en utilisant les fonctions de l'API Windows.
table des Interruptions DOS
* 01h: Lancement d'un programme en mode pas-à-pas (permet de le débogueur).
* 02h: Interruption non masquable.
* 03h: Erreur de rupture.
* 04h: Erreur de dépassement (par calcul, exemple : "mov al, 200 ; add al,140" -> 340 > 255 !!!).
* 05h "Imprime écran", imprime une copie de l'écran en mode texte.
* 08h: Horloge tournant à 18.6 clics/seconde.
* 09h: Lecture du clavier. La touche est codée avec un 'code clavier' (scan code en anglais) traduit en code standart ASCII par l'interruption 16h.
* 0Bh: Gestion du port COM2.
* 0Ch: Gestion du port COM1.
* 10h: Gestion de la carte vidéo.
* 11h : Liste de configuration (mémoire, nombre de ports COM, co-processeur, ...).
* 12h: Taille de la mémoire basse (640 Ko maximum).
* 13h: Gestion des différents disques.
* 14h: Gestion de l'interface série (ports COM, voir les interruptions 0Bh et 0Ch).
* 15h: Manette de jeu, cassette et TopView.
* 16h: Conversion du code de la touche (lu par l'interruption 09h) en code standart ASCII.
* 17h: Gestion de l'imprimante.
* 18h: Rom BASIC.
* 19h: Rountine de chargement du DOS.
* 1Ah: Gestion de l'heure réelle.
* 1Bh: Surveille la pression de la combinaison de touche 'CTRL + C'.
* 1Ch: Chronomètre clic/clic à la vitesse de l'horloge 08h : 18.6 Hz. Sa valeur est stockée à l'emplacement 0040h: 0060h.
* 1Dh: La table d'initialisation vidéo.
* 1Eh: La table de paramètre des disquettes.
* 1Fh: La table des caractères graphiques.
* 20h: L'interruption DOS : Fin d'un programme au format COM (le format EXE est largement plus répendu aujourd'hui).
* 21h: L'interruption DOS : Fonctions universelles (disque dur, horloge, ...).
* 22h: L'interruption DOS : Adresse de fin de processus.
* 23h: L'interruption DOS : Surveille CTRL + PAUSE (ou CTRL + BREAK).
* 24h: L'interruption DOS : Erreur fatale d'un vecteur d'interruption.
* 25h: L'interruption DOS : Lecture directe d'un disque.
* 26h: L'interruption DOS : Ecriture directe sur un disque.
* 27h: L'interruption DOS : Programmes résidents.
* 28h: Fin d'un programme restant résidant en mémoire.
* 2Fh: Interruption pour plusieurs sous programmes. Gestion du réseau, driver CD-Rom MSCDEX, ...
lol dire que j'avais appris l'assembleur avec le petit programme debug de windows
Quand je vois ce qui existe maintenant comme logiciels assembleurs ça m'épate, c'est plus facile c'est sûr
Au début tu es débutant, donc ne commence pas par faire un programme, commence par savoir mettre une valeur dans un registre, une autre, comparer les deux valeurs, aller à une adresse après la comparaison, mettre un petit texte à une adresse, l'afficher avec l'interruption 21, apprendre à attendre la pression d'une touche avec l'interruption clavier, etc, et c'est faisant comme ça et en regardant chaque fois le contenu de la zone d'adresse avec un dump que tu comprendras bien l'assembleur, ensuite tu te lancera dans un vrai programme, mais pas de suite un os, lol.
Tiens tu peux t'amuser a émettre des sons aussi juste pour t'amuser
est aussi, je déterre ce sujet, dans le but de le déterrer et de rameuter des gens qui pourraient être intéressés pas l'idée de faire de l'asm.
Cet interpreter m'a été conseillé par des amis à qui je viens de confier le liens de ce sujet, il se peut donc qu'ils viennent et rameutent eux aussi d'autres personnes.
est aussi, je déterre ce sujet, dans le but de le déterrer et de rameuter des gens qui pourraient être intéressés pas l'idée de faire de l'asm.
Cet interpreter m'a été conseillé par des amis à qui je viens de confier le liens de ce sujet, il se peut donc qu'ils viennent et rameutent eux aussi d'autres personnes.
Dejà pour être pris aux sérieux , faudrait savoir de quoi en parle soit du x86 soit de ARM , arm 86 n'existe pas. Bon vu ton lien ça semble de l' ARM (et j'en suis même pas sur) , faudrait donner l'ISA avec. Bref , ça semble pas etre tout à fait de l'ARM...
Après je n'ai rien contre les interpréteur , mais perso j'en vois pas l’intérêt , j'ai arrêter d'apprendre l'asm depuis longtemps ,si je veut faire de l'ARM , je le fais directement sur la machine concernée
désolé pour la confusion arm et 86, j'essais des deux en ce moment et je me mélange les pinceaux. l'avantage d'un interpreter c'est que l'on évite de toucher à la mémoire du pc (n'ayant qu'un mauvais pc et un rasbpi qui me sert déjà, je peux peux pas risque de tuer mon pc), je pourrais mettre un VM, mais c'est plus compliqué etc... ensuite, l'interpreter à un asm plus simpliste, moins violent (perso avant que je reprenne l'asm y'a quelques jours, j'en avais fait qu'au collège, c'était du SuperH casio, c'était un autre délire).
perso j'ai repris l'asm pour trois raisons :
je fais NSI au lycée (1ere) et (malgré le retard du prof), on fait de l'asm
mes amis (qui sont avec moi en NSI) en font aussi
Actuellement je programme un langage de prog fonctionnel et orienté object qui aura l'aventage d'être interprétable (par du GO) ou compilable en asm, donc il faut que je me replonge dans le bain. (Je pense que je vais le compiler en pseudo asm puis ce pseudo asm va être compilé en asm pour plus de machines par Flex and Yacc)
Alors , 1) tu ne risque pas plus de tuer ton "PC" que faire du C peuvent tout les deux accéder aux hards, ceux que tu pourra faire en asm , c'est souvent des instructions plus spécifique qui ne cause aucun "danger". 2) Que ça soit sur RasPi ou sur PC , tu codera sur l'OS qui te fournira une protection (encore heureux).
Après je suis étonné de voir des lycéen faire de l'ams , vu le peu de bagage informatique. ensuite l'asm c'est assez rare d'en faire donc bon ,ce n'est qu'un outils parmi tant d'autre.
j'ai commencé la prog en 5e (j'étais non scolarisé), sur casio graph 35+ puis 90+e (et rapidement après, du basic sur un tas d'émulateur APPLE, atari, amstrad, comodor, etc...), ensuite (en 4e), j'ai fait du python, du js, du c, du superh, et du java (mais bon, je débutait dans les "vrais" langages), ensuite, je suis allé au collège pour ma 3e (ordre du rectorat) et j'ai commencé le c++, le php, le Node.js, le arduino, le bash et j'ai commencé à écrire la syntaxe de mon futur langage (le Jnerd à l'époque, car il était destiné à être interprété par du js, mtn je compte le faire en GO, donc Gnerd). maintenant je suis au lycée, et comme quelques un de mes potes, je suis meilleurs que mon prof de NSI dans sa propre matière...
bah comme je l'ai expliqué, mon futur langage sera compilé en asm, donc il faut que je m'y plonge.
Ensuite, certes, ce n'est pas très utilisé, mais je trouve ça rigolo
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
@newton