codice:
.MODEL SMALL
.STACK 100h
.DATA
M DW 2,5,8,-4,7,-21,3,-12,-10,-11,5,31,4,0,14,8,3,89,9,-56,-23,-45,-97,8,30 ;DEFINISCO MATRICE M
DIM $-M
N equ 5 ;N=RIGHE DI M
RC equ 2 ;RC= COLONNE DI R
R DW 0,0,0,0,0,0,0,0,0,0 ;INIZIALIZZO MATRICE RISULTATO R
.START
.STARTUP
SUB ESP,4 ;alloco spazio nello stack
PUSH DWORD N
PUSH DWORD DIM
PUSH M
CALL NOMEMETODO
POP ECX
NOMEMETODO:
PUSH EBP ;
MOV EBP,ESP
ADD EBP,8
MOV EDI,[EBP]
MOV EAX,0 ;in eax metto lo spazio occupato dalle righe (=5)
MOV EBX,0 ; indice di colonna (m) che ogni volta incremento di 2
MOV ECX,0 ;variabile di supporto "temp"
MOV ESI,[EBP+8] ; ESI= N
SHL ESI,1 ;tengo in esi N*2 ;
SCANSIONERIGA:
CMP EBX, ESI ;confronta indice colonne
JE CAMBIARIGA
MOV DX,[EDI+EBX] ;COPIO ELEMENTO MATRICE IN DX
ADD EBX,2 ;incremento di 2 ebx
; .... analizzo elemento es CMP;IN DX DOVREI AD OGNI ITERAZIONE L'ELEMENTO DI M
;.... per esempio lo metto in R
JMP SCANSIONERIGA
CAMBIARIGA:
CMP EAX,[EBP+4]
JE FINE
ADD EAX,ESI
ADD EDI,EAX
MOV EBX,0
JMP SCANSIONERIGA
FINE:
MOV [EBP+16],ECX
POP EBP
RET 16