Количество отрицательных из заданного массива - Assembler

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

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

Есть заданный массив ,количество отрицательных в регистр ESI
Листинг программы
  1. void main () {
  2. long x[10]={10, -50, 50, -9, -10, 55, 4, -40, 80, -7} ;
  3. _asm {
  4. lea EBX, x ;
  5. mov ECX, 9 ; счетчик повторений
  6. mov EAX, dword ptr[EBX] ; первый элемент в ЕАХ
  7. m2: add EBX, 4 ; увеличение адреса
  8. cmp......
а дальше не могу ,cравнение с нулем ?

Решение задачи: «Количество отрицательных из заданного массива»

textual
Листинг программы
  1. ; переменная X типа WORD
  2. _asm {
  3.      lea  esi,x       ; адрес массива
  4.      mov  ecx,10      ; длина массива
  5.      xor  ebx,ebx     ; счётчик отрицательных
  6.      xor  eax,eax     ; EAX := 0
  7. m1:  lodsw            ; AX - очередной элемент из ESI
  8.      or   ax,ax       ; проверка флага SF на 1
  9.      jns  m2          ; нет - пропускаем
  10.      inc  ebx         ; да - счётчик +1
  11. m2:  loop m1          ; мотаем цикл ECX-раз..
  12. ;--------------------------------------------------------
  13. ;---------------------; результат в EBX

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

  1. Переменная X типа WORD.
  2. Код инициализирует ESI значением массива.
  3. ECX содержит длину массива, равную 10.
  4. EBX инициализируется как счётчик отрицательных.
  5. EAX инициализируется как 0.
  6. Начинается цикл, который будет выполняться 10 раз (ECX).
  7. Каждый раз в AX будет загружаться очередной элемент массива из ESI.
  8. Флаг SF (старший бит ответа) проверяется на 1, что означает, что текущий элемент отрицательный.
  9. Если SF = 0, то счётчик увеличивается на 1.
  10. Цикл продолжается до тех пор, пока ECX не станет равным 0.
  11. Результат (количество отрицательных) хранится в EBX.

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


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

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

5   голосов , оценка 4.2 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы