Рассылка закрыта
При закрытии подписчики были переданы в рассылку "RFpro.ru: Ассемблер? Это просто! Учимся программировать" на которую и рекомендуем вам подписаться.
Вы можете найти рассылки сходной тематики в Каталоге рассылок.
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.
Вопрос и дополнение |
Ваш вопрос:
Приложение (если необходимо):
Получить ответов:
Выбор рассылки |
Программисту 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) |
Отправить вопрос всем экспертам выбранной рассылки.
© 2002 Россия, Москва. Авторское право: RusFAQ.ru |
http://subscribe.ru/
E-mail: ask@subscribe.ru |
Отписаться
Убрать рекламу |
В избранное | ||