Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Вопрос по ассемблеру...
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > Все остальные микроконтроллеры
amoralex
Есть код:

Код
start:  
  mov curr_byte1, P1
 mov curr_byte2, P2
make_xor:                
 mov A, prev_byte2
 xrl A, curr_byte2
 mov rez_byte2, A
 mov A, prev_byte1
 xrl A, curr_byte1
 mov rez_byte1, A


В связи с особенностью задачи, rez_byte 1 и 2 должны обрабатываться побитно, но в конструкции mov rez_byte1, A - rez_byte должен быть объявлен в области DATA. А как сделать чтобы он был доступен еще и через битовую область?! Я вот не понимаю...

Заранее спасибо!
vvs157
Цитата(amoralex @ May 19 2005, 12:38)
Есть код:

Код
start:  
  mov curr_byte1, P1
 mov curr_byte2, P2
make_xor:                
 mov A, prev_byte2
 xrl A, curr_byte2
 mov rez_byte2, A
 mov A, prev_byte1
 xrl A, curr_byte1
 mov rez_byte1, A


В связи с особенностью задачи, rez_byte 1 и 2 должны обрабатываться побитно,  но в конструкции mov rez_byte1, A - rez_byte должен быть объявлен в области DATA. А как сделать чтобы он был доступен еще и через битовую область?! Я вот не понимаю...

Заранее спасибо!
*


По-видимому имеется ввиду 51 МК. Если это так достаточно разместить rez_byte1 и 2 в той области DATA, которая совпадает с битовой областью, например

DSEG AT 10H
rez_byte1 DS 1
rez_byte2 DS 1
;
FLAG_AREA BIT rez_byte1.0
;
BSEG AT FLAG_AREA
bit_flag1 DBIT 1
bit_flag2 DBIT 1
;
;
amoralex
Спасибо, попробую!
Krom
Цитата(vvs157 @ May 19 2005, 18:51)
Цитата(amoralex @ May 19 2005, 12:38)
Есть код:

Код
start:  
  mov curr_byte1, P1
 mov curr_byte2, P2
make_xor:                
 mov A, prev_byte2
 xrl A, curr_byte2
 mov rez_byte2, A
 mov A, prev_byte1
 xrl A, curr_byte1
 mov rez_byte1, A


В связи с особенностью задачи, rez_byte 1 и 2 должны обрабатываться побитно,  но в конструкции mov rez_byte1, A - rez_byte должен быть объявлен в области DATA. А как сделать чтобы он был доступен еще и через битовую область?! Я вот не понимаю...

Заранее спасибо!
*


По-видимому имеется ввиду 51 МК. Если это так достаточно разместить rez_byte1 и 2 в той области DATA, которая совпадает с битовой областью, например

DSEG AT 10H
rez_byte1 DS 1
rez_byte2 DS 1
;
FLAG_AREA BIT rez_byte1.0
;
BSEG AT FLAG_AREA
bit_flag1 DBIT 1
bit_flag2 DBIT 1
;
;
*



Повнимательнее надо, человек и так запутался. Побитово-адресуемая область 20H - 2Fh, следовательно DSEG AT 20H (или в пределах 20H-2EH). Биты можно обьявить и так, как приведено, а можно и такЖ

res2_bit_7 bit rez_byte2.7
res2_bit_6 bit rez_byte2.6
....
res2_bit_0 bit rez_byte2.0

Кому как больше нравиться. Мне нравиться так, чтобы не путаться со старший-младший.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.