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
|
;********************************************************
;* programme permettant *
;* *
;* tasm /la /zi i .asm *
;* tlink /v .obj *
;* td .exe *
;* code et erreur dans .lst *
;* *
;********************************************************
;* REMARQUE: *
;********************************************************
;* *
;********************************************************
name programme
.MODEL SMALL ; tout dans le même segment
.386
;*************** segment de pile
.STACK 100h
;*************** segment de données
.DATA
commencement db "debut",13,10,"$"
terminaison db "fin",13,10,"$"
tabx db 1 dup (0,1,2,3,4,5,6,7,8,9,10,9,8,7,6,5,4,3,2,1, \
0,1,2,3,4,5,6,7,8,9,10,9,8,7,6,5,4,3,2,1)
taby db 40 dup (?)
taba dw 1,4,6,4,1
;*************** segment de données
.CODE
DEBUT: mov ax,@data
mov ds,ax
lea ax,commencement
call affich
PILE:
mov bx,taba[0] ;bp
push bx
mov bx,taba[1] ;bp+2
push bx
mov bx,taba[2] ;bp+4
push bx
mov bx,taba[3] ;bp+6
push bx
mov bx,taba[4] ;bp+8
push bx
mov bx,size tabx ;bp+10
push bx
mov bx,offset tabx ;bp+12
push bx
mov ax,offset taby ;bp+14
push ax
call calcul
calcul:
mov cx,5
mov si,0
repet5:
mov ax,[bx] ;récup de valeur de x
imul ax,[bp] ; multiplication val de x avec val de a
add si,ax ; addition des termes
inc bp
inc bp ; incrémentation de 2 fois sur la pile
inc bx
loop repet5
div cx,16
shr si,[4]
mov ds,si
push si
sub bp,8
dec bx
dec bx
dec bx
dec bx ; recup de x1
inc di
cmp di,36
jne calcul
inc bx
mov si,0
mov cx,4
yn4:
mov ax,[bx] ;récup de valeur de x
imul ax,[bp] ; multiplication val de x avec val de a
add si,ax ; addition des termes
inc bp
inc bp ; incrémentation de 2 fois sur la pile
inc bx
loop yn4
;div cx,16
shr si,[4]
mov ds,si
push si
sub bp,8
dec bx
dec bx
dec bx ; recup de xn-3
mov cx,3
mov si,0
yn3:
mov ax,[bx] ;récup de valeur de x
imul ax,[bp] ; multiplication val de x avec val de a
add si,ax ; addition des termes
inc bp
inc bp ; incrémentation de 2 fois sur la pile
inc bx
loop yn3
;div cx,16
shr si,[4]
mov ds,si
push si
sub bp,8
dec bx
dec bx ; recup de xn-2
mov cx,2
mov si,0
yn2:
mov ax,[bx] ;récup de valeur de x
imul ax,[bp] ; multiplication val de x avec val de a
add si,ax ; addition des termes
inc bp
inc bp ; incrémentation de 2 fois sur la pile
inc bx
loop yn2
;div cx,16
shr si,[4]
mov ds,si
push si
sub bp,8
dec bx ; recup de xn-1
yn1:
mov ax,[bx] ;récup de valeur de x
imul ax,[bp] ; multiplication val de x avec val de a
add si,ax ; addition des termes
inc bp
inc bp ; incrémentation de 2 fois sur la pile
inc bx
;div cx,16
shr si,[4]
mov ds,si
push si
;mov bp,0
;dec bx,3 ; recup de xn-3
;call lecture
;lecture:
;mov bp,sp ;le dernier paramètre est adressé par SS:[BP + 2]
;ret 80 ; nb de parametres *2
;*************** mise en pile, lecture sans destruction, destruction
;à faire
;call remplit
;suite1: call lecture
;suite2: call destruction
;suite3:
lea ax,terminaison
call affich
;********************************************************
;* fonction de fin de programme *
;********************************************************
fin: mov ax,4c00h
int 21h
;********************************************************
;********************************************************
;* fonction d'affichage *
;* parametre d'entrée dans ax: adresse du texte *
;* à afficher *
;********************************************************
affich:
mov dx,ax
mov ah,9
int 21h
ret
end DEBUT |
Partager