![]() |
|
|
![]()
|
|
| klyxa |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 110 Регистрация: 13.8.2006 Репутация: нет Всего: нет |
Народ. Объясните плиз пример этот
Мне вот не понятно почему 0025h после сдвига влево на 4 разряда стало 0250h поидее вабще 0000, т.к. там замещяется нулями разряды,но 0025 и конечное 0000 как то не вяжется..объясните пожалуйста - как там происходит сдвиг. И еще вот сие and ax,3f3fh ; and ипользуется для логического умножения 2ух операндов..т.е. 0225*(логичски)3f3f... Ааа, мб это типа в 2оичной сситеме умножение происходит?=) А то так посмотришь,что то никак не выходит 1 или 0 0000 0010 0010 0101 * 0011 1111 0011 1111 __________________ 0000 0100 0010 0101 т.о. "0425" ...омг..у меня чё то не то вышло. поправте плиз. а то я не особо еще с асмой сдружился |
|||
|
||||
| DigitSphinx |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 442 Регистрация: 28.4.2007 Где: Москва Репутация: нет Всего: 3 |
2^4=16
Т.е. ты умножаешь на 16 поэтому и сдвиг на 1 разряд !
0000 0010 0010 0101 * 0011 1111 0011 1111 __________________ 0000 0010 0010 0101 Нет ответ будет 0225 т.е. 1000100101 на калькуляторе проверь У тебя нолик лишний ! |
|||
|
||||
| klyxa |
|
||||||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 110 Регистрация: 13.8.2006 Репутация: нет Всего: нет |
"2^4=16
Т.е. ты умножаешь на 16 поэтому и сдвиг на 1 разряд !" т.е.
4 - это степень в которую надо возвести 2?..а почему если 16,то на 1 разряд? вот ще пример
7 - 0111 shr - сдвиг побитово вправо,т.е. 0011,т.е. 3 А вот с первым примером какаято херь невнятная. ЛАдно бы там rol был. Еще всё доступно,но вот чтобы в степеь и далее..Объясни плиз,как ты так лихо? "Нет ответ будет 0225 т.е. 1000100101 на калькуляторе проверь У тебя нолик лишний !" А зачем тогда мы делали
Если получилось то, что было. Или тут тоже какойто скрытый смысел?сори за тупость,если таковая присутствует.Но..хочу всё знать!=) |
||||||
|
|||||||
| DigitSphinx |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 442 Регистрация: 28.4.2007 Где: Москва Репутация: нет Всего: 3 |
Я сам тока начал изучать asm !
На счет shl я не уверен , действительно хрень ! На счет “&” логического И: Операция не имеет отношение к умножению ! Называется Конъюнкция, у логических операторов есть таблицы истинности , у логического И A | B | A&B 0 0 0 0 1 0 1 0 0 1 1 1 Т.е. только когда оба операнда положительны то и результат положительный 0000 0010 0010 0101 * 0011 1111 0011 1111 __________________ 0000 0010 0010 0101 Другой пример 0000 0010 0010 0101 * 0011 1101 0011 1011 __________________ 0000 0000 0010 0001 Добавлено через 11 минут и 17 секунд Да кстати с shl и shr вроде логично 25h = 37d = 100101b Сдвигаем 100101 на 4 разряда влево получаем 1001010000 1001010000b = 592d = 250h 7h = 7d = 0111b Сдвигаем на разряд вправо получаем 011,1 = 3,5d = 3.8h Но единичка после запятой откидывается и получаем 011 = 3d =3h Добавлено через 14 минут и 10 секунд Короче все сдвиги в 2-ой системе счисления ! Это сообщение отредактировал(а) DigitSphinx - 5.6.2007, 14:45 |
|||
|
||||
| klyxa |
|
||||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 110 Регистрация: 13.8.2006 Репутация: нет Всего: нет |
"Команда and используется для логического умножения двух операндов. Результат операции помещается по адресу первого операнда. Эту команду удобно использовать для принудительной установки или сброса определенных битов операнда. "
Ну не суть..меня интересует когда они получали символ нажатой клавиши(или что там) с помощью
Мы же вроде считали сейчас. получалось 0225,но уж никак не 3235h. Меня вот сие интерисует.и srl тоже=) |
||||
|
|||||
| DigitSphinx |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 442 Регистрация: 28.4.2007 Где: Москва Репутация: нет Всего: 3 |
Номера битов с права на лево ! Еще раз : я полный нуб по asm’у ! Я отвечал на вопрос по мат. Логике ! Добавлено @ 15:15 Кстати если разбираешся в asm’е ответь на мой вопрос Тема называется “В асме 1-ый раз , что не так с выводом, Не могу вывести строку !” Она вторая после твоей Это сообщение отредактировал(а) DigitSphinx - 5.6.2007, 15:25 |
|||
|
||||
| dumb |
|
||||
![]() sceloglauxalbifacies ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2929 Регистрация: 16.6.2006 Репутация: 4 Всего: 158 |
откуда читата? а. нашел. Юров. короче, Витя Юров - тоже человек, и ему тоже(как и всем другим человекам) свойственно ошибаться... для "принудительной установки" определенных битов команда and использоваться не может, и это очевидно. для "принудительной установки" используется команда or. причем, похоже, это не опечатка, а именно ошибка, так как пример использования написан с описанной "корявой" логикой.
а теперь внимание, правильный ответ:
|
||||
|
|||||
| klyxa |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 110 Регистрация: 13.8.2006 Репутация: нет Всего: нет |
";ax=3235h ax=0225, обидно, да? smile"
алилуя!!! спасибо большое =)) |
|||
|
||||
| Mikl__ |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 30 Регистрация: 18.5.2007 Репутация: 1 Всего: 1 |
Может быть я смогу объяснить понятнее
_BCD db 25h ;упакованное BCD-число необходимо превратить в код '25' коды чисел ASCII '0'- 30h '1'-31h ... '8' - 38h '9'-39h чтобы преобразовать упакованное число 0025h цифры необходимо раздвинуть 0205h, а затем сложить с 3030h тогда мы получим 3235h или код '25' mov ah,u_BCD;ax=25XX shr ax,4 ;ax=025X после этого должно быть shr al,4 ;ax=0205 ;преобразование в символьное представление: add ax,3030h ;ax=3235h mov s_ch,ax Это сообщение отредактировал(а) Mikl__ - 9.6.2007, 06:05 |
|||
|
||||
![]()
|
| Правила форума "Asm: Общие вопросы" | |
|
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, MAKCim. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Asm: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |