Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RusFAQ.ru: программирование на языке Assembler


Информационный Канал Subscribe.Ru

RusFAQ.ru: программирование на языке Assembler

Выпуск № 369
от 17.09.2002, 01:50

Администратор:
Имя: Калашников О.А.
URL: Информационный ресурс
ICQ: 68951340
Россия, Москва
О рассылке:
Задано вопросов: 1249
Отправлено ответов: 3870
Активность: 309.8 %
[Задать вопрос >>][Регистрация эксперта >>]
[Поиск в базе][Обсудить на форуме]


 Список экспертов, ответы которых опубликованы в данном выпуске

Pablo
Статус: Профессиональный
Общий рейтинг: 131
URL: Моя страничка
[Подробней >>]
Broken Sword
Статус: Профессиональный
Общий рейтинг: 134.71
URL: моя рассылка по Protected Mode
[Подробней >>]
Kiss
Статус: Доверительный
Общий рейтинг: 145.71
[Подробней >>]
 
Sensey
Статус: Профессиональный
Общий рейтинг: 128.32
URL: Страничка рассылки по Паскаля...
Телефон: +38 (0572) 41-76-04 дом.
[Подробней >>]
Артём Шегеда
Статус: Профессиональный
Общий рейтинг: 118.22
URL: Пристанище неодинокого программиста
[Подробней >>]
Ayl
Статус: Профессиональный
Общий рейтинг: 119.54
[Подробней >>]
 
masquer
Статус: Профессиональный
Общий рейтинг: 157.42
[Подробней >>]
DiGiT[old]
Статус: Начальный
Общий рейтинг: 115.78
[Подробней >>]
Bob Johnson
Статус: Начальный
Общий рейтинг: 137.14
[Подробней >>]
 
Portnov
Статус: Профессиональный
Общий рейтинг: 121.95
URL: Мой сайтик...
[Подробней >>]
Топор
Статус: Профессиональный
Общий рейтинг: 117.7
URL: Хорошая Русская Металлическая команда
Телефон: (8462)500298
[Подробней >>]
Dark_Lord
Статус: Профессиональный
Общий рейтинг: 136.82
[Подробней >>]
 
baldr
Статус: Профессиональный
Общий рейтинг: 117.05
URL: Сайт об ОС DOS. Всем, кто любит эту ОС!
[Подробней >>]
kvINT
Статус: Профессиональный
Общий рейтинг: 111.42
Телефон: (34316)2-31-45
[Подробней >>]
Sinner
Статус: Доверительный
Общий рейтинг: 106.29
[Подробней >>]
 
ARDoS
Статус: Доверительный
Общий рейтинг: 106.35
[Подробней >>]
Dron
Статус: Профессиональный
Общий рейтинг: 120.28
URL: Операционная система с нуля!
[Подробней >>]


 Краткий перечень вопросов

Вопрос № 1230. Уважаемые эксперты! 1)Пожалуйста объясните что такое контрольная сумма и как ее высчитать например д... (ответов: 10)
Вопрос № 1231. Ok. I get what I want. But one little q.: what about assm. compatibility? Can I write my progz on TA... (ответов: 9)
Вопрос № 1232. Добрый день эксперты!!! У меня такой вопрос: я пишу строку по вызову своей программы, она сохраняет... (ответов: 3)
Вопрос № 1233. HI! Что есть openPGP ??? Open Pretty Good Privacy , ну с PGP все ясно, но что значит open??? первая ... (ответов: 5)

Вопросов: 4, ответов: 27


 Вопрос № 1230

Уважаемые эксперты!
1)Пожалуйста объясните что такое контрольная сумма
и как ее высчитать например для пяти байтов 0ffh,0dah,037h
2)Чем отличаются команды NOT и NEG и какая из этих команд работает быстрее.
Заранее благодарен.



Вопрос отправлен: 12.09.2002, 15:31
Отправитель: SonicX (sg86@mail.ru)

[Следующий вопрос >>] [Список вопросов]

Отвечает Pablo

Приветствую Вас, SonicX!
1. Как она считается я точно не знаю, но можешь так попробовать:
Для всех элементов применяешь команду add, а затем ты просто берешь младшие 8 бит от результата и получаешь CRC8!)))
2. neg ax = {not ax; inc ax}


Ответ отправлен: 14.09.2002, 19:10
Отправитель: Pablo


Отвечает Broken Sword

Приветствую Вас, SonicX!
1. Контрольная сумма - это некоторая сумма, которую используют для некоторой проверки.
Для пяти байт 0FFh 0DAh и 037h контрольная сумма будет равна сумме этих пяти байт: т.е. первый байт - 0FFh + второй байт 0DAh и + пятый байт 037h = 210h
2. NEG - операция дополнения до двух. Если рассматривать операнд, как число со знаком, то она эквивалентна обращению знака операнда. Меняет много флагов
NOT - операция дополнения до одного. Флаги не меняет.
Например:
NEG 18 = -18
NOT 18 = -19
:)
да нет, просто not инвертирует ВСЕ биты, а NEG - только изменяет значение числа по знаку. А по скорости - одинаковые абсолютно (у них даже опкод то один - F6)


Ответ отправлен: 12.09.2002, 16:02
Отправитель: Broken Sword


Отвечает Kiss

Здравствуйте, SonicX!
Предположительно NEG(сменить знак), работает быстрее чем
NOT(инвертировать).
С уважением Kiss!

Ответ отправлен: 12.09.2002, 17:13
Отправитель: Kiss


Отвечает Sensey

Здравствуйте, SonicX!
Пяти? А там вроде три:))))
Не суть.
КС - число, полученное по какой-либо формуле. Простейшая - сложить все байты... Можно одновременно еще и сдвигать... и т.п.


Приложение:

Ответ отправлен: 12.09.2002, 16:13
Отправитель: Sensey


Отвечает Артём Шегеда

Здравствуйте, SonicX!

1. Контрольные суммы нужны для проверки целостности данных. Алгоритмы расчёта контрольных сумм могут быть простыми (суммирование всех байтов последовательности) или сложными (CRC, например). Чем проще алгоритм расчёта, тем меньше вероятность обнаружения ошибки (при простом суммировании можно взять один байт на единицу меньше, а второй - на единицу больше, но сумма будет та же самая). Некоторые алгоритмы расчёта контрольных сумм позволяют даже исправлять ошибки.
2. NOT выполняет инверсию битов операнда: 10001011b -> 01110100b (8Bh -> 74h)
NEG выполняет смену знака операнда, то есть вычитает операнд из нуля: 93d -> -93d (01011101b -> 10100011)
По этому поводу рекомендую программу calc.exe (стандартный Windows-калькулятор) в режиме "инженерный"

Ответ отправлен: 12.09.2002, 16:14
Отправитель: Артём Шегеда


Отвечает Ayl

Здравствуйте, SonicX!
1. Контрольная сумма - это некоторая функция от блока данных. Какая именно - зависит от разработчиков. Самое простое - это сумма по модулю, скажем, 2^N. Для твоих 3-х байт (:-)) можно посчитать, например, по модулю 256 (N=8):
0ffh + 0dah + 037h = 210h
210h mod 256 = 10h
Следовательно, контрольная сумма будет 10h.
2. Команда NOT - это побитовое НЕ с операндом. Например (разрядность - 8 бит):
NOT 2 = NOT (00000010b) = 11111101b = 0fbh = 253
NOT 128 = NOT (10000000b) = 01111111b = 7fh = 127
NOT 255 = NOT (11111111b) = 00000000b = 00h = 0
Команда NEG - изменение знака числа. NEG a = -a. Если расписать по другому, то NEG a = NOT a + 1. Например (разрядность 8 бит, старший бит - знаковый):
NEG 2 = NEG (00000010b) = 11111110b = 0fbh = -2
NEG 128 = NEG (10000000b) = 10000000b = 80h = -128
NEG 255 = NEG (11111111b) = 00000001b = 01h = 1
В двух последних случаях слева указаны числа без знака для соответствия с примерами с NOT. На самом деле эти числа в знаковом виде будут равны соответственно -128 и -1.
-128 является особенным числом, так как при использовании знаковых чисел размерностью 8 бит диапазон представления чисел равен -128..+127, т.е. для числа -128 нет парного.

Ответ отправлен: 12.09.2002, 16:37
Отправитель: Ayl


Отвечает masquer

Приветствую Вас, SonicX!
Этих сумм очень много, от простого суммирования значений, до вычислений хеш-функций CRC и MD5. Определись сначала с этим.
2. NOT инвертирует биты, NEG - все равно что уможить на -1. Х.з. какая из них быстрее - от процесоора сильно все зависит.

Ответ отправлен: 12.09.2002, 16:53
Отправитель: masquer


Отвечает DiGiT[old]

Добрый день, SonicX!
Контрольная сумма это значение, полученное путем применения к данным какой либо функции. Ну например, контрольной суммой может служить сумма всех этих чисел с обнулением при переполнении или самой распространенное операция xor.

Ответ отправлен: 13.09.2002, 08:51
Отправитель: DiGiT[old]


Отвечает Bob Johnson

Здравствуйте, SonicX!
1. (А где пять байт-то?)
Контрольная сумма - это число, которое вычисляется с помощью определенного алгоритма (обычно для этого используются полиномы вроде x^15 + x^7 + x^3). Она предназначена для слежения, что файл остался неизменным - если ты изменишь хоть один байт в файле, то изменится и его контрольная сумма (причем достаточно непредсказуемо, что значительно затрудняет ее подбор вручную). Часто ее применяют для контроля правильности передачи файла.
Ты можешь использовать самый простой способ вычисления контрольной суммы: CRC = x1 xor x2 xor x3 xor ... xor xn, где x1 .. xn - твои байты, xor - сложение по модулю два (команда xor процессора).
2. Команда NOT осуществляет побитную инверсию числа, например: если AL = 01100101b, то после NOT AL AL = 10011010b.
Команда NEG осуществляет смену знака числа (а отрицательные числа представлены в Intel в дополнительном коде), т.е. если AL = 10, то после NEG AL AL = -10 (в доп. коде).
Физически NEG AX эквивалентно (NOT AX и INC AX).
А по скорости думаю, что они обе одинаково быстры...


Ответ отправлен: 13.09.2002, 13:58
Отправитель: Bob Johnson


Отвечает Portnov

Добрый день, SonicX!
1. Контрольная сумма (она же хэш) - это число, вычисляемое по некоторому (в принципе любому) алгоритму и зависящее от всех байт в потоке (файле, участке памяти,...). Применяется в основном для аутентификации данных, т.е. для проверки, не были ли изменены данные. Самый простой алгоритм - сложить все слова потока, не обращая внимания на переполнение (игнорировать флаг CF), такой алгоритм изначально было задумано применять в exe-файлах, но потом разработчикам операционки стало лень реализовывать проверку контрольной суммы, так что поле ControlSumm в заголовке экзешника - это как аппендикс у человека :). Наиболее часто используемые алгоритмы такого рода - это CRC, CRC32, MD5 (очень "прочный"), и др.
2. NOT обращает все биты операнда. NEG меняет знак операнда, для этого обращает все биты операнда и прибавляет к нему 1. Насчет быстродействия - зависит от операнда. Если очень интересно - см. OPCODES.HLP из поставки Masm32.
С уважением, Portnov.

Ответ отправлен: 13.09.2002, 14:21
Отправитель: Portnov


 Вопрос № 1231

Ok.
I get what I want. But one little q.:
what about assm. compatibility? Can I write my progz on TASM, if I know MASM?



Вопрос отправлен: 12.09.2002, 18:10
Отправитель: goga

[Следующий вопрос >>] [Список вопросов]

Отвечает Топор

Здравствуйте, goga!
No problems. TASM contains MASM mode for compability, and work in this mode by default.


Ответ отправлен: 12.09.2002, 20:10
Отправитель: Топор


Отвечает Pablo

Greetinx, goga!
Yes you can, but some MASM directives does not supported by TASM.


Ответ отправлен: 14.09.2002, 19:05
Отправитель: Pablo


Отвечает Kiss

Здравствуйте, goga!
If you know MASM, then you know TASM!
Kiss!

Ответ отправлен: 12.09.2002, 18:50
Отправитель: Kiss


Отвечает Dark_Lord

Добрый день, goga!
Please, do NOT ask such stupid things here! Of course you can

Ответ отправлен: 14.09.2002, 16:29
Отправитель: Dark_Lord


Отвечает masquer

Добрый день, goga!
Certainly you do.

Ответ отправлен: 13.09.2002, 11:51
Отправитель: masquer


Отвечает baldr

Доброе время суток, goga!
Абсолютно... TASM поддерживает эмуляцию MASM'а, а обратно нет. Но там разница в них небольшая...

Ответ отправлен: 13.09.2002, 12:01
Отправитель: baldr


Отвечает Bob Johnson

Hi, goga!
Yes, you can.
TASM has two modes:
1. It is syntactically compatible with MASM. This is the TASM's default mode (it begins to assembler your program being in this mode). You can explicitly switch TASM to this mode by the 'MASM' directive.
2. TASM has its own syntax. Programming in this mode slightly differs from 'MASM'. For example, in 'MASM' you write '_procname_ PROC ... _procname_ ENDP' whereas in this mode you'll write 'PROC _procname_ ...' etc. This mode is called 'IDEAL' and TASM can be switched to it by the 'IDEAL' directive.
But there are several other little differences between MASM and TASM (I mean between compilers) so you'll probably not be able to take any working MASM file and compile it with TASM in the 'MASM' mode. But I'm sure you'll be able to write working program in TASM if you did it for another compiler.


Ответ отправлен: 13.09.2002, 13:58
Отправитель: Bob Johnson


Отвечает kvINT

Здравствуйте, goga!
Yes, you can.

Ответ отправлен: 13.09.2002, 14:02
Отправитель: kvINT


Отвечает Portnov

Доброе время суток, goga!
Tasm и Masm различаются незначительно, так что обычно даже пишут masm/tasm, указывая, что это примено одно и то же. Если в самом начале исходника для Tasm'a поставить директиву
masm
, то можно писать программы для Tasm в точности как для masm, не задумываясь о совместимости.
С уважением, Portnov.

Ответ отправлен: 13.09.2002, 14:27
Отправитель: Portnov


 Вопрос № 1232

Добрый день эксперты!!!
У меня такой вопрос: я пишу строку по вызову своей программы, она сохраняется.
Как можно вызвать её ещё опять на экран? У меня есть один способ, я его привожу. Какие есть ещё способы? Если допустим у меня несколько таких строчек, их нужно через такую процедуру выводить как у меня в примере, или есть др. варианты?
Извиняюсь, если не правильно выразил свой вопрос, но в примере всё понятно.
Алексей.


Приложение:


Вопрос отправлен: 12.09.2002, 21:25
Отправитель: Алексей

[Следующий вопрос >>] [Список вопросов]

Отвечает Broken Sword

Добрый день, Алексей!
Ну да, ну да... все понятно.
Выводите КАК угодно и через что угодно (прямое копирование в видеопамять, ф-ции int 21h, ф-ции int 10h) только я вас умоляю - не нада предварительно выводимую строку еще куда-то копировать ! К чему?
p.s. никогда (без РЕАЛЬНОЙ необходимости, а таковой у вас не возникнет) не компильте код в exe-шники.

Ответ отправлен: 12.09.2002, 22:39
Отправитель: Broken Sword


Отвечает Артём Шегеда

Доброе время суток, Алексей!

Использование fn 9 int 21h для вывода строк в стандартное устройство вывода - очень неудачное решение. Лучше использовать fn 40h int 21h при bx=1. Это позволи выводить любые символы, даже '$' (попробуй в своей программе ввести 1234$5678 - в результате получишь только 1234).

Приложение:

Ответ отправлен: 12.09.2002, 22:17
Отправитель: Артём Шегеда


Отвечает Sinner

Здравствуйте, Алексей!
можно так.

Приложение:

Ответ отправлен: 13.09.2002, 07:01
Отправитель: Sinner


 Вопрос № 1233

HI!
Что есть openPGP ??? Open Pretty Good Privacy , ну с PGP все ясно, но что значит open??? первая мысль - открытые исходники, но как-то нелепо получается, кто этим шифроваться будет? Открытый стандарт, ...? Если исходники, то где их взять???
P.S. изв. что пишу в рассылку по асму, нравится она мне очень :)



Вопрос отправлен: 13.09.2002, 01:18
Отправитель: Илья (b.i@date.by)

[Следующий вопрос >>] [Список вопросов]

Отвечает ARDoS

Добрый день, Илья!
Open - значит шифрование с открытым ключём. то есть половина ключа находится у шифрующего, а другая половина у разшифровывающего. Ты шифруешь свою инфу, посылаешь её человеку у которого есть вторая половина ключа (открытый ключ) и он с её помощью расшифровывает твою инфу.

Ответ отправлен: 16.09.2002, 13:41
Отправитель: ARDoS


Отвечает masquer

Приветствую Вас, Илья!
Почитай как происходит шифрование с закрытым и открытым ключем - фишка в том, что зная открытый ключ, расшифровать можно только зная закрытый ключ. Подробнее соответствующую литературу читай.

Ответ отправлен: 13.09.2002, 11:53
Отправитель: masquer


Отвечает baldr

Добрый день, Илья!
PGP действительно с open source распространяется. Но хакерам это мало поможет. Там такой алгоритм, что расшифровать сообщение можно только правильным ключом - брутфорс затянется ндолго.
Кстати, так как этот алгоритм довольно широко распространен, ФБР пару раз наезжала на его автора (не помню как мужика зовут) - "просило" встроить в прогу backdoor'ы для спецслужб. Тот отказался, за что его сразу же вся общественность стала любить... :)

Ответ отправлен: 13.09.2002, 12:07
Отправитель: baldr


Отвечает Dron

Добрый день, Илья!
Что-то я не понял что тебя беспокоит?
Система PGP такая:
Ты задаешь ключевую фразу..
С помощью этой ключевой фразы формируются открытый и закрытый ключи, размер ключей большой, помоему открытый - около килобайта, закрытый - раза в 4 больше. точно не помню, надо смотреть. открытый ключ можешь раздавать кому хочешь, он служит только для зашифрования, а закрытый ключ необходимо беречь как зеницу ока, ибо на нем все можно как зашифровать, так и расшифровать...
А теперь внимание вопрос... при чем здесь исходники?
Открытые исходники тем и хороши, что ты точно можешь убедиться что твои ключи не отправляются в FBR куда нибудь, а так же ты можешь убедиться (ну при наличии некоторого опыта конечно) что алгоритм правилен, не допускает универсальных ключей и всякое такое.
Когда тебе дают компилированную программы ты и понятия не имеешь что туда можно напихать, и что как работает, соответственно нельзя быть уверенным в безопасности своей переписки.
Так что Open - есть большой гуд!

Ответ отправлен: 13.09.2002, 12:08
Отправитель: Dron


Отвечает Portnov

Приветствую Вас, Илья!
Открытые исходники. Насчет кто будет шифровать - а сейчас ни одна нормальная организация не пользуется программами шифрования, исходники которых недоступны для широкой общественности. Если вы не видели исходников, как вы можете быть уверены, что программер не вставил в программу дырку, о которой знает только он, и тогда он имеет полный доступ к вашей информации? Так что программы с закрытыми исходниками вызывают подозрения у заинтересованной общественности.
С уважением, Portnov.

Ответ отправлен: 13.09.2002, 14:36
Отправитель: Portnov



Форма отправки вопроса

Внимание!
Форма может работать некорректно в почтовых программах "Microsoft Outlook" и "Microsoft Outlook Express". В программе The Bat! подобные формы не работают вообще!
После нажатия на кнопку "Отправить", будет открыто второе окно. Заметьте, что в некоторых браузерах могут стоять запреты на открытие других окон, а также "чрезмерное" кэширование данных, при этом факт отправки Вашего вопроса стоит под сомнением.
Мы рекомендуем открывать рассылку в программе Internet Explorer 5.0+ или отправлять вопросы с сайта по адресу: http://rusfaq.ru/cgi-bin/Message.cgi.

© 2002 Команда RusFAQ.ru.

 Персональные данные

Ваше имя:

Ваш e-mail:

Опубликовать мой e-mail в рассылке


 Вопрос и дополнение

Ваш вопрос:


Приложение (если необходимо):


Получить ответов:


 Выбор рассылки

Программисту
Assembler (41)
C / C++ (28)
Perl (9)
Delphi (15)
Pascal (25)
Basic / VBA (13)
Java / JavaScript (12)
PHP (9)
MySQL / MSSQL (11)
Пользователю
Windows 95/98/Me (38)
Windows NT/2000/XP (31)
"Железо" (38)
Поиск информации (13)
Администратору
Windows NT/2000/XP (16)
Linux / Unix (16)
Юристу
Гражданское право (9)
Семейное право (5)
Трудовое право (7)
КоАП (5)

Отправить вопрос всем экспертам выбранной рассылки.




be number one Яндекс цитирования

© 2002 Россия, Москва. Авторское право: RusFAQ.ru


http://subscribe.ru/
E-mail: ask@subscribe.ru
Отписаться
Убрать рекламу

В избранное