СА
Свет Александровна

[Assembler] Как определить сколько в массиве элементов равны регистру bl?

Всю ночь промучался с написанией программы, но так ничего и не вышло :С

НА
Настька Аржанухина

Смотрите в сторону repne scasb и всё станет сразу проще.

Команда и там-же пример, очень похожий на Ваш
http:// www. kolasc .net.ru/cdo/programmes/assembler/scas.html
(без пробелов)

Если целиком:

;Метки с @@ будут считаться локальными
locals @@

;Сегмент стека
stk segment stack
dw 128 dup(?)
stk ends;Конец сегмента стека

;Сегмент данных
data segment
;Массив
arrStart: db 10,20,30,10,20,10
arrEnd:
data ends

;Сегмент кода
code segment
assume cs:code, ds:data, es:data
;Точка входа
start:
;Инициализируем es
mov ax, data
mov es, ax

;В bl искомый элемент
mov bl, 10
;Флаг направления - двигаемся "вперед" по памяти
cld
;cx = размеру массива
mov cx, arrEnd-arrStart
;es:di теперь указывает на массив
lea di, arrStart
;Здесь будет храниться кол-во элементов (обнуляем)
xor dx, dx
;al = bl (для repne scasb)
mov al, bl
@@again:
repne scasb
;Если элемент не был найден - пропускаем увеличение
jne @@skipAdd
;Иначе увеличиваем счетчик
inc dx
@@skipAdd:
;Если cx = 0 (достигли конца) - выходим
jcxz @@exit
;Иначе ищем дальше
jmp short @@again
@@exit:
;-----
;Здесь dx = кол-ву чисел
;------
;Выходим из программы
movax, 4c00h
int21h

;Конец сегмента кода
code ends
end start

Андрей
Андрей

Это регистр b - причем первые 8 бит этого регистра. Поэтому bl.если в двух словах регистр - это просто набор ячеек памяти, каждая из которых соответствует 1 биту. Скажем, у нас 32 разрядный процессор. Т. е. в каждом регистре 32 бита. Они делятся по 8 бит - это в некотором смысле условное разделение и просто показывает в какую часть регистра пишутся данные. Первые 8 бит - это регистр bl (low)Следующие 8 - это регистр bh (high)Еще 8 бит - это если не путаю ebl (extended - расширенный) Но тем не менее это все регистр b.Вот собственное и все.

Похожие вопросы
Найти значение максимального элемента массива. Если таких элементов несколько, то определить сколько их.
Как упорядочить элементы массива?
В массиве из 50 элементов определить сумму элементов, max и min элементы.
Массивы. Найти максимальный элемент массива и номера этих элементов,равных максимальному.
Удаление элементов из массива с++
как удалить из массива все элементы
дан массив из 10 элементов найти минимальный элемент из элементов массива больших или равных 50
Что называют элементом массива?
как найти элементы массива
как определить количество элементов в массиве с++?