Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1449 connectés 

  FORUM HardWare.fr
  Programmation
  ASM

  language ASM

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

language ASM

n°1980201
xymahis
Pe@rLiYa
Posté le 01-04-2010 à 22:09:38  profilanswer
 


Bonsoir,  
 
jé dé kestions concernant le language assembleur (asm 8086)
je ss débutante, j'ai essayé d'ecrire kelk simple programme, mais j'arrive pa à les ecrire correctement  
 
j'ai un prob au niveau de l'incrémentation, et de réaliser une boucle  
 
bon voilà un tit prog (simple)
 
Entrées/Sorties Interruption 10h du BIOS
prog ki place l'écran en mode texte(03h) et affiche lé 16 caractères de l'alphabet,chacun sur une ligne, chacun répété 40 fois et chacun avec une couleur différente sur fond noir (on commence avec la couleur 0 et on incrémente )
 
 
j'ai entamé d'ecrire ce programme mé j'arrive tjrs pa à réaliser les instructions d'incrémentation

 
 http://dc04.arabsh.com/i/01339/unjule0e3uof.jpg
 
Merci d'avance ;)

mood
Publicité
Posté le 01-04-2010 à 22:09:38  profilanswer
 

n°1980276
Modération
Posté le 02-04-2010 à 10:32:14  answer
 

Utilise plutot les balises [ code ] stp, pour poster du code :

Code :
  1. code segment
  2. start:
  3.        mov ah,0
  4.        mov al,03
  5.        int 10h
  6.        
  7.        mov ah,0Eh
  8.        mov al,65
  9.        mov cx,40
  10.        int 10h
  11.        
  12.        mov ah,09h
  13.        mov al,65
  14.        mov bh,0
  15.        mov bl,1
  16.        add bl,1
  17.        int 10h
  18.        
  19. boucle:
  20.        add al,1
  21.        cmp al,80
  22.        jle start
  23.        
  24.        mov ax,4c00h
  25.        int 21h
  26. ends
  27. end start

n°1980284
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 02-04-2010 à 10:48:32  profilanswer
 

(les numéros de ligne que je donne font référence à ta capture, et pas à celles du post au dessus du mien)

xymahis a écrit :


prog ki place l'écran en mode texte(03h) et affiche lé 16 caractères de l'alphabet,chacun sur une ligne,


ligne 14 : tu initialises toujours AL à 65, donc tu auras beau l'incrémenter à la fin de ton programme, tu n'afficheras toujours que "A"

 
xymahis a écrit :


j'ai entamé d'ecrire ce programme mé j'arrive tjrs pa à réaliser les instructions d'incrémentation


quelques remarques sur ton programme :

 

- les lignes 13 à 16 sont inutiles, car tu écriras de toute façon ton caractère avec la fonction 09h, inutile d'appeler 0eh, ça ne fera que te rajouter un caractère de plus
- ligne 21 : pourquoi ce "mov al,al" ??? totalement inutile, puisque al est déjà initialisé.
- ligne 24 : ce n'est pas ici qu'il faut incrémenter la couleur, mais une fois le caractère affiché
- lignes 28 à 30 : comme dit précédemment, tu peux toujours incrémenter la lettre à afficher, mais si tu laisses AL à 65, tu n'afficheras que "A"... de plus, ton jle revient au début du programme, c'est inutile.

 

enfin il te manque l'appel à int 10h/02h pour définir la position du curseur et aller à la ligne suivante une fois les 40 caractères affichés


Message édité par Harkonnen le 02-04-2010 à 10:49:19

---------------
J'ai un string dans l'array (Paris Hilton)
n°1980315
xymahis
Pe@rLiYa
Posté le 02-04-2010 à 11:37:55  profilanswer
 


 
 
Bonjour,  
tt d'abord MERCI  
 
 

Citation :

mais si tu laisses AL à 65, tu n'afficheras que "A".


donc faut pas initialiser AL à 65 ???!!
 
j'a régler le prog vite fait, mais tjrs lors de l'incrémentation y a un prob
si vs pouvez me donner un exemple en ce qui concerne l'étape de l'incrém.
 
le voilà
 
 

Code :
  1. code segment
  2.    
  3.     start:
  4.          
  5.            ;display
  6.            mov AH,0
  7.            mov AL,03
  8.            int 10h
  9.          
  10.            ;write caracter
  11.            mov AL,65
  12.        
  13.          
  14.          
  15.            mov AH,09h
  16.            mov BH,0
  17.            mov BL,00000001b
  18.            add AL,1
  19.            mov Cx,40
  20.            int 10h
  21.          
  22.          
  23.        boucle: add BL,1
  24.                  cmp CX,40        ; je l'ai écrit oui, mais je ss pa d'accord avec je le trouve bizzare   
  25.                   JE ligne
  26.                              
  27.              
  28.       ligne:  mov AH,02h
  29.               mov BH,0
  30.               mov DH,1
  31.               add DH,1
  32.               int 10h
  33.              
  34.              
  35.      
  36.     code ends
  37.         end start

n°1980373
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 02-04-2010 à 14:10:12  profilanswer
 

xymahis a écrit :


donc faut pas initialiser AL à 65 ???!!


si, mais ne le faire qu'une seule fois. toi tu le fais à chaque fois que tu passes dans ta boucle start, donc il est toujours égal à 65, ce qui fait que tu n'auras que la lettre "A" qui s'affichera.
il faut l'initialiser en dehors de toute boucle.

 


xymahis a écrit :


j'a régler le prog vite fait, mais tjrs lors de l'incrémentation y a un prob
si vs pouvez me donner un exemple en ce qui concerne l'étape de l'incrém.

 

le voilà [...]


tu es complètement désordonnée... en assembleur, il faut absolument de la rigueur et de l'ordre.
commence par te poser la question suivante : quelles sont les valeurs qui varieront, et quelles sont les valeurs qui ne varieront pas ?

 

ce qui variera :
- la couleur (stockée dans bl)
- le caractère (stocké dans al)
- la ligne (stockée dans dh)

 

ce qui ne variera pas :
- le nombre de caractères/ligne (40, stocké dans cx)
- la colonne (toujours 0, stockée dans dl)

 

ton programme aura donc la structure suivante :

 
Citation :


start:
         ; passer en mode texte comme tu le fais avec int10h/03h
         ; initialiser les 5 variables que je t'ai décrites plus haut

 

ligne:
         ; ecrire le 1er caractère dans la 1ere couleur
         ; incrementer le numéro de ligne
         ; tester si la ligne > 16. si oui, alors on termine le programme
         ; si non, alors on saute une ligne
         ; puis on incrémente la variable contenant la couleur
         ; et on incrémente également la variable contenant le caractère
         ; et on reboucle au début de "ligne"

 

fin:
         ; fin du programme, on redonne la main à l'OS comme tu le fais avec l'int 21h


voilà. toute l'ossature est là. ton programme, je viens de le faire et il fonctionne très bien avec cette ossature. comme je suppose que c'est un devoir, je ne te le donnerais pas tout fait, mais n'hésite pas à me poser toutes les questions que tu veux.


Message édité par Harkonnen le 02-04-2010 à 14:11:24

---------------
J'ai un string dans l'array (Paris Hilton)
n°1980718
xymahis
Pe@rLiYa
Posté le 04-04-2010 à 00:00:11  profilanswer
 


Merci pour l'aide, ^^
 
vraimment ça m'a aidé bcp,
 

Citation :

tu es complètement désordonnée


 
oui t'as raison, parceque ce demi module (architecture des ordi) est bien chargée, alors qu'on a fait une seul séance d'1h
 
dans ce language (le plus proche de la machine que l'être humain) par contre le C (qui est bien facile on a l'étudier pendant 1ans  
 
alors je ss dsl si je te fais mal par ces bêtes questions, ^^
 
mais bon merci bien, ta 2ème réponse m'a aidé bcp, puiske tu m'as bien donné les étapes avant entamé l'écriture du prog
 
et pr info ,, ce n'est pa un devoir c juste une série de 9 exercices que notre prof nous l'a donné aprè la séance d'1h  
 
et en tt cas t'inkiète pa, moi aussi j'aime pa lé solution prêtes, j'aime plutôt les indications.
 
Merci encore une  
 
je vais essayer une autre fois à écrire le prog et je re ^^
 
 
 
 

n°1980740
Modération
Posté le 04-04-2010 à 09:07:49  answer
 

Il faudrait aussi étudier l'emploi d'un correcteur orthographique, car je n'accepterai pas ce niveau d'erreur dans vos posts ultérieurs.

n°1980768
xymahis
Pe@rLiYa
Posté le 04-04-2010 à 13:59:54  profilanswer
 

ce sont juste des abréviations pour faciliter la tâche !!
 
Bon, d'accord, ce que vous voulez, j'adapte tous ça.
 
Merci,
 
Cordialement

n°1980782
xymahis
Pe@rLiYa
Posté le 04-04-2010 à 15:01:18  profilanswer
 


Bonjour,  
 
finalement ça marche bien plutôt très bien,
 
au début j'ai eu plusieurs fautes en ce qui concerne toujours les boucles, mais avec la compilation j'ai bien maitrisé les fautes qu'elles existent
bien évidemment c'est à cause de ton aide, je te remercie infiniment  :)  
 
le voilà mon dernier code qui marche bien.
une fois le programme marche, j'ai modifié les données
les caractère de A -> Z
j'ai incrémenté aussi la colonne (j'ai eu un affichage sur la diagonale)
 
 

Code :
  1. code segment para
  2.    
  3.     Start:
  4.    
  5.          ;mode texte
  6.          mov ah,00h
  7.          mov al,03h
  8.          int 10h
  9.        
  10.          ;initialisation
  11.          mov al,65              ;code ASCII
  12.          mov bl,00000001b
  13.          mov dh,0
  14.          mov dl,0 
  15.        
  16.    boucle:
  17.  
  18.          ;ecriture
  19.          mov ah,09h
  20.          mov bh,0
  21.          mov cx,24
  22.          int 10h
  23.            
  24.          mov ah,02h 
  25.          mov bh,0
  26.          inc dl
  27.          inc dh       ;ligne++
  28.          cmp dh,26
  29.          jg fin
  30.          int 10h
  31.                                  
  32.          inc bl     ;couleur++
  33.          inc al       ;caractere++
  34.        
  35.          cmp al,91
  36.          jle boucle
  37.        
  38.        
  39.  
  40.    fin:
  41.         mov ax,4c00h
  42.         int 21h
  43.        
  44.        
  45.    code ends
  46.        end start

n°1981027
powel42
Posté le 06-04-2010 à 01:18:18  profilanswer
 

Ligne 6, ces deux lignes peuvent être simplifiées ;)  
 
mov ah, 00h
mov al,  03h
 
ainsi que ces deux lignes :  
mov dh,0
mov dl,0  


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  ASM

  language ASM

 

Sujets relatifs
C'est quoi un vecteur en language C ?[ASM] différence 64 et 32 bits
problem avec HTTP_ACCEPT_LANGUAGELien entre algorithme et language C
Choix language pour projetComment modifier un fichier python sur BF2142.
quel language Application sur clef usb sans instalASM(masm32) ou C++ ?
[ Language C ] Copie du contenu d'un fichier dans un tableau.Moyenne pondérée (lissage carte) : quel language choisir ?
Plus de sujets relatifs à : language ASM


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR