Есть программа подсчета нечетных элементов. как написать подсчет элементов не равных нулю? - Assembler

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

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

Turbo Assembler mov ax, data mov ds, ax lea bx, mas ;берём в bx адрес первого элемента mov cx, len ;счетчик цикла xor ax, ax ;обнуляем регистр cikl: mov al, [bx] ;прибавляем к al байт, адрес которого хранится в bx test ax,1 ;проверяем на четность jnz next inc numb; увеличиваем, если четно next: inc bx ;переходим к следующему элементу loop cikl

Решение задачи: «Есть программа подсчета нечетных элементов. как написать подсчет элементов не равных нулю?»

textual
Листинг программы
lea   bx,mas      ;берём в bx адрес первого элемента
       mov   cx,len      ;счетчик цикла
       xor   ax,ax       ;обнуляем регистр
cikl:  mov   al,[bx]     ;отправляем в al байт из bx
       cmp   al,0        ;проверяем на нуль 
       jz    next        ;если нуль 
       inc   ah          ;иначе: считаем НЕ нули
next:  inc   bx          ;переходим к следующему элементу 
       loop  cikl

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

  1. lea bx,mas — в качестве первого шага мы берем в регистр BX (bx — base index register, то есть регистр, используемый в качестве индекса) адрес первого элемента массива, используя команду LEA (Load Effective Address). Здесь mas — это имя массива.
  2. mov cx,len — затем мы загружаем в регистр CX (cx — counter register, то есть регистр счетчика) длину массива, используя команду MOV (Move). Здесь len — это переменная, содержащая длину массива.
  3. xor ax,ax — для инициализации регистра AX (ax — accumulator register, то есть регистр-накопитель) мы используем команду XOR (Exclusive OR), которая устанавливает его в 0. Это будет наш счетчик нечетных элементов.
  4. cikl: — это метка цикла.
  5. mov al,[bx] — мы загружаем в регистр AL (al — accumulator register, то есть регистр-накопитель) байт из памяти по адресу, хранящемуся в BX, используя команду MOV.
  6. cmp al,0 — мы сравниваем значение в регистре AL с 0, используя команду CMP (Compare). Если оно равно 0, то мы переходим к следующему элементу без изменений.
  7. jz next — если значение в регистре AL не равно 0, то мы переходим к метке next, увеличивая счетчик на 1.
  8. inc ah — мы увеличиваем значение в регистре AH (ah — auxiliary accumulator register, то есть вспомогательный регистр-накопитель) на 1. Это наш счетчик нечетных элементов.
  9. next: — это метка, на которую мы переходим, если значение в регистре AL не равно 0.
  10. inc bx — мы увеличиваем значение в регистре BX на 1, переходя к следующему элементу массива.
  11. loop cikl — мы используем команду LOOP (Loop), чтобы вернуться к началу цикла и продолжить обработку элементов. Таким образом, код считает количество нечетных элементов в массиве, начиная с первого и заканчивая последним.

ИИ для рефератов и докладов


  • Экспорт Word по ГОСТу
  • Минимум 80% уникальности текста
  • Поиск релевантных источников в интернете
  • Готовый документ за 2 минуты

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

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