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

Ассемблер? Это просто! Учимся программировать


РАССЫЛКИ ПОРТАЛА RUSFAQ.RU

/ КОМПЬЮТЕРЫ И ПО / Языки программирования / Assembler (Ассемблер)

Выпуск № 741
от 05.05.2007, 12:35

Администратор:Калашников О.А.
В рассылке:Подписчиков: 382, Экспертов: 31
В номере:Вопросов: 5, Ответов: 6


Вопрос № 84730: Пишу программу на С, которая реализует алгоритм шифрования SHA. Но похоже что без ассемблерских вставок не обойтись. Программа незакончена. Здесь пока только одна функция, которая реализует этап 1.2 алгортма шифрования: 1. Исходное сообщение M до...
Вопрос № 84733: Добрый день уважаемые эксперты. Обращаюсь к Вам вновь по поводу вопроса № 83748. К сожалению на него пришёл всего лишь один не очень удовлетворительный Ответ. Огромная просьба не обойти вопрос вниманием в этот раз. Дабы не отягощать ...
Вопрос № 84742: Здраствуйте, уважаемые эксперты! Во первых хочу поблагодарить вас за то что не оставили мой предыдущий вопрос без внимания. У меня возник следующий вопрос при написании программы. Объясните пожалуйста как можно проще, как можно обойти ошибку &quo...
Вопрос № 84785: Здраствуйте! Я решил написать операционную систему на Assembler. Скачал кучу книг. Assembler не знаю, Delphi - немножко. С чего начать?...
Вопрос № 84789: Здраствуйте эксперты, я знаю что по умолчанию в Ассмблере используется директива процессора 8086. Как поставить директиву .386 или .586?...

Вопрос № 84.730
Пишу программу на С, которая реализует алгоритм шифрования SHA. Но похоже что без ассемблерских вставок не обойтись. Программа незакончена. Здесь пока только одна функция, которая реализует этап 1.2 алгортма шифрования:
1. Исходное сообщение M дополняют так, чтобы оно стало кратным 512 битам. Дополнение сообщения осуществляют следующим образом:
1.1. сначала добавляется бит единица;
1.2. затем следует столько нулей, сколько необходимо для получения сообщения, которые на 64 бита короче, чем кратное 512;
1.3. добавляют 64-битовое представление длины сообщения. При этом если кратность 512 битам требует добавления менее 64 битов, то дополнение на шаге 1.2 производят до следующей кратности 512 битам.

Помогите написать ассемблерную вставку, которая бы дополняла исходное сообщение одной единицей 15-ю нулями (для данного примера), и длиной сообщения. Зараннее спасибо. Надеюсь, что я понятно объяснил.

Приложение:

Отправлен: 29.04.2007, 19:45
Вопрос задал: psevdo (статус: 1-ый класс)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Зенченко Константин Николаевич
Здравствуйте, psevdo!

Посмотрите тут. Есть реализации ( на С) основных алгоритмов шифрования.
Удачи!
---------
И только наступив на грабли мы преобретаем драгоценный опыт!
Ответ отправил: Зенченко Константин Николаевич (статус: Студент)
Ответ отправлен: 30.04.2007, 18:42


Вопрос № 84.733
Добрый день уважаемые эксперты.
Обращаюсь к Вам вновь по поводу вопроса № 83748.
К сожалению на него пришёл всего лишь один не очень удовлетворительный
Ответ. Огромная просьба не обойти вопрос вниманием в этот раз.
Дабы не отягощать Вас поиском, текст привожу в приложении.

Приложение:

Отправлен: 29.04.2007, 20:22
Вопрос задал: CrancV (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: IceWolf
Здравствуйте, CrancV!
Попробую объяснить. Пусть у нас есть .com программа, причем размер программы должен быть кратен 10h либо мы дописываем в конец файла столько байт, чтобы это условие выполнилось-выравниваем его на границу параграфа. Для простоты можно сделать так: M:=16*(N div 16+1), где N-начальный размер программы; M-файловое смещение, по которому мы будем писать наши данные(соответственно выравнивая дописываем в конец M-N байт, если N и так кратно 16 напишем 16 байт, чего можно и не делать).На ассемблере:
mov ax, FileSize
mov bl, 10h
div bl
inc al
mov bh, al
mul bl
mov cx, ax
sub cx, FileSize
Теперь: в bh-размер выровненного файла в параграфах, в ax-в байтах;cx байт дописать в конец для выравнивания. После чего пишем в конец наши данные. Когда будем к ним обращаться, добавим к DS BH при обращении к данным процессор сам сдвинет DS на 4 бита влево(умножит на 16) и мы попадем как раз на наши данные.
Пример FileSize=62h-выравниваем...bh=7, дописываем 70h-62h=0Eh нулей и пишем данные(первый их байт-на 70h). При обращении DS=10, DS+7h=17h, данные же наши как раз по адресу 170h.
Если что непонятно-пишите, удачи!

---------
Идеальных защит не существует, ибо то, что создано человеческим разумом, им же будет и разрушено!
Ответ отправил: IceWolf (статус: 7-ой класс)
Ответ отправлен: 30.04.2007, 00:23
Оценка за ответ: 5
Комментарий оценки:
Спасибо, именно такой ответ хотелось получить, с примером и подробно, без
ухода в сторону от заданного вопроса...


Вопрос № 84.742
Здраствуйте, уважаемые эксперты! Во первых хочу поблагодарить вас за то что не оставили мой предыдущий вопрос без внимания.
У меня возник следующий вопрос при написании программы. Объясните пожалуйста как можно проще, как можно обойти ошибку "Relative jump out of range" в моей программе(см. приложение). И если не составит труда исправьте её (мне необходимо чтобы красный квадрат перемеался по зелёным квадратам в цикле) . Заранее благодарю.

Приложение:

Отправлен: 29.04.2007, 21:33
Вопрос задал: Фадеев Алексей Дмитриевич (статус: Посетитель)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: IceWolf
Здравствуйте, Фадеев Алексей Дмитриевич!
Посмотрите ответ на вопрос 58118: http://rusfaq.ru/info/question/58118
Вдобавок к тому, что написано там: http://faqs.org.ru/progr/other_l/asm.htm
И наконец вот: (ссылка)
Учитесь пользоваться поиском, удачи!

[Исправлена длинная ссылка ] [ Климова М. ]
---------
Идеальных защит не существует, ибо то, что создано человеческим разумом, им же будет и разрушено!
Ответ отправил: IceWolf (статус: 7-ой класс)
Ответ отправлен: 29.04.2007, 23:03

Отвечает: LEXASOFT
Здравствуйте, Фадеев Алексей Дмитриевич!

Дело в том что по умолчанию при компиляции изпользуется директива процессора:
.8086
которая использует короткие модели условных переходов(т.е. переход назад на 128 байт и вперед на 127 байт).

Попробуте вставить в текст программы директиву:
.386

Или замените условный переход, на противоположный условный с применением безусловного перехода:

je label6

на

jne label6_1
jmp label6
label6_1:

Удачи!
Ответ отправил: LEXASOFT (статус: 2-ой класс)
Ответ отправлен: 01.05.2007, 13:17


Вопрос № 84.785
Здраствуйте! Я решил написать операционную систему на Assembler. Скачал кучу книг. Assembler не знаю, Delphi - немножко. С чего начать?
Отправлен: 30.04.2007, 08:26
Вопрос задал: Teplenov Maxim Vitalievich (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 6)

Отвечает: Зенченко Константин Николаевич
Здравствуйте, Teplenov Maxim Vitalievich!
Начать нужно с Ассемблера. "От простого к сложному". Шаг за шагом.
Вам предстоит ответить на несколько вопросов:
-как будет организованна работа с устройствами внешними(монитор, клавиатура, мишь и др.) и внутренними(память, звуковая карта, диски и др.).
-как будут загружатся в память программы и как программы будут делить ресурсы РС.
-как будет ОСь попадать в память и начинать работать.
-какая это будет ОСь.
-какая файловая система будет использоватся.
-какой будет интерфейс пользователя.
На все эти (и возникшие в процесе работы) вопросы Вы сможете ответить только изучив Ассемблер и взаимодействие компонентов РС.
Загляните на форум.
Посмотрите статью о MenuetOS, в статье можно найти и исходники с коментариями.
Удачи!
---------
И только наступив на грабли мы преобретаем драгоценный опыт!
Ответ отправил: Зенченко Константин Николаевич (статус: Студент)
Ответ отправлен: 30.04.2007, 15:10


Вопрос № 84.789
Здраствуйте эксперты, я знаю что по умолчанию в Ассмблере используется директива процессора 8086. Как поставить директиву .386 или .586?
Отправлен: 30.04.2007, 09:50
Вопрос задал: Фадеев Алексей Дмитриевич (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Зенченко Константин Николаевич
Здравствуйте, Фадеев Алексей Дмитриевич!

Вначале программы ставите:
.386;разрешены непривилегированные команды 80386
или
.386P;разрешены все команды 80386
586;разрешены непривилегированные команды 80586
или
.586P;разрешены все команды 80586
Удачи!

---------
И только наступив на грабли мы преобретаем драгоценный опыт!
Ответ отправил: Зенченко Константин Николаевич (статус: Студент)
Ответ отправлен: 30.04.2007, 10:18


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

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

* Код программы, выдержки из закона и т.п. дополнение к вопросу.
Эта информация будет отображена в аналогичном окне как есть.

Обратите внимание!
Вопрос будет отправлен всем экспертам данной рассылки!

Для того, чтобы отправить вопрос выбранным экспертам этой рассылки или
экспертам другой рассылки портала RusFAQ.ru, зайдите непосредственно на RusFAQ.ru.


Форма НЕ работает в почтовых программах The BAT! и MS Outlook (кроме версии 2003+)!
Чтобы отправить вопрос, откройте это письмо в браузере или зайдите на сайт RusFAQ.ru.


© 2001-2007, Портал RusFAQ.ru, Россия, Москва.
Авторское право: ООО "Мастер-Эксперт Про"
Email: support@rusfaq.ru, тел.: +7 (926) 535-23-31
Хостинг: "Московский хостер"
Поддержка: "Московский дизайнер"
Авторские права | Реклама на портале
Версия системы: 4.52 (beta) от 02.05.2007
Яндекс Rambler's Top100

В избранное