![]() |
|
![]() ![]() ![]() |
|
1VITOLD1 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 5 Регистрация: 23.12.2008 Репутация: нет Всего: нет |
Помогите сделать процедуру SHR1(var M1;len,count: word), где М1-большое целое положительное число (байтовый масив длинной len), count - количество розрядов сдвига. Которая реализовала бы операцыю линейного сдвига вправо на количество двоичных розрядов, что задана параметром count .При этом теряеться count младшых розрядов, а в count старшых розрядов заноситься 0. При роботе должны использоваться команды для 32-розрядных даных. Если значение len не кратно 4, то при необходимости для последних байт использовать команды для 8-розрядных даных.
Заранее благодарен ) Это сообщение отредактировал(а) 1VITOLD1 - 24.12.2008, 10:32 |
|||
|
||||
Mikl_ |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 537 Регистрация: 9.11.2007 Репутация: 8 Всего: 14 |
1VITOLD1, Для получения ответа обязательно укажи название своего ВУЗа и факультета -- это мне необходимо для статистики
судя по оформлению процедуры SHR1(var M1;len,count: word), это должна быть процедура для Паскаля с ассемблерной вставкой или это "чистый" ассемблер? Если целиком на ассемблере, то на каком MASM, TASM, NASM, YASM, A86? Не пойму "зсув" это по-белорусски "сдвиг"? |
|||
|
||||
1VITOLD1 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 5 Регистрация: 23.12.2008 Репутация: нет Всего: нет |
Здесь процедура для Паскаля с ассемблерной вставкой ...Используем транслятор MASM..
ВДТУ факультет информатики.. заранее спасибо за помощь. Это сообщение отредактировал(а) 1VITOLD1 - 24.12.2008, 10:55 |
|||
|
||||
Mikl_ |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 537 Регистрация: 9.11.2007 Репутация: 8 Всего: 14 |
1VITOLD1,
Это сообщение отредактировал(а) Mikl_ - 25.12.2008, 13:38 |
|||
|
||||
1VITOLD1 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 5 Регистрация: 23.12.2008 Репутация: нет Всего: нет |
Mikl_, Спасибо большое..
а вот не подскажите как можно переделать процедуру,(делает сдвиг влево ) под анологичную..но что бы сдвигала число вправо вот есть КОД процедуры со сдвигом влево
заранее СПАСИБО.. |
|||
|
||||
Mikl_ |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 537 Регистрация: 9.11.2007 Репутация: 8 Всего: 14 |
1VITOLD1, в двух словах -- меняешь rol на ror и двигаешься не от конца массива, а от его начала и, соответственно, меняешь dec si, dec di на inc si, inc di
для сдвига сразу 8 байт под .386 можно использовать shrd / shld
![]() Это сообщение отредактировал(а) Mikl_ - 27.12.2008, 08:43 |
|||
|
||||
1VITOLD1 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 5 Регистрация: 23.12.2008 Репутация: нет Всего: нет |
Mikl_, Винницкий государственный технический университет
..я понимаю что с начала надо двигаться.....Но не получаеться.. коректно реализовать что бы указатель был вначале и исполнялись переходы( |
|||
|
||||
Mikl_ |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 537 Регистрация: 9.11.2007 Репутация: 8 Всего: 14 |
1VITOLD1, А мой-то вариант чем был плох? он и короче и понятнее
![]()
lds si, @mas ;грузим сегмент в ds, а смещение в si<-- si указывает на начало массива mov bx, @len <-- в bx длину массива mov di, bx ;di = len dec di ; len - 1 add di, si ; адрес последнего элемента в массиве <-- di указывает на предпоследний элемент массива тебе нужно просто mov di,si <-- di указывает на начало массива и везде где у тебя dec di пиши inc di а вместо sub di,4 ;следующие 4 байта пишешь add di,4 ![]() |
|||
|
||||
1VITOLD1 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 5 Регистрация: 23.12.2008 Репутация: нет Всего: нет |
Спасибо...
|
|||
|
||||
![]() ![]() ![]() |
Правила форума "Asm для начинающих" | |
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, MAKCim. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Asm для начинающих | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |