K
kimjin
Guest
Ik wil programma flash met behulp van C, en de code als volgt:
void flash_write (unsigned int * pa, unsigned int pd);
void rechter (unsigned int * pa)
void main (void)
(
/**************
oorspronkelijke routine
**************/
while (1)
(
flash_write ((unsigned int *) 0x8000, 0x5555);
)
)
void flash_write (unsigned int * pa, unsigned int pd)
(
* (vluchtige unsigned *) 0xd555 = 0xAA;
* (vluchtige unsigned *) 0xaaaa = 0x55;
* (vluchtige unsigned *) 0xd555 = 0xa0;
* PA = PD;
rechter (pa);
return;
)
void rechter (unsigned int * pa)
(
unsigned int temp_1, temp_2;
doen
(
temp_1 = (* per jaar);
temp_2 = (* per jaar);
temp_1 = temp_1 & 0x40;
temp_2 = temp_2 & 0x40;
) while (temp_1! = temp_2);
return;
)
maar het resultaat is verkeerd, ik 'n wonder dat mijn aanwijzer gebruikt, is recht of niet, ik ben verward met de aanwijzer.
3xToegevoegd na 16 minuten:deassembly de code als volgt:
0000:0449 belangrijkste
0000:0449 EEFD FRAME -3
; eerste routine
0000:045 B 7600 ST # 5555h, 0h; tweede parameter in 0u
0000:045 D F6B8 RSBX SXM
0000:045 E F274 CALLD flash_write
0000:0460 F020 LD # 8000h, 0, A, eerste parameter in A
0000:0462 F073 B L1
0000:0464 flash_write
0000:0464 4A11 PSHM 11u
0000:0465 EEFE FRAME -2
0000:0466 F495 NOP
0000:0467 8000 STL A, 0h, het lijkt verkeerd A tot 0u,
0000:0468 7711 STM 0d555h, 11h
0000:046 A 7681 ST # 0aah, * AR1
0000:046 C 7711 0aaaah STM, 11h
0000:046 E 7681 ST # 55H, * AR1
0000:0470 7711 STM 0d555h, 11h
0000:0472 7681 ST # 0a0h, * AR1
0000:0474 1004 LD 4h, A; neemt u de tweede parameter van 04u, verkeerde positie
0000:0475 7100 MVDK 0h, 11h
0000:0477 8081 STL A, * AR1
0000:0478 1000 LD 0u, A
0000:0479 F074 CALL rechter
0000:047 B EE02 frame 2
0000:047 C 8A11 POP 11u
0000:047 D FC00 RET
0000:047 E rechter
0000:047 E 4A11 PSHM 11u
0000:047 F EEFD FRAME -3
0000:0480 F495 NOP
0000:0481 8000 STL A, 0h
0000:0482 L2
0000:0482 7100 MVDK 0h, 11h
0000:0484 1081 LD * AR1, A
0000:0485 8001 STL A, 1h
0000:0486 1081 LD * AR1, A
0000:0487 8002 STL A, 2h
0000:0488 6801 en M. 40h, 1h
0000:048 A 6802 en M. 40h, 2h
0000:048 C 1001 LD 1h, A
0000:048 D 0802 SUB 2h, A
0000:048 E F844 BC L2, ANEQ
0000:0490 EE03 frame 3
0000:0491 8A11 POP 11u
0000:0492 FC00 RET
Wat is er met mijn programma, wie kan mij helpen?
bedankt
void flash_write (unsigned int * pa, unsigned int pd);
void rechter (unsigned int * pa)
void main (void)
(
/**************
oorspronkelijke routine
**************/
while (1)
(
flash_write ((unsigned int *) 0x8000, 0x5555);
)
)
void flash_write (unsigned int * pa, unsigned int pd)
(
* (vluchtige unsigned *) 0xd555 = 0xAA;
* (vluchtige unsigned *) 0xaaaa = 0x55;
* (vluchtige unsigned *) 0xd555 = 0xa0;
* PA = PD;
rechter (pa);
return;
)
void rechter (unsigned int * pa)
(
unsigned int temp_1, temp_2;
doen
(
temp_1 = (* per jaar);
temp_2 = (* per jaar);
temp_1 = temp_1 & 0x40;
temp_2 = temp_2 & 0x40;
) while (temp_1! = temp_2);
return;
)
maar het resultaat is verkeerd, ik 'n wonder dat mijn aanwijzer gebruikt, is recht of niet, ik ben verward met de aanwijzer.
3xToegevoegd na 16 minuten:deassembly de code als volgt:
0000:0449 belangrijkste
0000:0449 EEFD FRAME -3
; eerste routine
0000:045 B 7600 ST # 5555h, 0h; tweede parameter in 0u
0000:045 D F6B8 RSBX SXM
0000:045 E F274 CALLD flash_write
0000:0460 F020 LD # 8000h, 0, A, eerste parameter in A
0000:0462 F073 B L1
0000:0464 flash_write
0000:0464 4A11 PSHM 11u
0000:0465 EEFE FRAME -2
0000:0466 F495 NOP
0000:0467 8000 STL A, 0h, het lijkt verkeerd A tot 0u,
0000:0468 7711 STM 0d555h, 11h
0000:046 A 7681 ST # 0aah, * AR1
0000:046 C 7711 0aaaah STM, 11h
0000:046 E 7681 ST # 55H, * AR1
0000:0470 7711 STM 0d555h, 11h
0000:0472 7681 ST # 0a0h, * AR1
0000:0474 1004 LD 4h, A; neemt u de tweede parameter van 04u, verkeerde positie
0000:0475 7100 MVDK 0h, 11h
0000:0477 8081 STL A, * AR1
0000:0478 1000 LD 0u, A
0000:0479 F074 CALL rechter
0000:047 B EE02 frame 2
0000:047 C 8A11 POP 11u
0000:047 D FC00 RET
0000:047 E rechter
0000:047 E 4A11 PSHM 11u
0000:047 F EEFD FRAME -3
0000:0480 F495 NOP
0000:0481 8000 STL A, 0h
0000:0482 L2
0000:0482 7100 MVDK 0h, 11h
0000:0484 1081 LD * AR1, A
0000:0485 8001 STL A, 1h
0000:0486 1081 LD * AR1, A
0000:0487 8002 STL A, 2h
0000:0488 6801 en M. 40h, 1h
0000:048 A 6802 en M. 40h, 2h
0000:048 C 1001 LD 1h, A
0000:048 D 0802 SUB 2h, A
0000:048 E F844 BC L2, ANEQ
0000:0490 EE03 frame 3
0000:0491 8A11 POP 11u
0000:0492 FC00 RET
Wat is er met mijn programma, wie kan mij helpen?
bedankt