Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 18.10.2012, 09:37   #11
Eshik v tumane
Пользователь
 
Регистрация: 14.10.2012
Сообщений: 10
По умолчанию

Мне сказали, чт помимо логического умножения необходимо делать побайтовый сдвиг. Вот написал код
Код:
.include "m16def.inc"

ldi R16, high(RAMEND)
out SPH, R16
ldi R16, low(RAMEND)
out SPL, R16

ldi R18, high(0x030)
ldi R17, low(0x030)

Call EEPROM_read
M0:
ldi R19, 0x0F ; записываем 0F в R19

OR R16, R19 ; складываем значения в регистрах
MOV R22, R16

M3: ldi R21, 0xFF

LSR R22 ; побайтовый сдвиг вправо
AND R21, R22 ; логическое умножение на 1
OR R23, R21 ; логическое умножение результатов
BRCS M3
brne M0
breq M1

M1:
ldi R18, high(0x080)
ldi R17, low(0x080)
Call EEPROM_write


end: rjmp end
Но программа не выходит на метку 1. Не подскажете ошибку?
Eshik v tumane вне форума Ответить с цитированием
Старый 18.10.2012, 13:19   #12
Step_UA
Форумчанин
 
Аватар для Step_UA
 
Регистрация: 09.06.2011
Сообщений: 388
По умолчанию

Код:
Call EEPROM_read ; чтение 
ORI R16, 0x0F ; логическое сложение регистра R16 с 0x0F
; подсчет количества установленных бит
MOV R20,0   ; количество установленных бит
MOV R21,8   ; количество бит
MOV R22, R16 ; значение
loop:
LSR R22      ; логический сдвиг вправо, младший бит в флаг переноса
BRCC noOne ; перейти если флаг переноса =0
INC R20     ; иначе увеличить количество установленных бит на 1
noOne:
DEC R21   ; уменьшить количество оставшихся бит на 1
BRNE loop ; если не ноль в предыдущей операции тогда перейти на метку
дальше проверяйте на четность значение регистра R20. Если младший бит регистра =0 => значение четное.
на неконкретные вопросы даю неконкретные ответы ...
Step_UA вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сосчитать количество единиц в двоичной записи числа i (c++) Роза!!! Помощь студентам 2 16.04.2016 22:14
Проверка числа на чётность (Assembler) Марик73 Помощь студентам 6 30.05.2012 12:22
Задана последовательность чисел в формате:сначала количество цифр в числе, потом - цифры числа. Подсчитать количество. Arn1 Помощь студентам 4 03.10.2011 20:03
Ошибка. НЕ МОГУ ВСТАВИТЬ столбец В ЗАДАЧУ КОТОРАЯ ВЫВЕДЕТ СТОЛБЕЦ ИЗ ЕДИНИЦ ПОСЛЕ ЧИСЛА к. Диас_ Паскаль, Turbo Pascal, PascalABC.NET 1 14.06.2011 18:49
Assembler (массив, разм-ю 9 байт, проверка наличия 3х единиц в коде эл-та) Exelence Помощь студентам 1 05.12.2010 20:05