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 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229
|
data segment ; declaration
vec1 dw 2 dup(?)
data ends
code segment
assume cs:code,ds:data;
start:
mov ax,data
mov ds,ax
mov cx,2
;MOV AH,09H ; ici je voudrais afficher un message donnez les valeurs du tab ou klk chose com ca !
;LEA DX,MSG1
;INT 21H
lea si,vec1
boucle: ; REMPLISSAGE DU VEC1
call LIRENOMBREDECIMAL
mov [si],ax
inc si
inc si
loop boucle
; MOV AH,01H
;INT 21H
;SUB AL,30h
;XOR AH,AH
;CALL FACTORIAL
;HLT
FACTORIAL PROC
MOV CX,2
MOV AX,1
FACTO:
MUL CX
LOOP FACTO
MOV FACT,AX ; SAUVEGARDE DU RESULTAT
dec cx
RET
FACTORIAL ENDP
LEA SI,vec1
xor cx, cx
mov cx,2
bouclefact:
; MOV AX,[si]
call FACTORIAL
MOV AX,FACT
MOV [SI],AX
MOV CX,2
DEC CX
loop bouclefact
LEA SI ,vec1
xor ax,ax
xor cx,cx
;mov ax,[SI]
mov cx,2
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
lea si,vec1
xor cx,cx
mov cx,2
boucleTri: ; TRI
call TRI
mov cx,2
dec cx
loop boucleTri
;mov ah,01H
;int 21H
;MOV BL,AL
;mov y,bl
;mov ah,01H
;int 21H
;mov x,al
; PROC TRI DU TABLEAU
TRI proc
lea si,vec1
mov ax,[SI]
mov y,ax
inc si
inc si
xor ax,ax
mov ax ,[si]
CMP y,AX
ja above
jb below
below:
mov dx,Ax
mov ah,2
int 21H
xor dx,dx
mov dx,y
mov ah,2
int 21h
HLT
above:
mov dx,ax
mov ax,bx
mov bx,dx
xor dx,dx
mov dx,ax
mov ah,2
int 21h
xor dx,dx
mov dx,bx
mov ah,2
int 21H
HLT
ENDP
;; FACTORIEL ; c'etait ma procedure je la conserve pour connaitre mes fautes!
;FACTORIEL PROC
; xor ax, ax
; mov ax,[SI] ; on met tjr la premiere valeur a ax
; mov bx,ax
;dec ax
;mov cx,ax
;inc ax
;sub [SI], 1 ;
;mov cx, [SI] ; la boucle doit tourner la valeur n-1 fois
; fact:
; dec bx
; mul bx
;sub [SI], 1
; MOV [SI],ax
;loop fact
;ret
lea si, vec1
affichage:
MOV AX,[SI]
CALL AFFICHENOMBREDECIMAL
loop affichage
Hlt
AFFICHENOMBREDECIMAL PROC ; PROCEDURE AFFICHAGE
mov dl,al
mov ah,2
int 21h
ret
ENDP
LIRENOMBREDECIMAL proc ; PROCEDURE LECTURE
xor ax,ax
mov ah,1h
int 21h
cmp al,'0'
je legal
ja legal
jb illegal
illegal:
;lea dx,msg3
;mov ah,9
;int 21h
mov ah,1h
int 21H
jmp legal
legal:
cmp al,'A'
je illegal
ja illegal
;lea dx,msg2
;mov ah,9
;int 21h
CALL AFFICHENOMBREDECIMAL
RET
endp
FACT DW ?
MSG1 DB 10,13,"DONNEZ LES VALEURS DU VEC1 :$"
y dw ?
ret
ends code
end |