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

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.

 Персональные данные

Ваше имя:

Ваш e-mail:

Опубликовать мой e-mail в рассылке


 Вопрос и дополнение

Ваш вопрос:


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


Получить ответов:


 Выбор рассылки

Программисту
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.


Яндекс цитирования
© 2001-2004 Россия, Москва. Авторское право: Калашников О.А.

http://subscribe.ru/
E-mail: ask@subscribe.ru
Отписаться

В избранное