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

 
 
> Вопрос по ассемблеру..., Непонятки с битовой областью...
amoralex
сообщение May 19 2005, 09:38
Сообщение #1


Участник
*

Группа: Новичок
Сообщений: 25
Регистрация: 21-04-05
Пользователь №: 4 363



Есть код:

Код
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. А как сделать чтобы он был доступен еще и через битовую область?! Я вот не понимаю...

Заранее спасибо!
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов (1 - 3)
vvs157
сообщение May 19 2005, 15:51
Сообщение #2


Профессионал
*****

Группа: Свой
Сообщений: 1 526
Регистрация: 8-04-05
Пользователь №: 3 960



Цитата(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
;
;
Go to the top of the page
 
+Quote Post
amoralex
сообщение May 19 2005, 18:48
Сообщение #3


Участник
*

Группа: Новичок
Сообщений: 25
Регистрация: 21-04-05
Пользователь №: 4 363



Спасибо, попробую!
Go to the top of the page
 
+Quote Post
Krom
сообщение Jul 5 2005, 12:20
Сообщение #4


Частый гость
**

Группа: Свой
Сообщений: 107
Регистрация: 27-06-05
Из: Россия
Пользователь №: 6 324



Цитата(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

Кому как больше нравиться. Мне нравиться так, чтобы не путаться со старший-младший.
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 19th July 2025 - 01:48
Рейтинг@Mail.ru


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