Рассылка закрыта
При закрытии подписчики были переданы в рассылку "RFpro.ru: Ассемблер? Это просто! Учимся программировать" на которую и рекомендуем вам подписаться.
Вы можете найти рассылки сходной тематики в Каталоге рассылок.
RusFAQ.ru: программирование на языке Assembler
Информационный Канал Subscribe.Ru |
RusFAQ.ru: программирование на языке Assembler
Выпуск № 743
от 24.06.2004, 02:00
Администратор: Имя: Калашников О.А. URL: Информационный ресурс ICQ: 68951340 Россия, Москва |
О рассылке: Задано вопросов: 5498 Отправлено ответов: 15011 Активность: 273.0 %
|
Список экспертов, ответы которых опубликованы в данном выпуске |
Стас Статус: Опытный Общий рейтинг: 129.52 [Подробней >>] |
bocha Статус: Опытный Общий рейтинг: 149.38 [Подробней >>] |
Ayl Статус: Профессиональный Общий рейтинг: 116.71 [Подробней >>] |
_vt Статус: Профессиональный Общий рейтинг: 118.63 [Подробней >>] |
flasher Статус: Начальный Общий рейтинг: 104.3 [Подробней >>] |
Bob Johnson Статус: Профессиональный Общий рейтинг: 137.94 URL: Программирование [Подробней >>] |
ASMодей Статус: Профессиональный Общий рейтинг: 111.48 [Подробней >>] |
Portnov Статус: Профессиональный Общий рейтинг: 105.41 URL: Мой сайтик... [Подробней >>] |
Gibbel Статус: Профессиональный Общий рейтинг: 105.21 URL: Savage Metal Club - жизнь в стиле рок-н-ролл Телефон: +7 901 710 3146 [Подробней >>] |
Краткий перечень вопросов |
Вопрос № 5469. Здравствуйте уважаемые эксперты!!! Нет ли у кого программы для рассылки факсов??? Или немогли бы вы ... (ответов: 1)
Вопрос № 5471. Здравствуйте уважаемые эксперты!!! Немогли бы вы рассказать о прирывании int 3(противоотладочное), т... (ответов: 3)
Вопрос № 5472. Здравствуйте, Эксперты. Ответьте, пожалуйста, на такой вопрос: - Как реализованы операторы new & del... (ответов: 3)
Вопрос № 5473. Как можно воспользоваться возможностями аппаратного ускорения (DirectDraw)скажем из под DOS'а (напря... (ответов: 1)
Вопрос № 5474. Доброе утро уважаемые эксперты!!!! Уменя два вопроса по socket`ам?? 1)как програмно можно определит... (ответов: 2)
Вопрос № 5476. Помогите найти программу для написания программу к сденду по проверке правильности монтажа жгутов эл... (ответов: 1)
Вопрос № 5477. Здравствуйте Эксперты: Подскажите пожалуйста как делить и умножать числа в двоичном коде. Знаю что ... (ответов: 1)
Вопрос № 5478. Здравствуйте уважаемые эксперты. У меня при работе с видео буфером программы нормально работают толь... (ответов: 4)
Вопрос № 5479. Добрый день уважаемые экперты!!! Меня интересут вопрос, как консольная программа обрабатывает сообще... (ответов: 2)
Вопрос № 5480. Здравствуйте, уважаемые эксперты! Как делается оптимизация программ написанных на языках высокого ур... (ответов: 3)
Вопрос № 5481. Добрый вечер! Где можно найти описание скорости выполнения инструкций для процессора P III. Alex... (ответов: 2)
Вопрос № 5482. Здравствуйте. Я только начинаю программировать на Ассемблере. У меня вопрос по определениям сегметов... (ответов: 1)
Вопрос № 5483. Hotelos bi uznat kakimi IDE polzujutsja opitnie assembler-programmeri???? Nazowite pls takoj Tool, z... (ответов: 3)
Вопросов: 13, ответов: 27
Вопрос № 5469 |
Здравствуйте уважаемые эксперты!!!
Нет ли у кого программы для рассылки факсов???
Или немогли бы вы подсказатьт какие функции нужны для этого!!
С уважением Ujin!!!!
Вопрос отправлен: 16.06.2004, 17:57
Отправитель: Ujin (twixt@rambler.ru)
[Следующий вопрос >>] [Список вопросов]
Отвечает Стас
Приветствую Вас, Ujin!
Во первых, не в ту рассылку попал.
Во вторых, таких прог пруд пруди, если с модемом не шло, попробуй VentaFax. Люди советуют.
Ну и в третьих, о каких функциях идет речь? Модемных? Ты не знаешь может ли твой модем посылать факсы?
Ответ отправлен: 16.06.2004, 23:03
Отправитель: Стас
Вопрос № 5471 |
Здравствуйте уважаемые эксперты!!!
Немогли бы вы рассказать о прирывании int 3(противоотладочное), т.к. некакой литературы о нём я ненашёл, если можно поподробнее!!
С уважением Ujin!!!
Вопрос отправлен: 16.06.2004, 18:02
Отправитель: Ujin (twixt@rambler.ru)
[Следующий вопрос >>] [Список вопросов]
Отвечает Стас
Приветствую Вас, Ujin!
Точно говорит bocha, прерывание отладочное.
Когда процессор встречает код 0cch (что значит INT3) тогда и просходит это самое прерывание.
Многие дебаггеры когда ты ставишь где-то в программе "точку останова" ставят вместо команды в это место программы int3. И всё. А сами висят на INT3 ждут...
Для противотладки это прерывание используют например так:
Перехватывают INT3 ставят на него свой код который модифицирует программу, и время от времени вызывают. Теперь если отладчик всеже забрет INT3, он конечно же не модифицирует программу, а если не заберет, то и остановится в поставленной им точке останова не сможет.
А зачем это тебе надо-то? Все равно если не последний лох смотрит твою программу он обойдет всю эту противоотладку.
Ответ отправлен: 16.06.2004, 22:41
Отправитель: Стас
Отвечает bocha
Добрый день, Ujin!
Это прерывание не противо, а отладочное. Вызывается в точке останова.
Ответ отправлен: 16.06.2004, 18:18
Отправитель: bocha
Отвечает Ayl
Здравствуйте, Ujin!
Ну, не противоотладочное, а отладочное. А что про него рассказывать? Когда процессор встречает его, он осуществляет переход на адрес, указанный в 3-ем векторе. И все.
Обычно отладчики вставляют эту команду в место, указанное как BreakPoint.
Ответ отправлен: 17.06.2004, 17:38
Отправитель: Ayl
Вопрос № 5472 |
Здравствуйте, Эксперты.
Ответьте, пожалуйста, на такой вопрос:
- Как реализованы операторы new & delete, например, в Си.
Если можно, то поподробнее опишите процесс работы с динамической
памятью в ассемблере.
Вопрос отправлен: 16.06.2004, 19:18
Отправитель: Nimnull
[Следующий вопрос >>] [Список вопросов]
Отвечает _vt
Здравствуйте, Nimnull!
Язык С является платформенно-независимым, поэтому реализация его функций и операторов различна в разных операционных системах и архитектурах процессоров, да и у разных производителей. Если рассматривать Win32, то new и delete являются обертками над API-функциями работы с кучей HeapAlloc, HeapFree и пр. При программировании на ассемблере под Win32, тебе надо вручную вызывать эти функции.
* Origin : Life begins at 1000Mhz!
Ответ отправлен: 19.06.2004, 11:32
Отправитель: _vt
Отвечает bocha
Приветствую Вас, Nimnull!
В си они никак не реализованы, их там попросту нет, в VC++ они реализованы через LocalAlloc, LocalFree, как в других компиляторах, не знаю. Принцип работы с динамической памятью везде одинаков: выделяешь память, инициализируешь по необходимости, работаешь, удаляешь. В вопросе Надо было указать ос, ответ был бы подробнее.
Ответ отправлен: 16.06.2004, 20:12
Отправитель: bocha
Отвечает Ayl
Здравствуйте, Nimnull!
Как-как. При старте программы вся неиспользованная память объявляется кучей. При запросе на выделение памяти из этой кучи выделется область нужного размера и указатель свободного места в куче перемещается ближе к концу. При операции delete освобожденная память возвращается в кучу. При этом может производиться операции сборки мусора. А может и не производиться.
А на асме тебе это придется писать самому
Ответ отправлен: 17.06.2004, 17:44
Отправитель: Ayl
Вопрос № 5473 |
Как можно воспользоваться возможностями аппаратного ускорения (DirectDraw)скажем из под DOS'а (напрямую работая с видюхой)?
Вопрос отправлен: 17.06.2004, 02:05
Отправитель: GREY (__grey__@rambler.ru)
[Следующий вопрос >>] [Список вопросов]
Отвечает bocha
Доброе время суток, GREY!
DirectDraw-библиотека Windows.
Вычислительные ф-ции ускорителей можно использовать только в PM, так что будет необходим какой-нибуть дос-расширитель. Ищи информацию по VESA VBE
Приложение:
Ответ отправлен: 17.06.2004, 10:52
Отправитель: bocha
Вопрос № 5474 |
Доброе утро уважаемые эксперты!!!!
Уменя два вопроса по socket`ам??
1)как програмно можно определить открыт(закрыт) порт.
2)как открыть(закрыть) порт!!!
Вопрос отправлен: 17.06.2004, 09:32
Отправитель: Ujin (twixt@rambler.ru)
[Следующий вопрос >>] [Список вопросов]
Отвечает flasher
Здравствуйте, Ujin!
1)открыт порт у ся, или у удалённого компа?
Если у удалённого компа, то конектся, если вернёт SOCKET_ERROR - то порт закрыт.
invoke connect, sock, addr sin, sizeof sin
cmp eax,SOCKET_ERROR
jz __ErrorConnect
2)В инете полно полезной литературы по сокетам.
http://forum.web-hack.ru/index.php?showtopic=6328
Ответ отправлен: 17.06.2004, 11:29
Отправитель: flasher
Отвечает bocha
Здравствуйте, Ujin!
Use Ws2_32.lib
Приложение:
Ответ отправлен: 17.06.2004, 11:55
Отправитель: bocha
Вопрос № 5476 |
Помогите
найти
программу для
написания
программу
к
сденду
по
проверке
правильности
монтажа
жгутов
электропроводки
автомабилей
стенд
называется
Лоция.
Вопрос отправлен: 17.06.2004, 22:37
Отправитель: Николай (ni-kurov@mail.ru)
[Следующий вопрос >>] [Список вопросов]
Отвечает bocha
Доброе время суток, Николай!
А клавишу <Ctrl> одновременно с пробелом можно использовать? Или на худой конец в блокноте текст набрать, скопировав в последствии в форму отправки вопроса, а лучше всего воспользоваться word'ом, и после набора в нем вопроса проверить грамматику.
А
то
читать
вопрос
в
столбик,
да
еще
и
с
ажипками
напрягает.
Ответ отправлен: 18.06.2004, 06:09
Отправитель: bocha
Вопрос № 5477 |
Здравствуйте Эксперты:
Подскажите пожалуйста как делить и умножать числа в двоичном коде. Знаю что существует 4 метода деления и 2 метода умножения чисел в 2-ном коде. Буду очень признателен статьям, ссылкам или другой документации...
Спасибо!
Вопрос отправлен: 18.06.2004, 03:36
Отправитель: oscar (evanescence@hitv.ru)
[Следующий вопрос >>] [Список вопросов]
Отвечает bocha
Приветствую Вас, oscar!
Число оно и есть число, компьютер все делает в двоичном коде, а если в двоичной системе счисления - то все тоже самое, что и в десятичной:
способ 1 - в уме
способ 2 - на бумаге в столбик
способ 3 - с помощью калькулятора
способ 4 - с помощью друга, который знает первые 3 способа
способ 5 - написать специальную программу
можно придумать еще несколько способов и все эти способы будут подходить как для умножения, так и для деления, а Вы говорите о каких-то 2+4.
Ну а если более серьезно, то для умножения целых чисел используются команды mul, imul, fimul для деления - div, idiv, fidiv, fidivr, еще есть команды для умножения/деления вещественных чисел, и все это делается в двоичном коде. То как использовать эти команды можно найти в любом учебнике по ассемблеру. Или м.б. Вам нужно узнать способы работы с числами в формате BCD? М.б. более точно сформулируете вопрос?
Ответ отправлен: 18.06.2004, 06:37
Отправитель: bocha
Вопрос № 5478 |
Здравствуйте уважаемые эксперты.
У меня при работе с видео буфером программы нормально работают только в режиме отлодчика,а при обычном запуске на экран ничего не выводится.
Спасибо!
Вопрос отправлен: 18.06.2004, 11:45
Отправитель: V@nes
[Следующий вопрос >>] [Список вопросов]
Отвечает bocha
Здравствуйте, V@nes!
Какие программы, в какой системе, в каком отладчике, с чьим буфером? Твоим, видеокарты, отображением буфера видеокарты на программу? Вопрос уточните.
Ответ отправлен: 18.06.2004, 13:00
Отправитель: bocha
Отвечает Ayl
Добрый день, V@nes!
А ты не под XP, случайно, работаешь?
Если да, то в начале программы надо обязательно установить режим, например
mov ax, 3
int 10h
иначе по умолчанию не та страница отображается на экран.
Ответ отправлен: 18.06.2004, 15:17
Отправитель: Ayl
Отвечает Стас
Доброе время суток, V@nes!
Текст давай.
Ответ отправлен: 18.06.2004, 14:00
Отправитель: Стас
Отвечает Bob Johnson
Здравствуйте, V@nes!
под хр есть такая проблема с дос программами, которая устраняется вставкой в начало
mov ax, 3
int 10h
(вообще же см. в faq на моей странице)
* EMan1.5: ---===*** The game we play ***===---
Ответ отправлен: 22.06.2004, 01:13
Отправитель: Bob Johnson
Вопрос № 5479 |
Добрый день уважаемые экперты!!!
Меня интересут вопрос, как консольная программа обрабатывает сообщения, которые ей посылает WIN.
В обычной программе есть специальная функция, а в консольных...
С уважением Ujin!!!
Вопрос отправлен: 18.06.2004, 13:31
Отправитель: Ujin (twixt@rambler.ru)
[Следующий вопрос >>] [Список вопросов]
Отвечает bocha
Приветствую Вас, Ujin!
можно так(правда на си, но если для винды большой разницы нет, и относится вопрос скорее к категории API нежели к языкам программирования):
#include <windows.h>
BOOL CtrlHandler(DWORD fdwCtrlType);
int main()
{
HANDLE hStdin = GetStdHandle(STD_INPUT_HANDLE),
hStdOut = GetStdHandle(STD_OUTPUT_HANDLE);
DWORD cNumRead, fdwMode, fdwSaveOldMode;
INPUT_RECORD irInBuf[128];
if(hStdin == INVALID_HANDLE_VALUE) return 1;
if(! GetConsoleMode(hStdin, &fdwSaveOldMode)) return 1;
fdwMode = ENABLE_WINDOW_INPUT | ENABLE_MOUSE_INPUT;
if(! SetConsoleMode(hStdin, fdwMode)) return 1;
if(!SetConsoleCtrlHandler( (PHANDLER_ROUTINE) CtrlHandler, TRUE ))return 1;
while (true)
{
if (! ReadConsoleInput( hStdin, irInBuf, 128, &cNumRead))return 1;
for (DWORD i = 0; i < cNumRead; i++)
{
switch(irInBuf[i].EventType)
{
case KEY_EVENT:
Beep( 100, 200 );
WriteConsole(hStdOut,"Key ", 4, 0, 0);
break;
case MOUSE_EVENT:
WriteConsole(hStdOut,"Mouse ", 6, 0, 0);
break;
case WINDOW_BUFFER_SIZE_EVENT:
WriteConsole(hStdOut,"Buffer ", 7, 0, 0);
break;
case FOCUS_EVENT:
WriteConsole(hStdOut,"Focus ", 6, 0, 0);
case MENU_EVENT:
WriteConsole(hStdOut,"MenuMumuITobu ", 14, 0, 0);
break;
default:
break;
}
}
}
return 0;
}
BOOL CtrlHandler( DWORD fdwCtrlType )
{
switch( fdwCtrlType )
{
case CTRL_BREAK_EVENT:
Beep( 1000, 200 );
WriteConsole(GetStdHandle(STD_OUTPUT_HANDLE),"Ctrl-Break ", 11, 0, 0);
return FALSE;//выход из программы
case CTRL_CLOSE_EVENT:
Beep( 600, 200 );
WriteConsole(GetStdHandle(STD_OUTPUT_HANDLE),"Ctrl-Close ", 11, 0, 0);
}
return TRUE;
}
Ответ отправлен: 18.06.2004, 15:55
Отправитель: bocha
Отвечает Bob Johnson
Добрый день, Ujin!
Для этого есть функция SetConsoleCtrlHandler
* EMan1.5: ---===*** The game we play ***===---
Ответ отправлен: 22.06.2004, 01:14
Отправитель: Bob Johnson
Вопрос № 5480 |
Здравствуйте, уважаемые эксперты!
Как делается оптимизация программ написанных на языках высокого уровня. Сначала программа проходит через дизассемблер, а потом оптимизируется?
Вопрос отправлен: 18.06.2004, 20:05
Отправитель: Alexander
[Следующий вопрос >>] [Список вопросов]
Отвечает Ayl
Здравствуйте, Alexander!
Совсем не так. Вначале определяется, что именно будет оптимизироваться. Делается это, обычно, с помощью профилировщика, т.е. программы, которая позволяет расписать аремена выполнения отдельных частей программы и количество обращений к той или иной процедуре.
Теперь, ориентируясь на полученные данные, преобразуются наиболее медленные и часто вызываемые части. Для этого либо выбирается более подходящий и быстрый алгоритм, либо производится переписывание кода на асме.
А с дизассемблером возиться никто не будет. Это глупо.
Ответ отправлен: 20.06.2004, 16:20
Отправитель: Ayl
Отвечает bocha
Приветствую Вас, Alexander!
Сначала находится оптимальный алгоритм. Затем, при помощи профилировщика, оптимизируется код на языке высокого уровня. Затем, если компилятор позволяет, включается листинг ассемблера и оптимизируется. Затем включается встроенная оптимизация. Если эти методы оптимизации не принесут существенного результата, то никакой дизасемблер не поможет.
Ответ отправлен: 18.06.2004, 21:34
Отправитель: bocha
Отвечает Bob Johnson
Здравствуйте, Alexander!
Оптимизации обычно подлежит не вся программа, а ее участок, который выполняется наиболее медленно и является неким bottleneck. При оптимизации для этого участка может быть выбран другой (более быстрый алгоритм) или другая (более быстрая, например, за счет использования доп. ресурсов процессора) реализация этого алгоритма. Для анализа, какой участок алгоритма занимает больше всего времени используют профилировщики.
* EMan1.5: ---===*** The game we play ***===---
Ответ отправлен: 22.06.2004, 01:11
Отправитель: Bob Johnson
Вопрос № 5481 |
Добрый вечер!
Где можно найти описание скорости выполнения инструкций для процессора P III.
Alexej.
Вопрос отправлен: 18.06.2004, 22:38
Отправитель: Alexej
[Следующий вопрос >>] [Список вопросов]
Отвечает ASMодей
Доброе время суток, Alexej!
Да, наверное, нигде уже. Прошло то время, когда выполнение команд измерялось тактами. На современных процессорах за один такт вполне может выполняться несколько команд, причем время их выполнения довольно сильно зависит от порядка их расположения в программе.
Ответ отправлен: 21.06.2004, 14:34
Отправитель: ASMодей
Отвечает bocha
Приветствую Вас, Alexej!
на интел.ком
Ответ отправлен: 18.06.2004, 23:45
Отправитель: bocha
Вопрос № 5482 |
Здравствуйте. Я только начинаю программировать на Ассемблере. У меня вопрос по определениям сегметов кодов, данных. стека... Вобщем самое начало программы. Я уже кучу книг прочитал, но этот вопрос там не разбирается. Вы не могли бы мне помочь. Написать как это делается или ссылку на сайт с книгой дать в которой это есть. Заранее спасибо.
Вопрос отправлен: 18.06.2004, 22:40
Отправитель: Druid
[Следующий вопрос >>] [Список вопросов]
Отвечает bocha
Здравствуйте, Druid!
Для MASM:
;----------------------------------------------------
;dos com
.model tiny;модель памяти
option casemap:none;директива, предписывающая различать прописные и строчные буквы в идентификаторах, необязательна
.code;начало сегмента (один для данных и кода)
.386;используемые инструкции(если поставить выше .code, то сегмент будет считаться 32-разрядным)
org 100h;директива для ассемблера, все адреса смещаются назаданую величину, дос размещает код начиная с этого адреса
;здесь пишешь сой код и размещаешь данные
end; конец программы
;----------------------------------------------------
;exe DOS
dosseg
.model small
option casemap:none
.stack 200h;задаем размер стека
.data
;здесь размещаешь данные
.code
.386
assume cs:@code, ds:@data, ss:@stack
;здесь размещаешь код
start:;точка входа в программу(имя метки может быть любым)
;здесь размешаешь код
end start; конец программы с точкой входа start(после загрузки программы дос передает управление на метку, указанную в этой директиве, в случае, если программа должна выполнятся с первой инструкции, то метку можно не указывать)
;---------------------
;exe windows
.386;сегменты 32-разрядные
.model flat, stdcall
option casemap :none
.data
.code
start:
end start
Ответ отправлен: 19.06.2004, 12:12
Отправитель: bocha
Вопрос № 5483 |
Hotelos bi uznat kakimi IDE
polzujutsja opitnie assembler-programmeri????
Nazowite pls takoj Tool, zto rabotaet bez Bugov
na Win2000, gibko nastraiwaetsja i intuitivno ponjaten.
Zaranee blagodaren!
Вопрос отправлен: 20.06.2004, 01:59
Отправитель: ParakleT
[Следующий вопрос >>] [Список вопросов]
Отвечает Portnov
Добрый день, ParakleT!
Честно - вряд ли кто-то здесь пользуется IDE (по крайней мере, постоянно). Настоящие ассемблерщики пользуются текстовым редактором! :) Лично я - EmEditor 4.04 (с которым я, наверное, всех уже задолбал ;)) и UltraEdit 10.10c.
С уважением, Portnov.
Ответ отправлен: 21.06.2004, 14:28
Отправитель: Portnov
Отвечает Gibbel
Доброе время суток, ParakleT!
Много раз уже отвечали на этот вопрос.
Все пользуются тем, что удобно. Некоторые - блокнотом, некоторые - FAR или NC...
Если вам так уж хочется "красивый" IDE под Windows, то могу посоветовать Negatory Assembly Studio или же Programmer Studio (но в ней придется повозиться с настройками).
Ответ отправлен: 21.06.2004, 12:15
Отправитель: Gibbel
Отвечает bocha
Добрый день, ParakleT!
VC6
Ответ отправлен: 20.06.2004, 07:29
Отправитель: bocha
Форма отправки вопроса |
Мы рекомендуем открывать рассылку в программе Internet Explorer 5.0+ или отправлять вопросы с сайта по адресу: http://rusfaq.ru/cgi-bin/Message.cgi.
(C) 2002-2003 Команда RusFAQ.ru.
Вопрос и дополнение |
Ваш вопрос:
Приложение (если необходимо):
Получить ответов:
Выбор рассылки |
Программисту Assembler (24) C / C++ (14) Perl (3) Builder / Delphi (18) Pascal (26) Basic / VBA (6) Java / JavaScript (5) PHP (13) Криптография (9) WinAPI (14) Радиоэлектроника (12) |
Пользователю Windows 95/98/Me (37) Windows NT/2000/XP (55) "Железо" (34) Поиск информации (14) |
Администратору Windows NT/2000/XP (32) Linux / Unix (15) |
Юристу Гражданское право (11) Семейное право (8) Трудовое право (9) КоАП (7) |
Отправить вопрос всем экспертам выбранной рассылки.
Проект экспертов RusFAQ.ru | Фотоальбом | Virus.RusFAQ.ru | Администрирование
Профессиональная WEB-Студия B.I.T.
http://subscribe.ru/
E-mail: ask@subscribe.ru | Отписаться |
В избранное | ||