Другие языки программирования и технологии

Архитектура ЭВМ помогите с ассемблером

Помогите разработать программу вычисления количества четных чисел массивов.
на ассемблере.. . или хотябы с графичиской схемой алгоритма.. .
или может кто подскажет где скачать книгу ( Хмакин А. П. "Архитектура ЭВМ" )
попробуй тут глянуть

хотя я не уверен
Виталий Вдовиченко
Виталий Вдовиченко
96 711
Лучший ответ
Вот.. . как-то так.. . Но я это все не проверял, так что не знаю, все чисто теоретически!! !
Поэтому, может, что-то не будет работать.. . но можно подправить, если что )) здесь просто сам алгоритм, правда не знаю, насколько он правильный.. .

;;; адрес начала массива - переменная array

xor ecx, ecx;; обнуляем счетчик (текущий элемент массива)
xor ebx, ebx;; обнуляем счетчик четных элементов
label1:
mov eax, ecx;; ecx - текущий элемент массива
shl eax, 2;; смещение внутри массива, 2: 4 байта/элемент, 1: 2 байта/элемент, если элемент - 1 байт, оператор не нужен. В этих случаях в 4 процедурах, начиная с mov eax, dword ptr [eax] должны быть изменены размеры (dword, eax) на необходимые
add eax, array;; полный адрес элемента массива
mov eax, dword ptr [eax];; копируем в eax то, что по адресу, который а eax (masm32, в других компиляторах может быть по-другому)
and eax, 1;; если eax четный, он станет равным 1, иначе 0
cmp eax, 0;; если нечетный
jne label2;; пропускаем увеличение ebx
inc ebx
label2:
inc ecx
cmp ecx, 255;; здесь должен быть размер массива
jb label1;; если индекс текущего элемента (включая 0) меньше размера массива, переходим в начало цикла

;;; ebx содержит количество четных элементов
Сергей .
Сергей .
37 544