При закрытии подписчики были переданы в рассылку "RFpro.ru: Ассемблер? Это просто! Учимся программировать" на которую и рекомендуем вам подписаться.
Вы можете найти рассылки сходной тематики в Каталоге рассылок.
Информационный Канал Subscribe.Ru |
Выпуск № 199
от 28.07.2005, 21:30
Администратор: | Калашников О.А. |
В рассылке: | Подписчиков: 250, Экспертов: 18 |
В номере: | Вопросов: 5, Ответов: 12 |
Вопрос № 23.910 |
Здраствуйте. Что нужно, в програмном плане, для начала самообучения на асамблере, под Windows. Бытует мнение, что для этого недо прикупить старенький комп и на нём обучатся, иначе можно повредить свой основной комп. Вообще для этого надеюсь не обязательно ставить DOS? |
Отправлен: 23.07.2005, 15:25 Вопрос задал: Васильков Николай Петрович (статус: Специалист) Всего ответов отправлено: 3 |
Отвечает: Стас Здравствуйте, Васильков Николай Петрович! >повредить свой основной комп. Повредить комп с помощью ассемблера сложно, можно угробить инфу на винте, и то... А под виндами сделать это еще сложнее. DOS ставить не надо -он у тебя уже есть :). Из программных продуктов нужен блокнот - для написания текста проги, пакет которым будешь компилировать, напр. MASM32. И желательно дебаггер - тут уж на вскус и цвет - S-ICE, Olly... |
Ответ отправил: Стас (статус: Практикант) Отправлен: 24.07.2005, 00:51 Оценка за ответ: 5 Комментарий оценки: Спасибо за ответ, не можешь ли подказать сайты с помощью по асамблеру, где взять компиляторы - ответ можно в минифоруме. |
Отвечает: ASMодей Здравствуйте, Васильков Николай Петрович! Повредить сам компьютер вам вряд ли удастся, а вот повредить информацию на дисках можно, поэтому советую использовать специальные программы - эмуляторы компьютеров. Наиболее типичные представители - VMWare (советую), VirtualPC (не советую :) и Bochs (тоже советую, но не для начала обучения, а несколько попозже). |
Ответ отправил: ASMодей (статус: Профессионал) Отправлен: 24.07.2005, 15:16 |
Отвечает: Евгений Иванов Здравствуйте, Васильков Николай Петрович! запросто, если будешь орудовать с портами CMOS или диска. хотя просто испортишь логически, а физически можно только видеокарту или монитор подпалить, если неправильно программировать видеоадаптер, хотя все правила описаны, читай внимательно. удачи. --------- Что имеем - не храним, потерявши - плачем |
Ответ отправил: Евгений Иванов (статус: Профессор) Отправлен: 27.07.2005, 19:12 Оценка за ответ: 5 Комментарий оценки: Спасибо, интересный ответ. |
Вопрос № 23.915 |
Скажите как зделать чтоб выводилась строка нпример ЖОлТого цвета.. вот шмацы кодинга и??немогу собрать и понять 0_O! помогити плиз. ;""ИЗВИНИТЕ ЗА ГРАМАТНОСТЬ РУССКИЙ НЕ ИЗУЧЯЛ! Приложение: |
Отправлен: 23.07.2005, 18:02 Вопрос задал: IngineringG (статус: Посетитель) Всего ответов отправлено: 2 |
Отвечает: Стас Здравствуйте, IngineringG! По этому коду ничего сказать нельзя, здесь нет "нашего резидента", который собственно и должен вывожить цветной текст. |
Ответ отправил: Стас (статус: Практикант) Отправлен: 24.07.2005, 00:24 |
Отвечает: Ayl Здравствуйте, IngineringG! В видеопамяти для символа отводится 2 байта: один для кода символа, второй - для аттрибута. Что же такое аттрибут? Это такая фишка, которая сообщает видеокарте, каким цветом и на каком фоне отображать символ. Вот его формат: BFFFCCCC, где: B - признак мерцания или повышенной интенсивности фона (что именно, определяется установками регистров видеокарты) FFF - код цвета фона (0-7) CCCC - код цвета символа (0-15) Если ты хочешь вывести желтые символы на черном фоне, то в качестве CCCC надо установить 14 (при стандартной установке политры), а в качестве FFF - 0. В качестве B - тоже 0. Итак, байт аттрибута будет 00001110 = 0eh См.код. Приложение: |
Ответ отправил: Ayl (статус: Профессор) Отправлен: 25.07.2005, 11:47 Оценка за ответ: 5 |
Вопрос № 23.916 |
Ds:0000 будет 8484 >ax почяму веть не указывалясь ds? И в td нечирта не видно? ES – дополнительный сегментный di - индекс приемника ds - Сегмент данных немогу понять помогите плиз. Приложение: |
Отправлен: 23.07.2005, 18:04 Вопрос задал: IngineringG (статус: Посетитель) Всего ответов отправлено: 2 |
Отвечает: Стас Здравствуйте, IngineringG! заметь ты не только DS не указал, но и DI!! Дело собственно вот в чем, кдгда ты грузишь COM прогу в дебаггер он чистит все регистры AX=BX....=SI=DI=0, SP естественно указывает на стек, а CS=DS=ES! Именно потому что ES = DS, а di=0 у тебя такой результат. Стоит заметить, что при запуске без дебаггера, результаты будут не столь радужные. И не забывать инициализировать (давать какие нибудь осмысленные значения) все регистры которые собираешся использовать. |
Ответ отправил: Стас (статус: Практикант) Отправлен: 24.07.2005, 00:37 |
Отвечает: Евгений Иванов Здравствуйте, IngineringG! и так будет работать. использовалось то, что нужно по алгоритму работы --------- Что имеем - не храним, потерявши - плачем |
Ответ отправил: Евгений Иванов (статус: Профессор) Отправлен: 27.07.2005, 20:23 |
Вопрос № 23.918 |
Здраствуйте. Я пытаюсь изучать асамблер по руководству Калашникова. И когда я компилирую вот етот текст: CSEG segment org 100h Begin: mov ax,0B800h mov es,ax mov di,0 mov al,1 mov ah,31 mov cx,2000 Next_face: mov es:[di],ax add di,2 loop Next_face mov ah,10h int 16h int 20h CSEG ends end Begin с помощю TASM виплывает ошибка: **Error** 1.asm<15> Near jump or call to different CS. Што мне делать? Зарание блогодарен. |
Отправлен: 23.07.2005, 19:00 Вопрос задал: mOrteR (статус: Посетитель) Всего ответов отправлено: 3 |
Отвечает: Стас Здравствуйте, D.O.O.! Дело в том что ассемблер не знает чему у тебя равен CS, поэтому укажи ему, поставь после CSEG segment строку assume cs:CSEG, ds:CSEG, ss:CSEG, es:CSEG и все заработает. |
Ответ отправил: Стас (статус: Практикант) Отправлен: 24.07.2005, 00:42 Оценка за ответ: 5 |
Отвечает: Ayl Здравствуйте, D.O.O.! Поставь ASSUME cs:CSEG после CSEG segment --------- Трудное - то, что можно сделать немедленно. Невозможное - то, для выполнения чего требуется немного больше времени |
Ответ отправил: Ayl (статус: Профессор) Отправлен: 25.07.2005, 11:50 |
Отвечает: Евгений Иванов Здравствуйте, D.O.O.! добавь директивы ASSUME и MODEl. --------- Что имеем - не храним, потерявши - плачем |
Ответ отправил: Евгений Иванов (статус: Профессор) Отправлен: 27.07.2005, 20:36 |
Вопрос № 23.926 |
Добрый день! Изучаю 20 урок. Там речь идет о вирусе. Там написано, что первые 6 байт «файла жертвы» мы храним в массиве First_bytes db 4 dup (90h), 0CDh, 20h. Но как я понимаю мы эти первые 6 байт заносим за концом вируса, т.е. после этого массива: mov ah,3Fh mov cx,F_bytes ;Читаем первые шесть байт "файла-жертвы"... mov dx,offset Finish ;...в хвост нашего вируса. int 21h И читаем их потом тоже с этой области памяти: mov ah,40h ;После тела вируса дописываем первые mov cx,F_bytes ;настоящие шесть байт "файла-жертвы"... mov dx,offset Finish int 21h Но зачем тогда этот массив? Заранее спасибо за ответ. |
Отправлен: 23.07.2005, 20:33 Вопрос задал: Programist (статус: Посетитель) Всего ответов отправлено: 2 |
Отвечает: Стас Здравствуйте, Programist! Там же написано, чтобы при первом запуске сработало INT20 Кроме того возможно эти байты участвуют в подсчете длины. (влом разбираться) |
Ответ отправил: Стас (статус: Практикант) Отправлен: 24.07.2005, 00:57 |
Отвечает: mvp Здравствуйте, Programist! Урок не читал, но судя по всему, заражение происходит следующим образом. Найдя подходящий файл-жертву, читается первые его 6 байт и сохраняются в области памяти в конце кода вируса. Далее вычисляется точка входа вируса в заражённый файл и в начало заражённой программы прописывается переход на точку входа вируса (когда вирус получит управление, сделает своё дело, восстановит старые 6 байт заражённой программы, но уже в памяти и передаст ей управление). Далее необходимо записать код вируса в конец файла (подозреваю, что так и есть), в том числе и сохранённые оригинальные первые шесть байт жертвы. Предполагаю, что дописать в файл код вируса вместе с этими 6-ю байтами можно было сразу, т. к. они располагаются последовательно. Но, видимо, для наглядности запись кода разделили. А массив таки надо: Во-первых, чтобы хранить эти 6 байт до записи, а во-вторых этот массив эквивалентен командам: nop nop nop nop int 20h Т. е., если запустить скомпилированный исходник вируса и запустить его, то вирус будет считать, что заразил программу, состоящую из этих строчек, т. е. отработав в первый раз, он передаст управление на эти строчки, которые и завершат работу программы (Int 20h). Всё вішесказанное лишь предположение, т. к. исходника не видел. Но могу предположить, что это com-вирус и тогда было-бы достаточно обойтись 3 байтами, вместо шести: First_bytes db 90h, 0cdh, 20h , т. к. переход происходит в пределах сегмента и длина команды такого перехода как раз 3 байта. --------- Моя совесть чиста - не бывшая в употреблении |
Ответ отправил: mvp (статус: 3-ий класс) Отправлен: 25.07.2005, 13:10 Оценка за ответ: 5 |
© 2001-2005, RusFAQ.ru, Россия, Москва. Все права защищены.
Идея, дизайн, программирование, авторское право: Калашников О.А.
Subscribe.Ru
Поддержка подписчиков
Другие рассылки этой тематики
Другие рассылки этого автора
Подписан адрес:
Код этой рассылки:
comp.soft.prog.faq
Отписаться
Вспомнить пароль
В избранное | ||