![]() |
|
|
![]()
|
|
| kindDevil |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 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; не знаю ассемблера, откомментируйте каждый шаг кода, плз (разумеется кроме паскалевской части). и что конкретно этот код выполняет? |
|||
|
||||
| Sartorius |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1568 Регистрация: 18.7.2006 Где: Ivory tower Репутация: нет Всего: 37 |
K:= ~RE; RE:= ~RE >> 5; ИМХО глубокого смысла нет в этом коде, где ты его откопал? |
|||
|
||||
| sgi1981 |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 284 Регистрация: 16.3.2006 Репутация: 7 Всего: 10 |
От себя... оптимизация небольшая
-------------------- Тело в нашем пространстве - есть часть пространства, в которой пространство обладает дисторсией относительно внешнего пространства. |
||||
|
|||||
| kindDevil |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 110 Регистрация: 10.10.2005 Репутация: нет Всего: нет |
Sartorius,
програмулина на паскале, работает с внешним устройством через лпт. так вот после считывания значения из порта оно подвергается такой вот обработке, затем оператор выбора... к1 - значение, r - хрен знает что. то есть оно оставляет примерно те же значения, что и были введены? или что оно вообще творит? |
|||
|
||||
| Sartorius |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1568 Регистрация: 18.7.2006 Где: Ivory tower Репутация: нет Всего: 37 |
В К - инвертированное RE В RE - инвертированное RE, cдвинутое вправо на 5 бит |
|||
|
||||
| dumb |
|
|||
![]() sceloglauxalbifacies ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2929 Регистрация: 16.6.2006 Репутация: 4 Всего: 158 |
kindDevil,
сдвиг вправо на n бит - по сути целочисленное деление числа на 2^n. т.е. RE = RE / 32 Добавлено @ 10:09 ну да, еще инверсия... хотя, применительно к работе с LPT, сдвиг вправо вряд ли имеет смысл именно деления... при работе с портами, как правило, смысл именно в операциях с битами... мутно как-то сказал, но, думаю, примерно понятно... |
|||
|
||||
| kindDevil |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 110 Регистрация: 10.10.2005 Репутация: нет Всего: нет |
а аналог кода на паскале можно отобразить? а то я все-таки мало чего понял.
понял про смещение. не понял что такое инверсия. инверсия - превращение в противоположное число-1? |
|||
|
||||
| Sartorius |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1568 Регистрация: 18.7.2006 Где: Ivory tower Репутация: нет Всего: 37 |
Инверсия - обращение бит : ~00011100 = 11100011 Аналог на паскале: k := not re; re := (not re) shr 5; |
|||
|
||||
| kindDevil |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 110 Регистрация: 10.10.2005 Репутация: нет Всего: нет |
спасибо! =)
разобрался. |
|||
|
||||
![]()
|
| Правила форума "Asm: Общие вопросы" | |
|
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, MAKCim. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Asm: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |