Correction programmation assembleur assembleur
Ex.2 : Quelques programmes
1- Affichage de l'alphabet en majuscule (alphabet.asm) assume CS:Code
Code segment main: mov DL,"A" mov CX,26 ;compteur de la boucle pour affichage de 26 lettres de ; l’alphabet mov AH,2 ; affichage encore: int 21h inc DL ;incrémentation de DL pour passer à l’alphabet suivant Loop encore ; fin de la boucle mov ah,4Ch int 21h
Code Ends
End main …afficher plus de contenu…
Code Ends
19. End main
2- A partir du programme précédent, écrire un programme (dixfois.asm) qui multiplie le nombre par 10 avant de le ranger dans N1
(deuxième méthode)
Remplacer N1<- AL-"0" par N1<- (AL-"0")*10 Sub AL,"0" ; sinon le chiffre= code ASCII-ASCII(0) SHL AL,1 Mov N1,AL SHL AL,1 SHL AL,1 Add N1,AL
3- Ecrire maintenant un programme (numread.asm) qui lit un nombre décimal au clavier et le sauvegarde dans N1. La lecture s'arrête quand le caractère lu n'est pas un chiffre (plus besoin d'afficher "N"). On ne contrôlera pas le débordement de capacité. assume CS:Code, DS:Data
Data Segment
N1 db ?
Data Ends
Code segment main: mov AX,Data
Mov DS,AX
Mov N1,0 lecture: mov AH,1 ; saisie int 21h ; le caractere lu arrive dans AL
Cmp AL, "0"
JB …afficher plus de contenu…
pluspetit.asm assume CS:Code
Code segment main: mov AL,[40H] neg AL mov [41H],AL mov BL,[41H] CMP BL,[40H] JB SUITE ; si BL<[40H] alors saut vers SUITE Mov [42H],[40H] ; sinon
SUITE : mov [42H],BL mov ah,4Ch int 21h
Code Ends
End main
Correction de l’examen TP
Ecrire un programme assembleur permettant de faire une boucle de saisie de caractère qui s’arrête à la saisie du caractère spécial « # ». Pour chaque caractère saisi, s’il s’agit d’un chiffre ( 0..9) le programme doit afficher « C » pour dire Chiffre. Sinon, le programme affiche « N » pour dire Non. assume CS:Code
Code segment main: mov AH,1 int