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
| ;*******************************************************
;* programme manipulant les tableaux et la pile *
;* implicitement code 8086 *
;* tasm /la /zi lea.asm *
;* tlink /v lea.obj *
;* td lea.exe *
;* code et erreur dans lea.lst *
;* *
;* P.DUMAS 5/11/2002 *
;*******************************************************
name direct
.MODEL SMALL ; tout dans le même segment
;*************** segment de pile
.STACK 100h
;*************** segment de données
.DATA
TABLEAU1 db 27,134,65,87,245,22,34,87,241,23
TABLEAU2 db 12,200,154,56,12,99,233,12,210,59
RESULTAT db 20 DUP (?)
commencement db "debut",13,10,"$"
terminaison db "fin",13,10,"$"
;*************** segment de code
.CODE
DEBUT:
MOV AX,@data
MOV DS,AX
;à faire
;*************** affichage du commencement
;à faire
;lea ax,commencement
;call AFFICH
;*************** remplissage des tableaux
;à faire
mov ax,0
mov dx,0
mov di,10
mov bx,10
mov si,10
call boucle
;*************** mise en pile, lecture sans destruction, destruction
;à faire
;*******************affichage de la terminaison
;à faire
;******************* fin
call fin
;*******************************************************
;* fonction de fin de programme *
;*******************************************************
;à faire
fin:
mov ax,4c00h
INT 21h
;end DEBUT
;*******************************************************
;* fonction d'affichage *
;* paramètre d'entrée dans ax: adresse du texte *
;* à afficher *
;*******************************************************
AFFICH:
mov dx,ax
mov ah,9
int 21h
ret
;*******************************************************
;*******************************************************
;* remplissage du tableau RESULTAT *
;* entrées: bx: offset 1er tableau *
;* si: offset 2ème tableau *
;* di: offset tableau résultat *
;*******************************************************
;à faire
boucle:
lea bx,TABLEAU1
lea si,TABLEAU2
add bx,9
add si,9
mov al,[bx]
mov dl,[si]
jc carry
RESUL:
lea di,RESULTAT
add di,9
mov al,[di]
dec bx
dec si
dec di
cmp di,1
loop boucle
carry:
adc al,1
mov RESULTAT[di-1],al
jmp RESUL
;*******************************************************
; fonction de mise en pile du tableau RESULTAT
;à faire
;push RESULTAT
; lecture de la pile sans dépilage
;à faire
;mov BP,SP
;destruction du tableau RESULTAT en pile
;à faire
;POP RESULTAT
end DEBUT |
Partager