Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[18.191.240.243] |
|
Сообщ.
#1
,
|
|
|
Добрый вечер) Такая задача:
Дан массив из 10 байт.Посчитать кол-во байт с числом единиц в байте равным 3. Постарался реализовать..Помогите найти ошибку: include 'emu8086.inc' org 100h MOV AH,0 MOV DH,3 MOV BX,9 MOV DL,0 MOV CX,8 for1: MOV AL, mass[BX] for2: SHL AL, 1 ADC AH, 0 LOOP for2 CMP AH,DH JE var var: ADD DL,1 MOV d,DL DEC BX, 1 JNS for1 d db ? ret mass db 1,11,7,4,5,6,5,8,11,10 |
Сообщ.
#2
,
|
|
|
Цитата noob322 @ CMP AH,DH JE var var: Если условие выполняется, переходим на метку согласно инструкции. Если оно не выполняется - переходим на метку как следующий оператор. |
Сообщ.
#3
,
|
|
|
То есть?
|
Сообщ.
#4
,
|
|
|
То есть ход выполнения не зависит от результата сравнения.
|
Сообщ.
#5
,
|
|
|
А как сделать правильно,чтоб зависело?
|
Сообщ.
#6
,
|
|
|
Так, как тебе уже один раз говорили.
Применение логических инструкций (сообщение #3635041) |
Сообщ.
#7
,
|
|
|
Прост,я хотел попроще сделать..А там слишком сложно для меня
|
Сообщ.
#8
,
|
|
|
Нет там ничего сложного. Просто надо потратить немного времени и разобраться, как оно работает.
|
Сообщ.
#9
,
|
|
|
А вот данный код никак нельзя подправить?
|
Сообщ.
#10
,
|
|
|
Открой Эксель. В первую колонку помести код, назови её Код. Остальные колонки назови AX, AH, AL, BX, CX, DX, SI, CF. Дополнительно сделай колонку Стек. И "выполняй" код по одной команде, соотв. образом изменяя значения "регистров" (неизвестные/неопределённые чисти).
|
Сообщ.
#11
,
|
|
|
Вообщем я вас понял...
|
Сообщ.
#12
,
|
|
|
Цитата noob322 @ В CX у вас заносится 8, чтобы все биты проанализировать, но в цикле LOOP оно уменьшается, а потом (на новом байте для анализа) оно никак не восстанавливается! Т.е. надо записать так:Помогите найти ошибку for1: MOV CX,8 ... Добавлено Так же и с AH. Надо так: for1: MOV CX, 8 MOV AH, 0 ... Добавлено Ну и тот блок, на ко-й вам указал B.V. надо так поправить: CMP AH, DH ;кол-во бит совпало с искомым, с тремя? JNE var ;не совпало - неинтересный байт - прыгнем дальше ADD DL, 1 ; совпало - увеличим найденных байт на 1 var: |
Сообщ.
#13
,
|
|
|
Готов поспорить в методичке есть описание инструкций и примеры использования
Славян Цитата Ну и тот блок, на ко-й вам указал B.V. надо так поправить: Кто такой B.V.? |
Сообщ.
#14
,
|
|
|
Цитата sourceman @ Тьфу, прошу пардона, с Akina'ой попутал. Кто такой B.V.? |