Найти максимальное отрицательное число в массиве - Assembler

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

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

в массиве А(20).Найти максимальное отрицательное число.

Решение задачи: «Найти максимальное отрицательное число в массиве»

textual
Листинг программы
;
.MODEL TINY
;
.DATA
sbArray     DB    23, 87, 90, -74, 68, -15, 75, 39, -97, 82, \
                  -42, 88, 32, -5, 10, -17, -80, -2, 20, 42
;
.CODE
      ORG   100h
START:
      LEA   SI, sbArray
      MOV   CX, LengthOf sbArray
      MOV   AH, 127     ; AH = Min. (init. by max. for byte)
LOAD_ITEM:
      LODSB
      CMP   AL, AH
      JGE   NEXT_ITEM
      MOV   AH, AL
NEXT_ITEM:
      LOOP  LOAD_ITEM
      RET
;
END START
;

Объяснение кода листинга программы

  1. .MODEL TINY - устанавливает модель памяти для программы (в данном случае модель TINY, можно выбрать другие модели в зависимости от требований к программе)
  2. .DATA - сегмент данных, в котором хранятся переменные программы
  3. sbArray DB 23, 87, 90, -74, 68, -15, 75, 39, -97, 82, -42, 88, 32, -5, 10, -17, -80, -2, 20, 42 - массив, в котором нужно найти максимальное отрицательное число
  4. .CODE - сегмент кода, в котором хранятся инструкции программы
  5. START: - метка начала выполнения программы
  6. LEA SI, sbArray - перемещает указатель на первый элемент массива в регистр SI
  7. MOV CX, LengthOf sbArray - перемещает длину массива в регистр CX
  8. MOV AH, 127 - инициализирует регистр AH максимальным значением для byte (в данном случае 127)
  9. LOAD_ITEM: - метка цикла, который будет выполняться до тех пор, пока не будут загружены все элементы массива
  10. LODSB - загружает байт из массива в регистр AL и увеличивает указатель на следующий элемент массива
  11. CMP AL, AH - сравнивает текущий элемент массива с максимальным значением, хранящимся в регистре AH
  12. JGE NEXT_ITEM - если текущий элемент больше максимального значения, то переходит к следующему элементу
  13. MOV AH, AL - если текущий элемент является максимальным значением, то сохраняет его в регистре AH
  14. NEXT_ITEM: LOOP LOAD_ITEM - переходит к следующей итерации цикла до тех пор, пока не будут загружены все элементы массива
  15. RET - возвращает управление в вызывающую программу
  16. END START - указывает на конец программы
  17. ; - символ конца строки комментария

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

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