| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Микроконтроллеры (MCU) и микропроцессоры (MPU) > Инкремент адреса AVR asm |
| Автор: pettimm 5.12.2014, 15:20 |
| Привет всем! Возник вопрос по AVR asm: "Можно ли как то инкрементировать адрес в команде LDS temp,$0060 ?? или какой другой вариант этого решения? Это нужно например когда нужно считать сто ячеек, что бы не писать сто строчек с камандой LDS. Спасибо. |
| Автор: Romikgy 5.12.2014, 15:25 | ||
|
| Автор: pettimm 5.12.2014, 16:10 |
| 1.Тут понятно: ldi r30,$60 ; Set Z low byte to $60 2.тут: загружаем в r0 из Z с инкрементом ld r0,Z+ ; Load r0 with data space loc. $60(Z post inc) зачем загружаем в r0 ? нельзя сразу инкрементировать Z ? и сразу закинуть из Z в R1& 3.Тут: Мы закидываем информацию в R1 по адресу что в регистре Z ??? ld r1,Z ; Load r1 with data space loc. $61 |
| Автор: Romikgy 5.12.2014, 17:43 |
а для чего тогда вообще читать? можно да |
| Автор: pettimm 5.12.2014, 19:03 |
| ну я имел ввиду зачем использовать два регистра для чтения но инкрементировать z можно только так?: ld r0,Z+ если нас интересует инфа только с адреса $60 то так думаю будет нормально: ldi r30,$59 ; Set Z low byte to $59 metka: ld r0,Z+; тут интересует только инкремент Z ld r1,Z ; а тут сразу читаем с нужного начального адреса$60 ;и только в один нужный регистр. rjmp metka; и читаем ячейки дальше по адресам |
| Автор: Romikgy 5.12.2014, 20:41 |
| это пример! а не решение вашей задачи!!! |
| Автор: pettimm 9.12.2014, 15:05 |
| Да я понял, спасибо...) |