В массиве удалить элементы, меньшие среднего арифметического элементов массива - Assembler

Узнай цену своей работы

Формулировка задачи:

"В массиве удалить элементы, меньшие среднего арифметического элементов массива." Надо написать самым простым способом

Решение задачи: «В массиве удалить элементы, меньшие среднего арифметического элементов массива»

textual
Листинг программы
;fasm code...
org 100h
jmp  start
 
array  db   22,7,12,18,5,13,8,23,2,14
len    =    $ - array         ; длина массива = текущий адрес, минус адрес начала массива
 
start: mov   si,array         ; SI для LODSB
       mov   cx,len           ;
       xor   bx,bx            ;
summ:  lodsb                  ;
       add   bx,ax            ; ВХ = сумма
       loop  summ             ;
 
       xchg  ax,bx            ;
       mov   bx,len           ;
       xor   dx,dx            ;
       div   bx               ;
       xchg  ax,dx            ; DX = среднее
 
       mov   cx,bx            ;
       sub   si,cx            ;
       mov   di,si            ; SI/DI = адрес массива
newAr: lodsb                  ;
       cmp   al,dl            ;
       jbe   fuck             ; пропустить, если AL меньше/равно среднего
       stosb                  ; иначе: перезапись массива значением из AL
fuck:  loop  newAr            ;
 
       xor   al,al            ; вставляем маркер конца массива
       stosb                  ;
 
       xor  ax,ax             ;
       int  16h               ;
       ret                    ;

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

11   голосов , оценка 3.909 из 5
Похожие ответы