Ecrire un programme qui récupère le caractère 'C' de la mémoire puis l'imprime à l'écran en utilisant Flat Assembler?

Je suis vraiment nouveau dans la programmation de l'Assemblée. Cela fait deux semaines que notre conférencier a commencé à enseigner la programmation d'assemblages en utilisant FASM. Il nous a donné la question ci-dessus pour résoudre en utilisant l'adressage de la mémoire et je suis vraiment coincé. Il nous a seulement enseigné les instructions mov jusqu'à maintenant et dint aller dans beaucoup de détails. Donc, je me demande si quelqu'un peut m'aider à résoudre ce problème.

Depuis, il nous a dit de récupérer de la mémoire. Donc, j'ai utilisé une variable pour le stocker dans la mémoire. C'est ce que j'ai essayé jusqu'ici

 #fasm#

org 100h

mov ah,2 
var db 67  
mov bh, [var]
mov dl,bh

int 21h
int 20h
0
@ JoseManuelAbarcaRodríguez: - J'ai modifié et ajouté la partie manquante. C'est tout ce que j'ai.
ajouté l'auteur Melissa, source
@ JoseManuelAbarcaRodríguez: - Merci pour cela. Mon conférencier nous a dit de résoudre la même question en utilisant d'abord les données de la mémoire et la deuxième fois il nous a demandé de référencer l'adresse mémoire de la variable en utilisant un registre. Je pense que celui que j'ai utilisé s'adresse à la mémoire, comment puis-je obtenir les données de la mémoire et l'imprimer sur l'écran? Merci beaucoup
ajouté l'auteur Melissa, source
@Jester: - Ecrit un programme qui récupère le caractère 'C' de la mémoire puis l'imprime à l'écran Ecrit un programme qui récupère le caractère 'C' de la mémoire, mais cette fois, référence l'adresse mémoire en utilisant un registre
ajouté l'auteur Melissa, source
@ JoseManuelAbarcaRodríguez: - Merci beaucoup pour votre aide. Pouvez-vous me suggérer un bon livre pour la programmation d'assemblage en utilisant fasm assembler pour un débutant comme moi? Mon conférencier n'explique pas les choses en détail et un bon livre de référence/tutoriels peut m'aider beaucoup. Je vous remercie
ajouté l'auteur Melissa, source
@ JoseManuelAbarcaRodríguez: - Merci Jose. Je suis également le manuel en ligne de Flat Assembler. C'est vraiment m'aider beaucoup.
ajouté l'auteur Melissa, source
Oui, accidentellement. Le var db 67 est exécuté sous la forme inc bx , ce qui est inoffensif et un opcode à un octet. Ce n'est pas une bonne pratique de mettre des données au milieu du code si :)
ajouté l'auteur Jester, source
Melissa, ton petit programme marche bien, quand je le lance je vois "C" à l'écran, quel est le problème? J'utilise EMU8086.
ajouté l'auteur Jose Manuel Abarca Rodríg, source
StackOverflow est meilleur que anybook: utilisez Google comme ceci = "stackoverflow assembly print string" (par exemple), et vous trouverez ce que vous voulez apprendre. Tout ce dont vous avez besoin est déjà là, tout comme cette question que vous avez posée aujourd'hui. Un autre exemple: "assemblage stackoverflow comment écrire dans un fichier".
ajouté l'auteur Jose Manuel Abarca Rodríg, source

3 Réponses

C'est à peu près tout, sauf que vous ne voulez pas vos données au milieu du code. Mettez-le après le code, par exemple:

org 100h

mov ah,2 
mov bh, [var]
mov dl,bh

int 21h
int 20h
var db 67  
0
ajouté
:- Merci pour ça. Mon conférencier nous a dit de résoudre la même question en utilisant d'abord les données de la mémoire et la deuxième fois il nous a demandé de référencer l'adresse mémoire de la variable en utilisant un registre. Je pense que celui que j'ai utilisé s'adresse à la mémoire, comment puis-je obtenir les données de la mémoire et l'imprimer sur l'écran? Merci beaucoup
ajouté l'auteur Melissa, source
Celui-ci a utilisé les données. Je crois que votre conférencier veut quelque chose comme lea bx, [var]; mov dl, [bx] pour l'adressage.
ajouté l'auteur Jester, source

C'est ce que @Jester signifie:

org 100h

mov ah,2 
;mov bh, [var]
lea si, [var]  ;"SI" REFERENCES THE VARIABLE. LEA = LOAD EFFECTIVE ADDRESS.
mov dl,[si]    ;GET THE DATA THROUGH THE MEMORY REFERENCE.

int 21h
int 20h
var db 67      ;JESTER IS RIGHT: VARIABLES AT THE BOTTOM.
0
ajouté
org 100h

mov ah,2 
mov dl,[var]

int 21h
int 20h
var db 67
0
ajouté