Найти числа, равные нулю, посчитать их количество - Assembler

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

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

найти числа, равные нулю, посчитать их количество? помогите написать код, сам не знаю с чего начать

Решение задачи: «Найти числа, равные нулю, посчитать их количество»

textual
Листинг программы
.386     ; Тип процессора - Intel 80386
;Сегмент стека
SEGMENT _stack para use16 stack 'stack'
db 100h dup(?)   ; Выделение 256 байт в сегменте стека 
ENDS _stack
 
;Сегмент данных
SEGMENT _data para use16 public 'data'
   A db 1,0,1,2,0,3,4,0,0,4
 s_A dw $-A
  n0 dw ?   
ENDS _data
 
SEGMENT _code para use16 public 'code'
ASSUME cs:_code,ds:_data,ss:_stack,es:nothing
 
proc _main
 
  mov ax,_data ;Явная инициализация сегмента данных
  mov ds,ax ;Загрузка в сегментный регистр базового адреса сегмента
  xor ax,ax
  mov si,offset A
  mov cx,s_A
M1:
  cmp byte ptr [si],0
  jne M2
  inc ax ;Количество нулей в массиве байтов A
M2:
  inc si
  loop M1
  mov n0,ax ;Количество нулей в массиве байтов A
  mov ax,4C00h
  int 21h
endp _main
 
ENDS _code
END _main    ;Конец программы с точкой входа _main

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

  1. Тип процессора - Intel 80386.
  2. Выделен сегмент стека размером 256 байт.
  3. Выделен сегмент данных размером 100 байт, в котором выделены 10 ячеек для хранения чисел.
  4. В сегменте данных выделена переменная n0 для хранения количества найденных нулей.
  5. Загрузка сегмента данных в сегментный регистр базового адреса сегмента (ds).
  6. Инициализация регистра si (индекс) начальным значением, равным первому элементу массива A.
  7. Цикл по всем элементам массива A до тех пор, пока не будет найдено первое значение, равное нулю.
  8. Если значение текущего элемента массива равно нулю, увеличивается счетчик (ax) на единицу.
  9. После окончания цикла, значение счетчика (ax) сохраняется в переменной n0.
  10. Загрузка сегмента кода (cs) в регистр ax.
  11. Передача в функцию int 21h, завершающую работу программы.

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


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

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

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