Знатокам С (Keil), что можете сказать
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)

миниатюрный аудио-видеорекордер mAVR

Отправлено RadiM 30 октября 2003 г. 09:35

Вот что было:
Send_uart.Buf[Send_uart.TileBuf++] = Byte;

То есть, я хотел чтобы сначала присвоился байт (Byte), а потом инкрементировался индекс (TileBuf).
При отладке все получается верно, байт записывается по текущему индексу,
а потом производится декремент (все верно для этого и стоит постинкремент).

Но вот что получилось:

MOV R0,#Send_uart(0x7E)
MOV A,@R0
MOV R0,A
MOV A,R0
PUSH ACC(0xE0)
MOV R0,#P0(0x80)
MOV A,@R0
INC @R0
MOV R6,A
POP ACC(0xE0)
MOV R0,A
MOV A,R0
ADD A,R6
MOV R0,A
MOV A,R7
MOV @R0,A

по сути, сначала производится инкремент индекса, а потом,
хотя и по старому значению индекса, присваивание. Правильно ли это?

Меня спасает следующая конструкция:

Send_uart.Buf[Send_uart.TileBuf] = Byte;
Send_uart.TileBuf++;

Составить ответ  |||  Конференция  |||  Архив

Ответы



Перейти к списку ответов  |||  Конференция  |||  Архив  |||  Главная страница  |||  Содержание  |||  Без кадра

E-mail: info@telesys.ru