Обращение к элементам массива - Assembler
Формулировка задачи:
Есть одномерный массив K размерностью 10, вывести первый и последний его элемент, удовлетворяющий условию K[1]<K[i]<K[10]. Застрял на обращении к элементам массива. (Использую FASM)
Решение задачи: «Обращение к элементам массива»
textual
Листинг программы
format PE console include 'win32a.inc' mov edi,K;move array address to edi mov ecx,[qeK];move array dimension to ecx mov bl,[edi];memorize first element of array push edi add edi,ecx dec edi mov esi,edi;memorize last element address mov bh,[edi];memorize last element of array pop edi mov al,0;we will use al for first element that meets condition mov ah,0;we will use ah for last element that meets condition inc edi;beginning the loop from second element sub ecx,2;8 times push ecx m1: cmp [edi],bl;compare current element to first jle m1s;ignore if lesser or equal cmp [edi],bh;compare current element to last jge m1s;ignore if greater or equal mov al,[edi];assign first element that meets condition jmp m1e;break loop m1s: inc edi;go to next element of array loop m1 m1e: mov edi,esi dec edi pop ecx m2: cmp [edi],bl jle m2s cmp [edi],bh jge m2s mov ah,[edi] jmp m2e m2s: dec edi loop m2 m2e: invoke ExitProcess,0 K db 1,2,3,4,5,6,7,8,9,10 qeK dd $-K include 'API\kernel32.inc' data import library kernel32,'KERNEL32.DLL' end data