> массив полюбе не нужен
O_o
Если вам не нравится 64-разрядная программа с синтаксисом AT&T, вот вам 32-разрядная с синтаксисом Intel, даже с выводом результата в консоль.
А подсчитать количество каких нулей требуется? Если двоичных во всех элементах массива, то:
.386
.model flat, stdcall
option casemap:none
include kernel32.inc
include msvcrt.inc
includelib kernel32.lib
includelib msvcrt.lib
.stack 100h
.data
txtRes db 'Кол-во нулей = %d',0
Array db -97, 24, 39, 75, 0, -123
Len equ $ - Array
.code
N74748424:
lea esi,Array
mov ecx,Len
xor ebx,ebx
;-------------------
Loop1:
push ecx
mov ecx,8
lodsb
not al
Loop2:
ror al,1
adc ebx,0
loop Loop2
pop ecx
loop Loop1
;-------------------
invoke crt_printf, addr txtRes, ebx
invoke ExitProcess,0
end N74748424
А если нужно считать количество нулевых элементов массива (нулевых байтов) , то замените выделенный жирным шрифтом фрагмент на:
mov edx,ebx
DoLoop:
lodsb
or al,al
setz dl
add ebx,edx
loop DoLoop
Другие языки программирования и технологии
Ассемблер. Дан массив из 6 байт. Посчитать кол-во нулей.
> Дан массив из 6 байт.
>массив полюбе не нужен,
_
что у тебя с головой?
>массив полюбе не нужен,
_
что у тебя с головой?
Ассемблер-то какой?
# GAS for amd64
.code64
.text
.global zeroNumbers
zeroNumbers:
mov $6, %rcx
mov $array, %rdx
xor %rax, %rax
for_each:
lea 1(%rax), %rbx
cmp $0, -4(%rdx, %rcx, 4)
cmove %rbx, %rax
dec %rcx
jnz for_each
ret
.data
array: .long 3,2,0,4,0,5
# GAS for amd64
.code64
.text
.global zeroNumbers
zeroNumbers:
mov $6, %rcx
mov $array, %rdx
xor %rax, %rax
for_each:
lea 1(%rax), %rbx
cmp $0, -4(%rdx, %rcx, 4)
cmove %rbx, %rax
dec %rcx
jnz for_each
ret
.data
array: .long 3,2,0,4,0,5
двести рэ
Похожие вопросы
- Программирование ассемблер. Дан массив из 8 байт. Посчитать количество байт, в которых число нулей и единиц одинаковое
- Дан массив из 8 байт. Рассматривая его, как массив из 64 бит посчитать длину самой длинной последовательности единиц.
- Здравствуйте помогите в программирование на ассемблере. Нужно зеркально отобразить массив из 256 байт
- Ассемблер двумерный массив
- pascal одномерные массивы. дан массив А(30).
- Дан массив. Выведите те его элементы, которые встречаются в массиве только один раз. В чем ошибка?
- даны три массива A[6,6], B[6,6],C[6,6]. найти сумму максимальных элементов, расположенных на главной диагонали
- помогите? Дан массив целых чисел (n=15),
- Дан массив а1,...а50. Найти в нем последовательности.. смотрите внутри. Задание на Си. Подскажите с чего начать
- дан массив целых чисел F1,F2...Fn. распечатать элементы, нах-ся между min и max и их номера. подскажите где я ошибся