|
|
  |
Как работать с парными регистрами? |
|
|
|
Jun 7 2006, 15:01
|

кекс
     
Группа: Свой
Сообщений: 3 825
Регистрация: 17-12-05
Из: Киев
Пользователь №: 12 326

|
Цитата(Potter @ Jun 7 2006, 17:52)  Работаю с мегой 16.... Пишу программу на асме. Существуют парные регистры YH,YL. Если в YL хранится значение 0xFF и к нему прибавить 0x1 занесется ли 0x1 в YH? нет. Цитата Если не занесется как вообще можно работать с двухбайтными числами если нужно прибавлять к двухбайтному числу и отнимать от него некоторые константы? Учитывать перенос.. add/adc (сложение) sub/sbc (вычитание) cp/cpc (сравнение) если константы небольшие (до 64) можно использовать команды adiw/sbiw
|
|
|
|
|
Jun 7 2006, 15:05
|
Частый гость
 
Группа: Свой
Сообщений: 185
Регистрация: 5-05-06
Из: Ekaterinburg, Russia
Пользователь №: 16 821

|
Цитата Если в YL хранится значение 0xFF и к нему прибавить 0x1 занесется ли 0x1 в YH? В зависимости от используемой команды. Если это вроде: Код ldi r16,1 add YL,r16 то нет, т.к. необходимо учитывать флаг переноса: Код ldi r16,1 clr r17 add YL,r16 adc YH,r17 можно еще и так: Код subi YL,low(-1) sbci YH,high(-1) а лучше так: Код adiw YL,1 только команда adiw (add immediate to word) работает не со всеми регистровыми парами (последние четыре)
--------------------
Чудес не бывает - бывает мало знаний и опыта!
|
|
|
|
|
Jun 7 2006, 15:06
|

Местный
  
Группа: Свой
Сообщений: 345
Регистрация: 10-10-05
Пользователь №: 9 459

|
Сложение двух пар регистров add r16,r18 adc r17,r19 Вычитание двух пар регистров sub r17,r18 sbc r16,r19 Соответственно с константой можно так clr r19 ldi r18,const sub r17,r18 sbc r16,r19
и так
clr r19 ldi r18,const add r16,r18 adc r17,r19
А так инкремент: subi zl,255 sbci zh,255 А так денкремент: subi zl,1 sbci zh,0 Вопросы есть? :-) удачи.
зы: чуток опоздал с ответом...уже опередили..:-)
--------------------
Если задачу можно решить, то не надо тревожиться. А если нельзя решить, то тревожиться бесполезно.
|
|
|
|
|
Jun 7 2006, 15:16
|

Частый гость
 
Группа: Участник
Сообщений: 151
Регистрация: 27-05-06
Из: Харьков
Пользователь №: 17 508

|
Цитата(defunct @ Jun 7 2006, 18:01)  Цитата(Potter @ Jun 7 2006, 17:52)  Работаю с мегой 16.... Пишу программу на асме. Существуют парные регистры YH,YL. Если в YL хранится значение 0xFF и к нему прибавить 0x1 занесется ли 0x1 в YH?
нет. Цитата Если не занесется как вообще можно работать с двухбайтными числами если нужно прибавлять к двухбайтному числу и отнимать от него некоторые константы? Учитывать перенос.. add/adc (сложение) sub/sbc (вычитание) cp/cpc (сравнение) Извените... незаметил остальных ответов щас поробую разобраться...
Сообщение отредактировал Potter - Jun 7 2006, 15:20
|
|
|
|
|
Jun 7 2006, 15:27
|

Частый гость
 
Группа: Участник
Сообщений: 151
Регистрация: 27-05-06
Из: Харьков
Пользователь №: 17 508

|
Цитата(add @ Jun 7 2006, 18:06)  clr r19 ldi r18,const add r16,r18 adc r17,r19 Допустим в r16 хранится значение 0xFF, в r17 0x00 а в r18 мы занесли 0x05 то после этих команд в r16 будет хранится значение 0x04 а в r17 0x01?
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|