Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Что делает этот код? need comments 
:(
    Опции темы
kindDevil
Дата 24.9.2006, 20:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



через паскаль
procedure x(var k1:byte;var r:byte);
 var k:byte;re:byte;
begin
 re:= k1;
k := k1;
 ASM
  MOV AL,RE
  NOT AL;
  MOV AH, AL
  MOV CL, 7
  SHR AH,1;
  MOV CL,4;
  SHR AH,CL;
  MOV K.AL
  MOV RE,AH
 END;
R := RE; K1 := K;

не знаю ассемблера, откомментируйте каждый шаг кода, плз (разумеется кроме паскалевской части).
и что конкретно этот код выполняет?
PM MAIL ICQ   Вверх
Sartorius
Дата 24.9.2006, 21:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1568
Регистрация: 18.7.2006
Где: Ivory tower

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



Код


  MOV AL,RE; AL:=RE
  NOT AL      ;инвертировать AL
  MOV AH, AL; AH:=AL
  MOV CL, 7; CL := 7
  SHR AH,1; сдвинуть AH вправо на бит
  MOV CL,4; CL := 4; зачем...?
  SHR AH,CL; сдвинуть AH на CL(4) бит вправо
  MOV K.AL ;K := AL
  MOV RE,AH ; RE:=AH


K:= ~RE;
RE:= ~RE >> 5;
ИМХО глубокого смысла нет в этом коде, где ты его откопал? smile 
PM MAIL ICQ   Вверх
sgi1981
Дата 24.9.2006, 22:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

Репутация: 7
Всего: 10



Цитата(Sartorius @ 24.9.2006,  21:22)
K:= ~RE;
RE:= ~RE >> 5;
ИМХО глубокого смысла нет в этом коде, где ты его откопал? smile

От себя... оптимизация небольшая

Код

 MOV AL,RE
  NOT AL;
  MOV K,AL
  SHR AL,5;
  MOV RE,AL




--------------------
Тело в нашем пространстве - есть часть пространства, в которой пространство обладает дисторсией относительно внешнего пространства.
PM MAIL   Вверх
kindDevil
Дата 25.9.2006, 21:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Sartorius, 
програмулина на паскале, работает с внешним устройством через лпт.
так вот после считывания значения из порта оно подвергается такой вот обработке, затем оператор выбора...
к1 - значение, r - хрен знает что.
то есть оно оставляет примерно те же значения, что и были введены? 
или что оно вообще творит?


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


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1568
Регистрация: 18.7.2006
Где: Ivory tower

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



Цитата(kindDevil @ 25.9.2006,  22:50)
Sartorius, 
програмулина на паскале, работает с внешним устройством через лпт.
так вот после считывания значения из порта оно подвергается такой вот обработке, затем оператор выбора...
к1 - значение, r - хрен знает что.
то есть оно оставляет примерно те же значения, что и были введены? 
или что оно вообще творит?

 В К - инвертированное RE
 В RE - инвертированное RE, cдвинутое вправо на 5 бит
PM MAIL ICQ   Вверх
dumb
Дата 26.9.2006, 10:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


sceloglauxalbifacies
****


Профиль
Группа: Экс. модератор
Сообщений: 2929
Регистрация: 16.6.2006

Репутация: 4
Всего: 158



kindDevil,
Цитата(Sartorius @  26.9.2006,  09:12 Найти цитируемый пост)
В RE - инвертированное RE, cдвинутое вправо на 5 бит

сдвиг вправо на n бит - по сути целочисленное деление числа на 2^n. т.е. RE = RE / 32

Добавлено @ 10:09 
ну да, еще инверсия... хотя, применительно к работе с LPT, сдвиг вправо вряд ли имеет смысл именно деления... при работе с портами, как правило, смысл именно в операциях с битами... мутно как-то сказал, но, думаю, примерно понятно... smile
PM MAIL   Вверх
kindDevil
Дата 26.9.2006, 19:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



а аналог кода на паскале можно отобразить? а то я все-таки мало чего понял.
понял про смещение. 
не понял что такое инверсия. инверсия - превращение в противоположное число-1? 

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


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1568
Регистрация: 18.7.2006
Где: Ivory tower

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



Цитата(kindDevil @ 26.9.2006,  20:55)
а аналог кода на паскале можно отобразить? а то я все-таки мало чего понял.
понял про смещение. 
не понял что такое инверсия. инверсия - превращение в противоположное число-1?

 Инверсия - обращение бит : ~00011100 = 11100011
Аналог на паскале:
k := not re;
re := (not re) shr 5;

PM MAIL ICQ   Вверх
kindDevil
Дата 26.9.2006, 22:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



спасибо! =) 
разобрался.
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Asm: Общие вопросы"
MAKCim
  • Проставьте несколько ключевых слов темы, чтобы её можно было легче найти.
  • Не забывайте пользоваться кнопкой КОД.
  • Телепатов на форуме нет! Задавайте чёткий, конкретный и полный вопрос. Указывайте полностью ошибки компилятора и компоновщика.
  • Новое сообщение должно иметь прямое отношение к разделу форума. Флуд, флейм, оффтопик запрещены.
  • Категорически запрещается обсуждение вареза, "кряков", взлома программ и т.д.

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

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


 




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


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

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