реклама на сайте
подробности

 
 
> Дальний переход в atmega128, обсуждение кто как !
cpl
сообщение Dec 20 2006, 20:18
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 378
Регистрация: 6-12-04
Пользователь №: 1 340



Привет
(Пишу на асме)
понадобилось мне прыгнуть на адресс за предел начала BOOT сектора (адресс 0xff00),
с ходу пишу:

jmp 0xff00 при этом транслятор создает нормальный нех файл,
а в окне отладчика после програмирывания кристала и перехода в режим дизасемблера:

127: jmp RESET0 ;reset handle
+00000000: F786 BRTC PC-0x0F Branch if T flag cleared
+00000001: 796B ANDI R22,0x9B Logical AND with immediate
129: jmp EXT_INT0
+00000002: E682 LDI R24,0x62 Load immediate
+00000003: EEFD LDI R31,0xED Load immediate
131: jmp EXT_INT1
+00000004: 2BB6 OR R27,R22 Logical OR
+00000005: DFA7 RCALL PC-0x0058 Relative call subroutine
133: reti
+00000006: 99AE SBIC 0x15,6 Skip if bit in I/O register cleared
---- No Source ------------------------------------------------------------------------------------
+00000007: CDB7 RJMP PC-0x0248 Relative jump

стартовые адресса не соотвествуют истене, как только стоит убрать JMP и все становится на место:

127: jmp RESET0;RESETb ;reset handle
+00000000: 940C195C JMP 0x0000195C Jump
129: jmp EXT_INT0
+00000002: 940C0066 JMP 0x00000066 Jump
131: jmp EXT_INT1
+00000004: 940C0070 JMP 0x00000070 Jump
133: reti
+00000006: 9518 RETI Interrupt return
---- No Source ------------------------------------------------------------------------------------
+00000007: FFFF ??? Data or unknown opcode
---- l.asm ---------------------------------------------------------------------------
135: reti
+00000008: 9518 RETI Interrupt return
---- No Source ------------------------------------------------------------------------------------
+00000009: FFFF ??? Data or unknown opcode
---- l.asm ---------------------------------------------------------------------------
137: reti
+0000000A: 9518 RETI Interrupt return
---- No Source ------------------------------------------------------------------------------------
+0000000B: FFFF ??? Data or unknown opcode
---- l.asm ---------------------------------------------------------------------------
139: reti
+0000000C: 9518 RETI

пишу перед джампом или call или icall

ldi r16,(1<<rampz0)
out rampz,r16

и все прекрасно код получается нормальный рабочий. w00t.gif cranky.gif

если делать jmp 0xf000;boot
все нормально, стоит указать адресс дальше боота начинается ерунда с кодом.
В симуляторе всегда код получается правильный !

кто как далает длинные переходы ?
и если данному факту объяснение, почему переколбашивается код ? twak.gif wacko.gif
1111493779.gif
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 21st July 2025 - 03:57
Рейтинг@Mail.ru


Страница сгенерированна за 0.01317 секунд с 7
ELECTRONIX ©2004-2016