Дан массив из 5 элементов. Найти количество отрицательных элементов - Assembler
Формулировка задачи:
Решение задачи: «Дан массив из 5 элементов. Найти количество отрицательных элементов»
.model small .data a db 12,31,10,15,5 r db 0 .code begin: mov ax,@data mov ds,ax mov cx,5 mov si,offset a a0: lodsb test al,al jns a1 inc r a1: loop a0 ....; вывод на экран содержимого r mov ah,4Ch int 21h
Объяснение кода листинга программы
.model small — это директива компилятора, которая указывает на модель памяти, используемую в программе. В данном случае используется модель small, что означает, что для сегмента данных выделяется 16 байт, а для сегмента кода — 4 Кбайта. .data — это сегмент данных, в котором хранятся переменные программы. В данном случае в сегменте данных определен массив a, который содержит пять элементов: 12, 31, 10, 15, 5. .code — это сегмент кода, в котором хранятся инструкции программы. begin: mov ax,@data — это инструкция, которая загружает в регистр ax сегмент данных программы. mov ds,ax — это инструкция, которая указывает на сегмент данных как на активный сегмент. mov cx,5 — это инструкция, которая загружает в регистр cx число 5, которое будет использоваться как счетчик для цикла. mov si,offset a — это инструкция, которая загружает в регистр si смещение (offset) массива a. a0: lodsb — это инструкция, которая загружает в регистр al байт из массива a по смещению, равному 0. test al,al — это инструкция, которая проверяет, является ли содержимое регистра al отрицательным числом (если оно меньше нуля). jns a1 - это инструкция, которая выполняет переход к метке a1, если содержимое регистра al не отрицательное. inc r — это инструкция, которая увеличивает значение переменной r на единицу. a1: loop a0 - это инструкция, которая выполняет цикл, пока содержимое регистра al не станет отрицательным. ... — это комментарии, которые не выполняются в процессе выполнения программы. mov ah,4Ch — это инструкция, которая устанавливает регистр ah в значение 4Ch. int 21h — это инструкция, которая вызывает функцию 21h, которая выводит на экран содержимое регистра ah.