il s'agit d'un programme qui lit un nombre tappé au clavier et qui stocke le résultat dans une variable N1 (la lecture s'arrete qd le caractere tappé n'est pas un chiffre)
j'ai tout compris à part cette portion là
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28 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 fin Cmp AL,"9" JA fin Sub AL,"0" ; sinon le chiffre= code ASCII-ASCII(0) SHL N1,1 ; et N1 <- 10*N1 + AL Mov BL,N1 SHL BL,1 SHL BL,1 Add N1,BL Add N1,AL jmp lecture fin: mov ah,4Ch int 21h Code Ends End main
Pourquoi on a eu recours à BL ? je ne vois pas l'utilité de stocker N1 dans BL ensuite décaller ses bits deux fois vers la gauche... moi j'aurais programmé N1<-10*N1+AL comme suit :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 SHL N1,1 ; et N1 <- 10*N1 + AL Mov BL,N1 SHL BL,1 SHL BL,1 Add N1,BL Add N1,AL
je sais que c'est faux mais je n'arrive pas à comprendre pourquoi
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 SHL N1 MOV N1,AL ADD N1,AL![]()
Help please !
Partager