Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

Ассемблер? Это просто! Учимся программировать


РАССЫЛКИ ПОРТАЛА RUSFAQ.RU

/ КОМПЬЮТЕРЫ И ПО / Языки программирования / Assembler (Ассемблер)

Выпуск № 742
от 06.05.2007, 13:05

Администратор:Калашников О.А.
В рассылке:Подписчиков: 384, Экспертов: 31
В номере:Вопросов: 1, Ответов: 4


Вопрос № 84846: Допустим имеется некоторая переменная Х (1 байт). Как побитно присвоить ей значение. Н-р: Биты: 1 2 3 4 5 6 7 8 Значение: 0 0 1 1 0 0 0 0 Заранее спасибо....

Вопрос № 84.846
Допустим имеется некоторая переменная Х (1 байт). Как побитно присвоить ей значение. Н-р:
Биты: 1 2 3 4 5 6 7 8
Значение: 0 0 1 1 0 0 0 0
Заранее спасибо.
Отправлен: 30.04.2007, 17:18
Вопрос задал: psevdo (статус: 1-ый класс)
Всего ответов: 4
Мини-форум вопроса >>> (сообщений: 1)

Отвечает: IceWolf
Здравствуйте, psevdo!
Ну для начала-биты располагаются так:старший->младший и нумеруются с нуля т.е.
7 6 5 4 3 2 1 0.
Далее (для ясности считаем, что наш байт находится в AL-для удобства) нам нужно установить значения конкретных бит, для этого будем использовать команды двоичной логики AND dest, src (И) и OR dest, src (или)-их таблицы истинности в приложении.
Для установки бита в "1" нужно над ним провести операцию "OR 1", а для установки в "0"-"AND 0".
Далее получаем число 00110000, независимо от того, что было в AL до этого:
or al, 00110000b ;установка 4 и 5 битов
and al, 00110000b ;сброс 0, 1, 2, 3, 6, 7 битов
Заметим что операции OR 0 и AND 1 не меняют значения бита-приемника(dest).
Удачи!

Приложение:

---------
Идеальных защит не существует, ибо то, что создано человеческим разумом, им же будет и разрушено!

Ответ отправил: IceWolf (статус: 7-ой класс)
Ответ отправлен: 30.04.2007, 18:54

Отвечает: Зенченко Константин Николаевич
Здравствуйте, psevdo!

MOV cx,8;8-bit
XOR al,al;сбрасываем al
M1:
;следующие команды нужны для манипуляций с флагом CF
;STC устанавливаем флаг CF в единицу
;CLC сбрасываем флаг CF в ноль
;CMC инвертируем флаг CF
;следующие две команды делают одно и тоже
;сдвигают al на один бит влево и добавляем флаг CF в бит 0
ADC al,al;выполняется за 3 такта на 8087
;или
RCL al,1;выполняется за 2 такта на 8087
LOOP M1;повторяем 8 раз
Будут вопросы пишите.
Удачи!
---------
И только наступив на грабли мы преобретаем драгоценный опыт!
Ответ отправил: Зенченко Константин Николаевич (статус: Студент)
Ответ отправлен: 30.04.2007, 19:07

Отвечает: Sov
Здравствуйте, psevdo!
кажется так
mov al,00110000b
mov x,al
Ответ отправил: Sov (статус: 2-ой класс)
Ответ отправлен: 30.04.2007, 20:56

Отвечает: An42
Здравствуйте, psevdo!
Строим таблицу
tabl1 db 0,'0000'
db 1,'0001'
db 2,'0010'
db 3,'0011'
db 4,'0100'
db 5,'0101'
db 6,'0110'
db 7,'0111'
db 8,'1000'
db 9,'1001'
db 0Ah,'1010'
db 0Bh,'1011'
db 0Ch,'1100'
db 0Dh,'1101'
db 0Eh,'1110'
db 0Fh,'1111'
любое шестн.число можно представить виде двоичной тетрады
пример: 27h, 2 имеет представление 0010, а 7 имеет представление 0111
соединяем и получаем 00100111
На этом и построена программа
Удачи

Приложение:

Ответ отправил: An42 (статус: 2-ой класс)
Ответ отправлен: 02.05.2007, 15:51


Отправить вопрос экспертам этой рассылки

Приложение (если необходимо):

* Код программы, выдержки из закона и т.п. дополнение к вопросу.
Эта информация будет отображена в аналогичном окне как есть.

Обратите внимание!
Вопрос будет отправлен всем экспертам данной рассылки!

Для того, чтобы отправить вопрос выбранным экспертам этой рассылки или
экспертам другой рассылки портала RusFAQ.ru, зайдите непосредственно на RusFAQ.ru.


Форма НЕ работает в почтовых программах The BAT! и MS Outlook (кроме версии 2003+)!
Чтобы отправить вопрос, откройте это письмо в браузере или зайдите на сайт RusFAQ.ru.


© 2001-2007, Портал RusFAQ.ru, Россия, Москва.
Авторское право: ООО "Мастер-Эксперт Про"
Email: support@rusfaq.ru, тел.: +7 (926) 535-23-31
Хостинг: "Московский хостер"
Поддержка: "Московский дизайнер"
Авторские права | Реклама на портале
Версия системы: 4.52 (beta) от 02.05.2007
Яндекс Rambler's Top100

В избранное