Рассылка закрыта
При закрытии подписчики были переданы в рассылку "RFpro.ru: Ассемблер? Это просто! Учимся программировать" на которую и рекомендуем вам подписаться.
Вы можете найти рассылки сходной тематики в Каталоге рассылок.
RusFAQ.ru: программирование на языке Assembler
Информационный Канал Subscribe.Ru |
RusFAQ.ru: программирование на языке Assembler
Выпуск № 726
от 19.05.2004, 03:10
Администратор: Имя: Калашников О.А. URL: Информационный ресурс ICQ: 68951340 Россия, Москва |
О рассылке: Задано вопросов: 5292 Отправлено ответов: 14578 Активность: 275.4 %
|
РекламаДобро пожаловать в сообщество, где можно обсуждать всесторонние вопросы и темы об Ассемблере.Прошу экспертов регистрироваться там для помощи изучающим этот лучший язык. http://www.npj.ru/assembler |
Список экспертов, ответы которых опубликованы в данном выпуске |
_vt Статус: Профессиональный Общий рейтинг: 118.57 [Подробней >>] |
Foamplast Статус: Профессиональный Общий рейтинг: 152.1 URL: мой личный сайт [Подробней >>] |
Pawel Статус: Профессиональный Общий рейтинг: 155.46 [Подробней >>] |
Artemy Статус: Опытный Общий рейтинг: 111.83 Телефон: 8 905 549 38 66 [Подробней >>] |
Евгений Иванов Статус: Профессиональный Общий рейтинг: 133.68 URL: Super Assembler Software Телефон: НСС +7 831 3107039 [Подробней >>] |
Ayl Статус: Профессиональный Общий рейтинг: 116.58 [Подробней >>] |
Стас Статус: Доверительный Общий рейтинг: 129.41 [Подробней >>] |
VOVAN Статус: Опытный Общий рейтинг: 105.49 [Подробней >>] |
flasher Статус: Начальный Общий рейтинг: 106.76 [Подробней >>] |
Краткий перечень вопросов |
Вопрос № 5268. Уважаемые эксперты, подскажите пожалуйста как установить прерывание на какой-то диапазон портов в So... (ответов: 1)
Вопрос № 5270. Здравствуйте, эксперты! Начал заниматься программированием COM-порта и возникли вопросы. Объясните, ... (ответов: 1)
Вопрос № 5271. Здравствуйте! Подскажите, пожалуйста, как можно измерить время выполнения программы либо в тактах пр... (ответов: 3)
Вопрос № 5272. Добрый день! я хотел бы больше узнать про видеоускорители, а именно про аппаратное ускорение. как я ... (ответов: 4)
Вопрос № 5273. Где можно найти исходник или хотя бы алгоритм перехода в ring0 под W2K?... (ответов: 4)
Вопрос № 5274. продолжение вопроса 5252 Спасибо за то, что стали мне помогать. Я кусок дописал, но у меня опять нич... (ответов: 2)
Вопрос № 5275. Здравствуйте, уважаемые эксперты! Спасибо за предыдущие ответы. Ответьте, пожалуйта, почему следующи... (ответов: 4)
Вопрос № 5276. Добрый день! Вопрос к знатокам ASM'a нужно преобразовать число в строку для вывода на экран, т.е. я... (ответов: 3)
Вопрос № 5277. Доброе время суток, уважаимые знатоки! Скажите пожалуска, как можно сделать резидентную програму для... (ответов: 3)
Вопросов: 9, ответов: 25
Вопрос № 5268 |
Уважаемые эксперты, подскажите пожалуйста как установить прерывание на какой-то диапазон портов в SoftIce 4.1.
Вопрос отправлен: 13.05.2004, 17:26
Отправитель: Marilyn Manson
[Следующий вопрос >>] [Список вопросов]
Отвечает _vt
Приветствую Вас, Marilyn Manson!
По моему, командой BPIO.
E-Man : Life begins at 1000Mhz!
Ответ отправлен: 16.05.2004, 21:51
Отправитель: _vt
Вопрос № 5270 |
Здравствуйте, эксперты!
Начал заниматься программированием COM-порта и возникли вопросы.
Объясните, пожалуйста, как понимать словосочетание "1.5 стоповых бита"? Почему 1.5 и как его представить в двоичном виде?
И еще:
есть MicroPC "Octagon Systems" 5066, опер. система (ROM-DOS)которого совместима с версией DOS 6.22. Также этот MicroPC имеет два последовательных порта (RS232). Так вот к первому порту цепляется счетчик газа и передает какие-то данные по протоколу IEC 61107. Ко второму порту цепляется контроллер Yokogawa. В него уже данные должны поступать по протоколу Modbus. Этот MicroPC выступает посредником, в котором нужно конвертировать протоколы. Итак, а теперь вопросы: 1) должна ли быть программа (C, Asm) обязательно быть резидентной или есть какие-то другие механизмы? 2) если в программе будут недокументированные функции DOS, будут ли они корректно работать в MicroPC?
Если кто программировал на данных MicroPC прошу поделиться опытом.
Заранее огромное спасибо!
Вопрос отправлен: 14.05.2004, 00:11
Отправитель: Эдуард (hied345@mail.ru)
[Следующий вопрос >>] [Список вопросов]
Отвечает _vt
Приветствую Вас, Эдуард!
> должна ли быть программа (C, Asm) обязательно быть резидентной или есть какие-то другие механизмы?
Если этот PC используется только для твоей задачи, то можно сделать обычную программу - пусть бесконечно работает! :) Есть еще механизм
драйверов... А в чем проблема?
> если в программе будут недокументированные функции DOS, будут ли они корректно работать в MicroPC?
Если их поддерживает этот DOS, то будут. Но лучше не рисковать. :) И зачем использовать недокументированые функции?
> Если кто программировал на данных MicroPC прошу поделиться опытом.
Я не программировал, но если он действительно совместим с MS-DOS, то никаких особых проблем возникнуть не должно.
E-Man : Life begins at 1000Mhz!
Ответ отправлен: 16.05.2004, 21:51
Отправитель: _vt
Вопрос № 5271 |
Здравствуйте! Подскажите, пожалуйста, как можно измерить время выполнения программы либо в тактах проца, либо в миллисекундах?
Вопрос отправлен: 14.05.2004, 12:12
Отправитель: dimon1979 (dimon4386@yandex.ru)
[Следующий вопрос >>] [Список вопросов]
Отвечает Foamplast
Приветствую Вас, dimon1979!
Есть такая команда: Read Time-Stamp Counter. Она считывает число из 64-разрядного счётчика тактов. Он увеличивается с каждым тактом и обнуляется при перезагрузке. Младшая часть этого счётчика после выполнения команды попадает в регистр Eax, страшая - в Edx. Обозначается команда RDTSC.
Ответ отправлен: 16.05.2004, 02:04
Отправитель: Foamplast
Отвечает Pawel
Приветствую Вас, dimon1979!
В тактах: посчитайте суммарный вес блока комманд(в байтах) и разделите на разрядность проца. Получите результат для реального режима проца.
Ответ отправлен: 15.05.2004, 20:58
Отправитель: Pawel
Отвечает Artemy
Доброе время суток, dimon1979!
Да
Ответ отправлен: 14.05.2004, 16:30
Отправитель: Artemy
Вопрос № 5272 |
Добрый день!
я хотел бы больше узнать про видеоускорители,
а именно про аппаратное ускорение.
как я понимаю, когда я посылаю команду OpenGL,
то винда крутит-вертит её, а потом отправляет
видеоускорителю (если он есть), вместо того, чтобы делать это всё через процессор.
видеоускоритель имеет спец. микорсхемы, которые и
обрабатывают все эти полигоны и освещение,
причём в память они лазят в обход ЦПУ, а потом карта
выводит уже готовые объекты прямо в видеопамять.
правильно ли я понял работу видеоускорителя?
Вопрос отправлен: 14.05.2004, 17:03
Отправитель: soflot (soflot@ukr.net)
[Следующий вопрос >>] [Список вопросов]
Отвечает Foamplast
Здравствуйте, soflot!
Да, я думаю, не хуже меня.
Ответ отправлен: 16.05.2004, 02:05
Отправитель: Foamplast
Отвечает Pawel
Доброе время суток, soflot!
В обшем так.
Ответ отправлен: 15.05.2004, 21:01
Отправитель: Pawel
Отвечает Евгений Иванов
Здравствуйте, soflot!
Да, правильно.
* EMan: -=- Любовь существует! =-=
Ответ отправлен: 15.05.2004, 00:22
Отправитель: Евгений Иванов
Отвечает _vt
Здравствуйте, soflot!
Как-то муторно... :-)
OpenGL - это кросс-платформенное API для работы с графикой. В зависимости от реализации на конкретной платформе, программа, написанная с использованием OpenGL, может как задействовать аппаратные возможности видеоускорителя, так и нет. Например, в Windows, OpenGL API был реализован программно, а для нормальной работы игр и прочей графики OpenGL, надо было отдельно устанавливать драйвера OpenGL для конкретной видеокарты. Например, для видеокарт nVidia, файл opengl32.dll и ему сопутствующие, входят в комплект драйверов видеокарты. Реализация от nVidia использует расширенные возможности CPU (MMX,SSE и пр.), использует аппаратные возможности видеокарты и ее процессора (GPU). GPU обрабатывает "все эти полигоны и освещение" с использованием системной памяти и памяти видеокарты. Полностью "в обход" CPU он не работает.
E-Man : Life begins at 1000Mhz!
Ответ отправлен: 16.05.2004, 21:51
Отправитель: _vt
Вопрос № 5273 |
Где можно найти исходник или хотя бы алгоритм перехода в ring0 под W2K?
Вопрос отправлен: 14.05.2004, 20:00
Отправитель: Dart Bobr (bnv@chtei.cv.ua)
[Следующий вопрос >>] [Список вопросов]
Отвечает Pawel
Добрый день, Dart Bobr!
Интересно, а слыхал ли Foamplast про драйвера (sys например), и про то, что они работают именно в ring-0????!!!!
Есть интересный пример, написанный Kevin Zheng (Zheng Hongwen) на FASM, переводящий приложение (EXE) под Win32 в ring-0? с использованием sys драйвера.
Если интересно пиши мне, или загляни на
http://board.flatassembler.net/
Ответ отправлен: 16.05.2004, 14:09
Отправитель: Pawel
Отвечает _vt
Доброе время суток, Dart Bobr!
В интернете. Точно есть ;)
E-Man : Life begins at 1000Mhz!
Ответ отправлен: 16.05.2004, 21:52
Отправитель: _vt
Отвечает Foamplast
Добрый день, Dart Bobr!
Ха-ха-ха. В ring0. Ха-ха. Хоть винда и не лучшая система, а вот в ring0, скорее всего, не пустит. (я не рассматриваю полукровок 9Х). Пишите драйвер. Пусть пользователь его сам ставит. Или программа ставит (если у пользователя есть такие права).
P.S. Если найдёте такой исходник, обязательно пришлите его мне!
P.P.S. А чего это всем так в ring0 хочется, там что бананы на пальмах, или деньги мешками? На мой взгляд, там совершенно неуютно.
Ответ отправлен: 16.05.2004, 02:06
Отправитель: Foamplast
Отвечает Евгений Иванов
Приветствую Вас, Dart Bobr!
В ней самой же.
* EMan: -=- Любовь существует! =-=
Ответ отправлен: 15.05.2004, 00:23
Отправитель: Евгений Иванов
Вопрос № 5274 |
продолжение вопроса 5252
Спасибо за то, что стали мне помогать. Я кусок дописал, но у меня опять ничего не получается,исправьте, пожалуйста, ошибки или подскажите в чем они, заключаются.
Приложение:
Вопрос отправлен: 14.05.2004, 20:36
Отправитель: Саша (zevskl@tut.by)
[Следующий вопрос >>] [Список вопросов]
Отвечает Pawel
Доброе время суток, Саша!
Много ошибок.
Ответ отправлен: 16.05.2004, 14:12
Отправитель: Pawel
Отвечает Евгений Иванов
Здравствуйте, Саша!
Ошибки одна на другой.
И все глупые - то тут перепутано, то здесь забыто.
Ищи и исправляй - только если ты сам будешь это учиться делать, станешь настоящим программстом.
Скажу лишь, что 61h порт нужно сначала устанавливать 7 бит, а потом сбрасывать.. а не исходное.
Удачи!
* EMan: -=- Любовь существует! =-=
Ответ отправлен: 15.05.2004, 00:24
Отправитель: Евгений Иванов
Вопрос № 5275 |
Здравствуйте, уважаемые эксперты! Спасибо за предыдущие ответы.
Ответьте, пожалуйта, почему следующие строки эквивалентны
mov a,offset ddd
(1)mov cs:[a],0ffh
(2)mov a,0ffh
a dw ?
ddd:
(1) строка должна записывать по адресу метки ddd число 0xff, а (2) должна в переменнюу записывать 0xff (по моей логике). Я рассуждаю так: переменная 'a' хранить смещение, так почему нельзя записать так как записано в строке (1). Меня удивило, что под отладчиком эти строки эквивалентны!?
word ptr cs:[...]. И что такое это значит. Я понимаю, что это указатель на слово по адресу cs:[...]. Но почему ассемблер в строке (2) не делает, что я хочу. Все... я заговорился от непонимания... Объясните, пожалуста.Если можно поподробнее.
Спасибо.
Вопрос отправлен: 14.05.2004, 21:29
Отправитель: Alexander
[Следующий вопрос >>] [Список вопросов]
Отвечает Foamplast
Добрый день, Alexander!
Предисловие: Все заданные вопросы происходят из-за неоднозначности синтаксиса ассемблера для x86, предложенного в своё время Intel. Конечно, же, умные люди были всегда, и есть синтаксис, с которым бы у Вас не возникло таких вопросов - это синтаксис AT&T. К сожалению, он не поддерживается microsoft, а потому не распространён под DOS/Windows. В настоящее время уже осознали эту проблему, и существуют ассемблеры без такой ерунды: NASM и FASM. Используйте их!
Ответ: Всё дело в том, что в синтаксисе Intel [address] означают обращение к памяти по адресу address. То есть Mov [25], Al означает "поместить значение регистра Al в ячейку памяти под номером 25". С этим у Вас всё ОК. Но прикол в том, что Mov a, 5 значит "занести
5 в ячейку памяти, под номером, соответствующим переменной а"! То есть Mov a, 5 и Mov [a], 5 - это одно и то же! Соответственно обе Ваши команды заносят 0хFF в переменную а. Чтобы заполнить ячейку ddd, пишите либо Mov [ddd], 0xff, либо
Mov Eax, offset ddd
Mov [Eax], 0xff
Ответ отправлен: 18.05.2004, 04:04
Отправитель: Foamplast
Отвечает Ayl
Доброе время суток, Alexander!
Как это эквивалентны? Нифига не эквивалентны.
mov a, offset ddd эквивалентно mov ds:[a], offset ddd - записывает в переменную a смещение метки ddd. Адресация выполняется через сегментный регистр ds. Т.к. у тебя скорее всего программа типа COM, то значения регистров CS и DS совпадают.
Команда (1) должна при компиляции выдавать предупреждение о необходимости указания размера операндов. Вообще-то она должна выглядеть так: mov word ptr cs:[a], 0ffh. И производит она запись в переменную a значения 00FFh.
Команда (2) эквивалентна команде (1) в режиме MASM. В этом режиме для доступа к переменным можно не указывать квадратные скобки. Я не люблю такую запись. Если использовать компилятор TASM в режиме IDEAL, то команда (2) вызовет ошибку синтаксиса, там нужно использовать запись, подобную (1).
Кстати, насчет эквивалентности я не совсем прав, они эквивалентны только при условии равенства значений регистров CS и DS. А так, во-первых, команда (1) требует на 1 байт больше за счет применения префикса переопределения сегмента (cs), а во-вторых, команда (2) использует для обращения к памяти регистр DS.
Насчет того, что (1) должна записывать по адресу метки ddd число 0ffh - это ты не прав. Чтобы сделать то, что ты хочешь, надо бы написать что-то типа такого:
mov byte ptr cs:[[a]], 0ffh
но такой команды не существует! Косвенно-косвенной адресации в процессорах Intel нет! И сомневаюсь, что она может быть в каком-либо другом процессоре. Чтобы сделать то, что ты хочешь, надо писать так:
lea si, ddd ; эквиваленно mov si, OFFSET ddd
mov byte ptr cs:[si], 0ffh
Ответ отправлен: 17.05.2004, 16:32
Отправитель: Ayl
Отвечает Евгений Иванов
Доброе время суток, Alexander!
Это тебе не С плюс плюс ;))
Тут нет указателей и прочей херни.
Есть только адрес и всё.
mov a,offset ddd - занесёт по адресу [a] число, которое представляет собой адрес метки ddd.
Дальше идём...
(1) занесёт в переменную a, которая слово, число 255.
(2) тоже самое.
Чтобы тебе сделать то, что ты хочешь, делай так:
mov [a], offset ddd
...
mov si,[a]
mov [si], word ptr 255 или mov [word ptr si], 255
Бывай!
* EMan: -=- Любовь существует! =-=
Ответ отправлен: 15.05.2004, 00:24
Отправитель: Евгений Иванов
Отвечает Стас
Доброе время суток, Alexander!
Запутанно-то как!
mov a,offset ddd
1)mov cs:[a],0ffh
2)mov a,0ffh
Совсем не эквивалентны, если DS указывает на другой сегмент.
По умолчанию, именно он используется для адресации данных.
Или речь идет о том, что ты сначала в ячейку памяти А запихиваешь какой-то Offset, а потом в неё же (но через CS) уже байтовое значение.
А хотел адресовать память через адрес в памяти? Т.е. примеро так mov [offset [a]],0ffh. Так нельзя. Загрузи в аресные регистры offset, через них адресуй, они для этого и существуют.
Ответ отправлен: 15.05.2004, 04:36
Отправитель: Стас
Вопрос № 5276 |
Добрый день!
Вопрос к знатокам ASM'a нужно преобразовать число в строку для вывода на экран, т.е. я в проге вычисляю некоторые данные, а вто с выводом проблемы так как не преобразовал вывод. Вот кусок моего вывода:
mov ah,40h ;Запрос на вывод
mov bx,01 ;Выводное устройство
mov cx,2 ;Макс.число байт
lea dx,[y1] ;Адрес области данных
int 21h ;Вызов DOS
Вопрос отправлен: 14.05.2004, 21:27
Отправитель: Владислав
[Следующий вопрос >>] [Список вопросов]
Отвечает Foamplast
Приветствую Вас, Владислав!
Посмотрите архив рассылки. Этот вопрос задают каждую неделю.
Ответ отправлен: 18.05.2004, 04:05
Отправитель: Foamplast
Отвечает VOVAN
Приветствую Вас, Владислав!
вот вывод НЕХ числа на экран. если надо вывести десятичное, могу и для десятичного кинуть. тут число должно быть в АХ.
mov cx,4
mov bx,16
loops:
xor dx,dx
div bx
push dx
loop loops
mov cx,4
loops1:
pop dx
cmp dl,10
jae bukva
cifra:
add dl,'0'
jmp prints
bukva:
add dl,'A'-10
prints:
mov al,dl
int 29h
loop loops1
Ответ отправлен: 14.05.2004, 22:16
Отправитель: VOVAN
Отвечает Стас
Приветствую Вас, Владислав!
В общих чертах, если нужно перевести число в регистре AX в символьную строку:
1) проверяешь AX=0 - завершение перевода.
2) делишь AX на 10.
3) К остатоку от деления (0..9) прибавляешь код 30h - получашь символ от '0' до '9'.
4) Помещаешь его в строку которая готовится к выводу на экран.
Единственное, помни, что ты идешь от послених цифр числа к началу. И сохранять надо также. От конца к началу.
Напр.: 1234 / 10 = 123(остаток 4) /10 = 12(остаток 3) /10 = 1(остаток 2)/10 = 0(конец цикла)(остаток 1).
Если так и вывести получишь 4321.
Вообще этот вопрос регулярно здесь мусолится. Смотри архив.
Ответ отправлен: 15.05.2004, 04:17
Отправитель: Стас
Вопрос № 5277 |
Доброе время суток, уважаимые знатоки!
Скажите пожалуска, как можно сделать резидентную програму для блокировки некоторих программ (опцыонально). Дайте ссилочку на исходник пожалусто.
Вопрос отправлен: 15.05.2004, 03:04
Отправитель: OL
[Следующий вопрос >>] [Список вопросов]
Отвечает Foamplast
Доброе время суток, OL!
Можно написать оболочку, которая будет передавать команды настоящей оболочке, анализируя их. Если введена ненужная команда, можно выдать соответствующее сообщение.
Ответ отправлен: 18.05.2004, 23:45
Отправитель: Foamplast
Отвечает Pawel
Доброе время суток, OL!
Под какую ОС? Что значит блокировка программ.
Блокировка запуска? Или блокировка обращений к памяти? Или приостановка выполнения программы?
Опишите точнее.
Ответ отправлен: 16.05.2004, 14:18
Отправитель: Pawel
Отвечает flasher
Доброе время суток, OL!
исходники резидентов в инете полно... возьму.. и под ся найтрой...
вот http://www.codenet.ru/progr/asm/vwd/index.php
Ответ отправлен: 15.05.2004, 09:43
Отправитель: flasher
Форма отправки вопроса |
Мы рекомендуем открывать рассылку в программе Internet Explorer 5.0+ или отправлять вопросы с сайта по адресу: http://rusfaq.ru/cgi-bin/Message.cgi.
(C) 2002-2003 Команда RusFAQ.ru.
Вопрос и дополнение |
Ваш вопрос:
Приложение (если необходимо):
Получить ответов:
Выбор рассылки |
Программисту Assembler (24) C / C++ (14) Perl (2) Builder / Delphi (16) Pascal (18) Basic / VBA (2) Java / JavaScript (3) PHP (11) Криптография (5) WinAPI (7) Радиоэлектроника (5) |
Пользователю Windows 95/98/Me (36) Windows NT/2000/XP (50) "Железо" (28) Поиск информации (15) |
Администратору Windows NT/2000/XP (24) Linux / Unix (8) |
Юристу Гражданское право (9) Семейное право (7) Трудовое право (8) КоАП (6) |
Отправить вопрос всем экспертам выбранной рассылки.
Проект экспертов RusFAQ.ru | Фотоальбом | Virus.RusFAQ.ru | Администрирование
Профессиональная WEB-Студия B.I.T.
http://subscribe.ru/
E-mail: ask@subscribe.ru |
Отписаться
Убрать рекламу |
В избранное | ||