Задать вопрос
@Bbb123

Как реализовать такой цикл на ассемблере: FOR I:=1 TO 9 DO IF X[I] < 0 THEN AL:=AL+1?

Вот что имею, может кто подскажет, что не так или что добавить, чего то не хватает (мне так кажется), а чего не могу понять (не судите строго).

MOV SI,1

MOV CX,9

M1: MOV AL,ARRAY_X[SI]

CMP AL,0

JS M2

INC SI

M2: inc AL

LOOP M1
  • Вопрос задан
  • 89 просмотров
Подписаться 1 Простой Комментировать
Решения вопроса 1
usdglander
@usdglander
Yipee-ki-yay
1. Вы в AL и элемент массива помещаете и его же и инкрементируете?
2. В данном случае можно просто просуммировать биты знака в элементах. Что то вроде такого:
mov al, 0
mov si, 1
mov cx, 9
m1: 
mov bl, ARRAY_X[si]
shr bl, 7
add al, bl 
inc si
loop m1
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@forspamonly2
MOVQ mm0, [ARRAY_X+1]
PMOVMSKB eax, mm0
POPCNT eax, eax
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы