Поиск:

Ответ в темуСоздание новой темы Создание опроса
> в байте поменять местами биты 
V
    Опции темы
DrWeb
Дата 12.1.2009, 19:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 78
Регистрация: 25.11.2007
Где: Украина, Донецк

Репутация: нет
Всего: 1



Подзадачка: в байте поменять первые и последние 4 бита местами
как это реализовать программно?

Просто я шарю ток в php и C++,а асм изучаю из-за нужды в сдаче экзамена smile  Поэтому пожалуйста помогите с задачкой - сам без понятия как это делать smile 

И еще вопросик: 
MOV cx, [BX + SX -2340] 
ADC ABC [BX+SI-35]
CMP PTR [BX+SI-13]
CMP DX,WORD PTR TVP[AD+DI+23h]
- что тут происходит в этих командах?

Помогите плиз

Это сообщение отредактировал(а) DrWeb - 12.1.2009, 20:40
PM MAIL WWW   Вверх
Akina
Дата 12.1.2009, 21:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: нет
Всего: 454



Код

mov al, somebyte ; байт суём в AL
xor ah, ah ; подготовка
shl ax, 4 ; сдвиг на 4 бита
or al, ah ; в AL требуемый результат



--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
Mikl_
Дата 13.1.2009, 12:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 537
Регистрация: 9.11.2007

Репутация: 6
Всего: 14



DrWeb, как поменять -- зеркально?
для обмена байтами в слове xchg al,ah (bl,bh или cl,ch или dl,dh)
для обмена байтов в 32-разрядном регистре bswp 
Код
mov eax,87654321h
bswap eax;eax=21436587h
Использование BSWAP с 16-разрядными регистрами дает неожиданные результаты
Код
mov eax,0AB120000h
bswap ax;eax = 0AB1212ABh
а твоя задача решается скорее так
Код
mov al,10101111b
ror al,4;al=11111010b можно и команду rol al,4 с тем же результатом



Это сообщение отредактировал(а) Mikl_ - 13.1.2009, 12:13
PM MAIL   Вверх
DrWeb
Дата 13.1.2009, 12:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 78
Регистрация: 25.11.2007
Где: Украина, Донецк

Репутация: нет
Всего: 1



Akina, Mikl_, спасибо
а вот к этим командам можете комменты поставить?
Код

MOV cx, [BX + SX -2340] 
ADC ABC [BX+SI-35]
CMP PTR [BX+SI-13]
CMP DX,WORD PTR TVP[AD+DI+23h]


а старший и младший байты это как?а полубайты?
PM MAIL WWW   Вверх
Akina
Дата 13.1.2009, 14:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: нет
Всего: 454



Цитата(DrWeb @  13.1.2009,  13:58 Найти цитируемый пост)
а вот к этим командам можете комменты поставить?

Запросто! Ко всем коммент один и тот же: Syntax Error.


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
DrWeb
Дата 13.1.2009, 14:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 78
Регистрация: 25.11.2007
Где: Украина, Донецк

Репутация: нет
Всего: 1



 smile ну мне такие вопросы скинули
Код

MOV cx, ptr [BX + SX -2340] 
ADC ABC, ptr [BX+SI-35]
CMP DX,WORD PTR [BX+DI+23h]

а так?

я так понимаю,что BX это базовый регистр, si - сегментный, а 2340 - это смещение?а разве можно писать -2340?

Это сообщение отредактировал(а) DrWeb - 13.1.2009, 14:26
PM MAIL WWW   Вверх
Mikl_
Дата 14.1.2009, 04:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 537
Регистрация: 9.11.2007

Репутация: 6
Всего: 14



DrWeb, 
MOV cx, ptr [BX + SX -2340] <-- две ошибки 1) SX - нет такого регистра, вероятно имеется в виду SI? 
2) ptr без указания размерности не ставится, должно быть WORD PTR но в данном случае указан регистр CX так что WORD PTR здесь избыточен
ADC ABC, ptr [BX+SI-35] <-- нельзя складывать память + память, можно пмять+регистр, регистр+регистр, память+число, регистр+число 
CMP DX,WORD PTR [BX+DI+23h] <-- в принципе допустимая инструкция, но без WORD PTR можно было обойтись
Цитата(DrWeb)
разве можно писать -2340
можно -- просто код будет заменен на MOV CX,[BX+SI+0F6DCh] 
так как -2340=0FFFFF6DCh
Либо ты совсем не открывал учебник, а учебники читать нужно читать вдумчиво и очень внимательно либо преподаватель проверяет вас на знание синтаксиса  smile 
Цитата
а старший и младший байты это как?а полубайты?
 ну точно в учебник не смотрел -- иди учи матчасть, не позорься smile 
старший байт младший байт
                   |               |
                  \|/             \|/
AX  =        AH      |    AL
старший полубайт младший полубайт
                       |                 |
                      \|/               \|/
AL = 85h=   1000   .   0101b

Это сообщение отредактировал(а) Mikl_ - 14.1.2009, 04:48
PM MAIL   Вверх
DrWeb
Дата 14.1.2009, 13:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 78
Регистрация: 25.11.2007
Где: Украина, Донецк

Репутация: нет
Всего: 1



Mikl_, спасибо за инфо.я сам вспомнил про все эти полубайты на экзамене и написал его.теперь буду в разделе красная книга вопросы задавать smile следующий экзамен по прологу и лиспу:-!
нет шоб преподавать нормальные языки: с++ и php - нет блин.фигню всякую преподают:(
PM MAIL WWW   Вверх
Mikl_
Дата 14.1.2009, 13:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 537
Регистрация: 9.11.2007

Репутация: 6
Всего: 14



DrWeb, нельзя всю жизнь читать одну и туже книгу, даже если это книга "Библия". Учи больше разных языков -- в каждом своя прелесть, тогда и на С/С++/C# и на php посмотришь другими глазами  smile 
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Asm: Общие вопросы"
MAKCim
  • Проставьте несколько ключевых слов темы, чтобы её можно было легче найти.
  • Не забывайте пользоваться кнопкой КОД.
  • Телепатов на форуме нет! Задавайте чёткий, конкретный и полный вопрос. Указывайте полностью ошибки компилятора и компоновщика.
  • Новое сообщение должно иметь прямое отношение к разделу форума. Флуд, флейм, оффтопик запрещены.
  • Категорически запрещается обсуждение вареза, "кряков", взлома программ и т.д.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, MAKCim.

 
 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Asm: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0500 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.