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

RusFAQ.ru: программирование на языке Assembler


Информационный Канал Subscribe.Ru

RusFAQ.ru: программирование на языке Assembler

Выпуск № 681
от 30.12.2003, 20:40

Администратор:
Имя: Калашников О.А.
URL: Информационный ресурс
ICQ: 68951340
Россия, Москва
О рассылке:
Задано вопросов: 4719
Отправлено ответов: 13379
Активность: 283.5 %
[Задать вопрос >>][Регистрация эксперта >>]
[Поиск в базе][Обсудить на форуме]


 Список экспертов, ответы которых опубликованы в данном выпуске

Евгений Иванов
Статус: Профессиональный
Общий рейтинг: 138.49
URL: Super Assembler Software
Телефон: Пчёлка +7 905 6601206
[Подробней >>]
_vt
Статус: Профессиональный
Общий рейтинг: 118.59
[Подробней >>]
Andrew Vext
Статус: Профессиональный
Общий рейтинг: 103.6
[Подробней >>]
 
SedHg
Статус: Доверительный
Общий рейтинг: 113.88
[Подробней >>]
VOVAN
Статус: Начальный
Общий рейтинг: 110.34
[Подробней >>]
Artemy
Статус: Опытный
Общий рейтинг: 119.78
Телефон: 8 905 549 38 66
[Подробней >>]
 
Gibbel
Статус: Профессиональный
Общий рейтинг: 106.16
URL: Savage Metal Club - жизнь в стиле рок-н-ролл
Телефон: +7 901 710 3146
[Подробней >>]
Dark_Lord
Статус: Профессиональный
Общий рейтинг: 110.35
[Подробней >>]
dr_dolphin
Статус: Опытный
Общий рейтинг: 114.03
[Подробней >>]
 
vitya
Статус: Профессиональный
Общий рейтинг: 108.3
[Подробней >>]
Bob Johnson
Статус: Профессиональный
Общий рейтинг: 147.01
URL: Программирование
[Подробней >>]
Ayl
Статус: Профессиональный
Общий рейтинг: 116.55
[Подробней >>]


 Краткий перечень вопросов

Вопрос № 4688. >Ерунда это всё! >Всё работает у тебя. Работало бы всё я б не обращался за помощью. >А вообще чтение... (ответов: 1)
Вопрос № 4689. Эксперту _vt: я и рад бы был работать с прерываниями клавиатуры, но всё дело в том, что эта программ... (ответов: 2)
Вопрос № 4690. Эксперту _vt: Я писал: >> мне нужно корректно роспознавать нажатия и отпускания >>клавиш Вы ответили... (ответов: 2)
Вопрос № 4691. эксперту Andrew Vext: Наивно думать, что этот метод не был мною опробован. Попробуйте нажать три и б... (ответов: 1)
Вопрос № 4692. Здраствуйте. Вопрос к SedHg. Меня очень интересует вопрос №4648, а точнее - Ваш ответ на него, цитир... (ответов: 1)
Вопрос № 4693. Как организуется массив в памяти данных микроконтроллера семейства MCS-51. Заранее Благодарен!... (ответов: 1)
Вопрос № 4696. Уважаемые эксперты! Подскажите пожайлуста можно ли привязать программу к отдельному компу(маме,БИОСу... (ответов: 1)
Вопрос № 4697. Подскажите пожалуйста туториалы или книги в электронном виде по программированию игр на ассемблере п... (ответов: 2)
Вопрос № 4699. Издрасте. А не подскажеть ли хто как мышкою под VESA режимами орудовать, а то 51 интерупт чевой-то н... (ответов: 1)
Вопрос № 4700. Ув эксперты! У меня прога просто выводит MessageBox.Как сделать,чтобы в exe-шнике было 2 иконки - 32... (ответов: 2)
Вопрос № 4701. Доброго времени суток Artemy! Да,действительно,иконок в exe-шнике две. Но иконка на Рабочем столе вы... (ответов: 1)
Вопрос № 4702. Спасибо, шо считаешь меня таким умным, но нельзя ли поподробнее о том, как енто усё провернуть???... (ответов: 1)
Вопрос № 4703. Artemy! Последний вопрос,а как это сделать? Спасибо.... (ответов: 1)
Вопрос № 4704. Здравствуйте уважаемые эксперты. У меня такой вопрос: если я напишу прогу на Borland Pascal'е, но ис... (ответов: 8)

Вопросов: 14, ответов: 25


 Вопрос № 4688

>Ерунда это всё!
>Всё работает у тебя.
Работало бы всё я б не обращался за помощью.
>А вообще чтение из порта принято в прерывании делать!
ну перехватить прерывание я могу. А что внутри писать?



Вопрос отправлен: 22.12.2003, 17:42
Отправитель: Total_Lamer

[Следующий вопрос >>] [Список вопросов]

Отвечает Евгений Иванов

Доброе время суток, Total_Lamer!
Так напиши, что именно у тебя не так!
И что ты хочешь получить..
У меня твоя программа работает!
Бывай!
* EMan: -=- Любовь существует! =-=


Ответ отправлен: 22.12.2003, 20:27
Отправитель: Евгений Иванов


 Вопрос № 4689

Эксперту _vt: я и рад бы был работать с прерываниями клавиатуры, но всё дело в том, что эта программа должна иммитировать клавиатуру фортепиано и для этого мне нужно корректно роспознавать нажатия и отпускания клавишь т.е. включить/выключить проигрывание МИДИ ноты.
Эксперту Евгений Иванов: мне нужно (см. выше), не уверен, что у вас всё работает. попробуйте произвести с программой следующие действия:
1 - нажать на клавишу х -> появится: событие № х запущенно
2 - нажать на клавишу у -> появится: событие № у запущенно
3 - отпустить клавишу х -> появится:
событие № х остановленно
событие № у запущенно
а запускаться событи "у" не должно оно не должно т.к. клавиша "у" ещё не отпускалась...


Приложение:


Вопрос отправлен: 23.12.2003, 01:36
Отправитель: Total_Lamer

[Следующий вопрос >>] [Список вопросов]

Отвечает Евгений Иванов

Доброе время суток, Total_Lamer!
Клавиатура отдаёт коды повтора.. вот и вся морковь!
Читай внимательнее описание клавиатуры...
Тебе надо не реагировать на нажатие, пока не пришло отжатие..
Удачи!
* EMan: -=- Любовь существует! =-=


Ответ отправлен: 23.12.2003, 19:32
Отправитель: Евгений Иванов


Отвечает _vt

Здравствуйте, Total_Lamer!
> мне нужно корректно роспознавать нажатия и отпускания клавиш
Это вполне реализуется и сервисом 16h прерывания. Или в твоем случае - я тебе указал же на ошибку! Ты обрабатываешь только один введенный символ, а при нажатии на F1-F12, стрелки и другие не алфавитно-цифровые клавиши, генерируется код клавиши из двух символов, причем первый - 0. Вот и действуй.

* Origin: Эй, еж? Тебе понятно?

E-Man 1.5+ on Windows XP SP1


Ответ отправлен: 23.12.2003, 03:14
Отправитель: _vt


 Вопрос № 4690

Эксперту _vt:
Я писал:
>> мне нужно корректно роспознавать нажатия и отпускания >>клавиш
Вы ответили:
>Это вполне реализуется и сервисом 16h прерывания. Или в >твоем случае - я тебе указал же на ошибку! Ты >обрабатываешь только один введенный символ, а при нажатии >на F1-F12, стрелки и другие не алфавитно-цифровые >клавиши, генерируется код клавиши из двух символов, >причем первый - 0. Вот и действуй.
Простите, но функции 22-го прерывания не позволяют отслеживать отпускание клавиши (по крайней мере, мне не удалось отыскать таковые), а про двухсимвольный код некоторых клавиш мне известно давно.



Вопрос отправлен: 23.12.2003, 13:25
Отправитель: Total_Lamer

[Следующий вопрос >>] [Список вопросов]

Отвечает Евгений Иванов

Здравствуйте, Total_Lamer!
Никакого двухсимвольного кода нет!
Есть скан-код клавиатуры по порту 96.
от 0 до 127
если 7 бит установлен - клавиша отжимается.
ВСЁ!
Смотри на моём сайте эмулятор Спектрума.
Там у меня сделано всё.
Бывай!
* EMan: -=- Любовь существует! =-=


Ответ отправлен: 23.12.2003, 19:33
Отправитель: Евгений Иванов


Отвечает Andrew Vext

Приветствую Вас, Total_Lamer!
Ну сколько можно спорить!
Заводим массив флагов. Нажимаем клавишу 1 - устанавливается флаг 1, порождается действие 1.
Нажимаем клавишу 2 - устанавливается флаг 2 порождается действие 2.
Отпускаем клавишу 1 - завершается действие 1, снимается флаг 1. Порождается действие 2 - оопс! а флаг 2 уже установлен, действие не порождаем, а сразу возвращаемся.
Надеюсь идея понятна.


Ответ отправлен: 23.12.2003, 13:36
Отправитель: Andrew Vext


 Вопрос № 4691

эксперту Andrew Vext:
Наивно думать, что этот метод не был мною опробован. Попробуйте нажать три и более клавиши одновременно и поймёте, почему он (метод) не подходит для создания "эмулятора" фортепиано....



Вопрос отправлен: 23.12.2003, 13:54
Отправитель: Total_Lamer

[Следующий вопрос >>] [Список вопросов]

Отвечает Евгений Иванов

Добрый день, Total_Lamer!
Смотри ответ на вопрос 3948.
Привожу здесь:
Отвечает Bob Johnson (вопрос 3946)
Приветствую Вас, Мирослав Махрук!
Так ты наверное и запоминаешь их в неком подобии стека? Я бы
использовал таблицу виртуальных клавиш - т.е. когда клавишу нажали ты
записываешь в соответствующее место 1, а когда отпустили - 0. А потом
уже исходя из этой таблицы можно формировать буфер и все такое.
Уважаемый Bob Johnson, не думаю, что идея с виртуальной таблицой мне
подходит, да и те же 0 и 1 о которых Вы говорили я получаю из порта 60h,
ведь, как Вам, должно быть, известно скан-код отжатой клавиши равен
скан-коду нажатой плюс 80h, а это и есть 0 и 1 в 7-ом бите.
В приложении Вы сможете найти версию моей программы (без буфера).
Приложение:
apush macro s
irp v,
push v
endm
endm
apop macro s
irp v,
pop v
endm
endm
gotoxy macro parX, parY
apush
mov ah,02
mov bh,0
mov dh,parY
mov dl,parX
int 10h
apop
endm
.model small
.stack 100h
.386
.data
last_key db 0
.code
assume ds:@data
main:
push @data
pop ds
mov ax,0003h
int 10h
wait_for_a_key:
in al,60h ; get a scan code of the pressed key
call clearKB ; clear the keyboard buffer to avoid the overflow

cmp al,last_key ; if the last key is still being pressed
jz wait_for_a_key ; then don't process it
cmp al,00h ; if no key was pressed
jz wait_for_a_key ; then wait for a keypress
cmp al,01h ; if the ESC-key was pressed
jz exit_main ; then exit the program
mov last_key,al

js delete_key ; if the 7th bit is set then key was released

gotoxy al,0 ;
mov ah,02h ; print
mov dl,0feh ; a
int 21h ; square
jmp wait_for_a_key ;

delete_key:
xor al,80h
gotoxy al,0 ;

mov ah,02h ; erase
mov dl,0h ; a
int 21h ; square
jmp wait_for_a_key ;
exit_main:
mov ax,4c00h ; exit
int 21h ; to DOS

;------------CLEAR KEABOARD BUFFER
;Clears keyboard buffer by setting head of keyboard buffer equal to the tail.
clearKB proc
apush
pushf ;save flags
push 0000h
pop es
mov ax,es:[041Ah] ;Head
mov es:[041Ch],ax ;Tail
popf ;restore flags
apop
ret
clearKB endp
;------------END CLEAR KEABOARD BUFFER

end main

Вопрос отправлен:
18.08.2003, 02:17
Действителен до: 22.08.2003, 02:17
Отправитель: Мирослав Махрук
;-=-=-=-=-----------------------------------------
Причём тут 7 бит?
Боб имел в виду совсем другое.
Типа надо завести массив на 128 байтов.
Если пришёл код нажатия клавиши, в соотв. расположение писать единицу.
Если пришёл код отжатия клавиши, то ... писать нолик.
Это делать в обработчике прерывания клавиатурного (9).
А уже затем во внешней подпрограмме обрабатывать этот массив для получения
информации, какая клавиша нажата...
Вроде просто объяснил...
Смотри мой исходник эмулятора Спектрума, там что-то подобное организовано.

Удачи!

* EMan: -=- Любовь существует! =-=


Ответ отправлен: 23.12.2003, 19:50
Отправитель: Евгений Иванов


 Вопрос № 4692

Здраствуйте.
Вопрос к SedHg.
Меня очень интересует вопрос №4648, а точнее - Ваш ответ на него, цитирую:
>Здравствуйте, Serega!
>+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
>Предисловие: Если ты заметил, DEBUG "думает", что наш >супер-пупер навороченный "пень",
>это всего лишь древний процессор с 16-битной архитектурой, >и поэтому он "видит" только
>девять флагов, причем DEBUG выводит значения только восьми >флагов.
>В процессорах с 32-битной, т.е в тех, что стоят у нас в >домах, архитектурой существует уже 17 флагов.
Вопрос:
Как??????!!!!!!!! Целых 17 ???!!!!???!! Ё маё!!!!!
Где взять инфы аб них? Зачем они? Ни в одной книге не встречал. Спаситепомогитепажалуйста!



Вопрос отправлен: 23.12.2003, 21:58
Отправитель: thirteenth

[Следующий вопрос >>] [Список вопросов]

Отвечает SedHg

Добрый день, thirteenth!
++++++++++++++++++++++++++++++++++++++++++++++++++++
Насколько я понял, девять флагов, которые были описаны
в ответе на вопрос № 4648, ты знаешь. Поэтому расскажу только о тех восьми, которые не знаешь.
+++++++++++++++++++++++++++++++++++++++++++++++++++
10) iopl (12,13)" - Уровень привилегий ввода-вывода.
Используется в защищенном режиме работы микропроцессора
для контроля доступа к командам к командам ввода-вывода,
в зависимости от привилегированности задачи.
11) nt (14) - Флаг вложенности задачи. Используется в защищенном режиме работы
микропроцессора для фиксации того факта, что одна задача
вложена в другую.
12) rf (16) - Флаг возобновления. Используется при обработке прерываний
от регистров отладки.
13) vm (17) - Флаг виртуального 8086. Признак работы микропроцессора
в режиме виртуального 8086. Если флаг выставлен - процессор работает
в режиме виртуального 8086; Если не выставлен - процессор работает
в реальном или защищенном режиме.
14) ac (18) - Флаг контроля выравнивания. Предназначен для разрешения контроля
выравнивания при обращении к памяти. Используется совместно с битом am в системном
регистре cr0. Если требуется контролировать выравнивание данных и команд по адресам, кратным
2 или 4, то установка данных битов(т.е. флага ac и бита am) приведет к тому, что все
обращения по некратным адресам будут возбуждать исключительную ситуацию.( Ты хоть что-нибудь
из этого понял ?)
15) vif (19) - Флаг виртуального прерывания. Если процессор работает в виртуальном режиме,
то этот флаг является аналогом флага if.
16) vip (20) - Флаг отложенного виртуального прерывания. Этот флаг устанавливается для индикации отложенного прерывания. Используется при работе в виртуальном режиме совместно с флагом vif.
17) id (21) - Флаг идентификации. Используется для того, чтобы показать факт поддержки
процессором инструкции cpuid( эта команда позволяет узнать о модели процессора и его особенностях)
Если программа может установить этот флаг, значет процессор поддерживает команду cpuid
=================================================
Примечания:
" - номер бита в eflags(32-битный регистр флагов).
=================================================
++++++++++++++++++++++++++++++++++++++++++++++++++++
PS: Если тебе что-то не понятно, пиши, объясню более простым языком.
PPS: на счет литературы, я не могу сказать ничего
определенного, т.к. не видел в интернете подробное описание использования этих флагов.
Начальные сведения имеются в учебнике В.И. Юрова. Но я еще не встречал электронный вариант этой книги.
++++++++++++++++++++++++++++++++++++++++++++



Ответ отправлен: 24.12.2003, 00:05
Отправитель: SedHg


 Вопрос № 4693

Как организуется массив в памяти данных микроконтроллера семейства MCS-51. Заранее Благодарен!



Вопрос отправлен: 23.12.2003, 23:52
Отправитель: Северский Сергей (igarka@land.ru)

[Следующий вопрос >>] [Список вопросов]

Отвечает VOVAN

Доброе время суток, Северский Сергей!
http://www.saslib.ru/ref/arh/15/HAI-0658/Index.html
про MCS-51

Ответ отправлен: 24.12.2003, 19:11
Отправитель: VOVAN


 Вопрос № 4696

Уважаемые эксперты!
Подскажите пожайлуста можно ли привязать программу к отдельному компу(маме,БИОСу),
т.е. узнать их серийный номер или другую уникальную информацию о железе.
Если можна то с исходником.



Вопрос отправлен: 24.12.2003, 22:29
Отправитель: Scream3

[Следующий вопрос >>] [Список вопросов]

Отвечает Artemy

Добрый день, Scream3!
Можно.

Ответ отправлен: 25.12.2003, 10:04
Отправитель: Artemy


 Вопрос № 4697

Подскажите пожалуйста туториалы или книги в электронном виде по программированию игр на ассемблере под Досом....тока желательно полный вариант..а то в сети книги есть АНДРЭ ЛА МОТЭ...но она не полная...несколько глав вырезаны!
Заранее спасибо



Вопрос отправлен: 24.12.2003, 23:15
Отправитель: Антон

[Следующий вопрос >>] [Список вопросов]

Отвечает SedHg

Добрый день, Антон!
++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Обращение ко всем!!!
Уважаемые, предлагаю переименовать рассылку
"Программирование на Ассемблере" в "Как пользоваться
поисковиком" =).
++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Итак, дорогой мой программер, вот что я тебе
нашел.http://pmg-ru.narod.ru/ Хороший такой сайт по программированию игр. Есть практически все.
(Ну, в разумных пределах, конечно.) Можно найти документацию практически по всем темам, которые
хоть как-то касаются программирования игр.
Есть исходники. А ссылок там на другие сайты несколько сотен.
Короче, топаешь туда, а там ищи что тебе надо.
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++


Ответ отправлен: 26.12.2003, 17:04
Отправитель: SedHg


Отвечает Andrew Vext

Доброе время суток, Антон!
Уже больше года в Сети доступна полная версия книги ЛаМота по программированию игр под DOS.
www.pmg-ru.narod.ru/russian/books.htm

Ответ отправлен: 25.12.2003, 12:12
Отправитель: Andrew Vext


 Вопрос № 4699

Издрасте. А не подскажеть ли хто как мышкою под VESA режимами орудовать, а то 51 интерупт чевой-то не хотит нормально хвункционировать.
А режимы 256 цветныя. 640х480 и дале...



Вопрос отправлен: 25.12.2003, 23:47
Отправитель: DOS_Forever

[Следующий вопрос >>] [Список вопросов]

Отвечает Artemy

Доброе время суток, DOS_Forever!
Повесь обработчик на инт 10h и при получении текущего видеорежима говори что это VGA 640х480 16 цветов, а потом инициализируй мышь.
Правда курсора не будет... рисуй сам, зато получишь правильные координаты.
И для работы с мышью лучше пользуйся интом 33h.


Ответ отправлен: 26.12.2003, 13:01
Отправитель: Artemy


 Вопрос № 4700

Ув эксперты!
У меня прога просто выводит MessageBox.Как сделать,чтобы в exe-шнике было 2 иконки - 32х32 и 16х16.Я указываю в rc
1 ICON DISCARDABLE "32.ico"
2 ICON DISCARDABLE "16.ico"
Но в проге реально присутствует только большая.А мне нужны обе.
Спасибо.



Вопрос отправлен: 26.12.2003, 00:25
Отправитель: Garrik

[Следующий вопрос >>] [Список вопросов]

Отвечает Artemy

Доброе время суток, Garrik!
А с чего ты взял что там только одна иконка?
Посмотри ресурсы в екзешнике.
Должно быть две.

Ответ отправлен: 26.12.2003, 13:05
Отправитель: Artemy


Отвечает Gibbel

Приветствую Вас, Garrik!
Вообще-то, у тебя так и получается - две ресурса иконок в одном экзешнике - одна "32.ico", вторая - "16.ico". А то, что в экзешнике присутствует только больщая ты как определил??? Если по тому, что проводник Windows отображает, так он отображает для экзешника первую найденную в нем иконку (а так как при компиляции ресурсы сортируются, то это будет иконка с наименьшим именем). Попробуй поменять местами названия иконок (первую назови "2", а вторую - "1"), и ты увидишь что у тебя токо маленькая иконка.

А вообще, если ты хочешь, чтоб автоматически подставлялась нужная по размеру иконка, то создавай соответствующий .ico-файл (т.е., файл, содержащий как большую так и маленькую иконку). И потом подключай его в ресурсы.

Ответ отправлен: 28.12.2003, 13:21
Отправитель: Gibbel


 Вопрос № 4701

Доброго времени суток Artemy!
Да,действительно,иконок в exe-шнике две.
Но иконка на Рабочем столе выглядит нормально,она - 32х32,а вот в Проводнике показывается тоже 32х32,вместо 16х16!А,когда я в ресурсах указываю только 16х16 - в Проводнике иконка выглядит нормально,но на Рабочем столе - расплывчатая.Явно нужно еще что-то сделать,но не соображу,что.



Вопрос отправлен: 26.12.2003, 13:54
Отправитель: Garrik

[Следующий вопрос >>] [Список вопросов]

Отвечает Artemy

Здравствуйте, Garrik!
Делай в одном *.ICO файле сразу две
иконки 16х16 и 32х32.

Ответ отправлен: 26.12.2003, 15:00
Отправитель: Artemy


 Вопрос № 4702

Спасибо, шо считаешь меня таким умным, но нельзя ли поподробнее о том, как енто усё провернуть???



Вопрос отправлен: 26.12.2003, 15:31
Отправитель: DOS_Forever

[Следующий вопрос >>] [Список вопросов]

Отвечает Artemy

Приветствую Вас, DOS_Forever!
al = номер прерывания ( в твоем случае 10h)
ah = 25h - установить адрес обработчика прерывания
ds:dx - адрес обработчика
int 21h
ah = 35h - получить адрес обрабтчика
int 21h
es:bx - адрес обработчика
А в обработчике проверяй ah на 0Fh и если
это оно то устанавливай al в нужное значение
и выходи из обработчика, иначе продолжай выполнять
старый.


Ответ отправлен: 26.12.2003, 16:23
Отправитель: Artemy


 Вопрос № 4703

Artemy!
Последний вопрос,а как это сделать?
Спасибо.



Вопрос отправлен: 26.12.2003, 18:20
Отправитель: Garrik

[Следующий вопрос >>] [Список вопросов]

Отвечает Gibbel

Добрый день, Garrik!
Возьми нормальный редактор иконок (например, ArtIcons) и делай в нем.

Ответ отправлен: 28.12.2003, 13:30
Отправитель: Gibbel


 Вопрос № 4704

Здравствуйте уважаемые эксперты.
У меня такой вопрос: если я напишу
прогу на Borland Pascal'е, но используя только
комманды встроенного ассемблера,
то она увеличится в размере и уменьшиться ли у
нее быстродействие в отличии от программы написанной
и откомпилированной просто Tasm'ом.
Пример:
Pascal
begin
asm
mov ah, 10h
int 16h
end;
end.



Вопрос отправлен: 26.12.2003, 20:37
Отправитель: Frost

[Следующий вопрос >>] [Список вопросов]

Отвечает VOVAN

Приветствую Вас, Frost!
данном примере увеличится только объём файла. на быстродействие не уменьшится

Ответ отправлен: 29.12.2003, 11:03
Отправитель: VOVAN


Отвечает Dark_Lord

Здравствуйте, Frost!
Конечно, увеличение и скорости и размера связано с тем, что Pascal создаёт программу, учитывающую все возможные исключения, и обрабатывающую их!

Ответ отправлен: 27.12.2003, 08:59
Отправитель: Dark_Lord


Отвечает dr_dolphin

Приветствую Вас, Frost!
В конечном итоге получается все равно программа на машинном языке, а т.к в вашей программе на BP используется только ассемблер, то разницы по скорости не будет никакой...
Кстати зачем писать программу на ассемблере в BP ? Не проще-ли сразу написать на ассемблере ?
Пока ...


Ответ отправлен: 27.12.2003, 10:47
Отправитель: dr_dolphin


Отвечает Евгений Иванов

Добрый день, Frost!
Бытродействие в этой точке ни капли не отличается от **...
А вот код точки входа в программу и выхода будет, но там не страшно..
* EMan: -=- Любовь существует! =-=


Ответ отправлен: 27.12.2003, 00:54
Отправитель: Евгений Иванов


Отвечает vitya

Доброе время суток, Frost!
будет больше.

Ответ отправлен: 27.12.2003, 14:51
Отправитель: vitya


Отвечает _vt

Добрый день, Frost!
До того, как начинают выполняться операторы паскалевской программы - до begin - выполняется инициализация некоторых переменных, и др. В Borland Pascal это отключить нельзя, поэтому размер программы, написанной подобным способом, будет гораздо больше написанной на Turbo Assembler. А насчет быстродействия - особо не изменится.
--- E-Man 1.5+ on Windows XP SP1

* Origin: God is Real, unless declared as Integer


Ответ отправлен: 28.12.2003, 10:59
Отправитель: _vt


Отвечает Bob Johnson

Доброе время суток, Frost!
Она будет значительно большего размера, т.к. паскаль добавить что-нибудь свое. Но скорость ее работы останется такой же, как если бы ты написал ее на чистом ассемблере (т.к. ты собственно на нем ее и написал).

* EMan1.5: ---===*** The game we play ***===---


Ответ отправлен: 28.12.2003, 14:06
Отправитель: Bob Johnson


Отвечает Ayl

Здравствуйте, Frost!
Конечно, увеличится. Начнем с того, что на тасме ты можешь легко написать прогу в формате COM-файла, а Borland Pascal умеет создавать только EXE-файл. COM-файл, созданный на асме, будет содержать 5 байт - 2 на загрузку регистра ah, 2 на вызов прерывания и один на завершение проги командой ret. Для EXE-программе на асме потребуется уже 8 байт только на код - 4 для функциональной части и 3 байта для завершения (ret не сработает, потребуется вызов функции 4ch прерывания 21h). Плюс заголовок EXE-файла.
Во-вторых, Borland Pascal перед выполнением твоего кода выполняет некоторые настроечные действия. Если ты напишешь и откомпилируешь пустую программу (begin end.), то увидишь, что ее размер составит около 6Кбайт. Дело в том, что в любую программу добавляется код из модуля System (именно поэтому не требуется указание этого модуля в секции Uses). То есть, как минимум 6Кб твоя прога будет занимать. А на асме - сам понимаешь...
Насчет быстродействия. Уменьшится, разумеется. Во-первых, короткая программа быстрее загружается в память. Во-вторых, твой код будет выполнен и в том, и в другом случае, но в случае использования языка высокого уровня дополнительно будет исполняться и код, добавляемый компилятором.


Ответ отправлен: 29.12.2003, 12:25
Отправитель: Ayl



Форма отправки вопроса

Внимание!
Мы рекомендуем открывать рассылку в программе Internet Explorer 5.0+ или отправлять вопросы с сайта по адресу: http://rusfaq.ru/cgi-bin/Message.cgi.

(C) 2002-2003 Команда RusFAQ.ru.

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

Ваше имя:

Ваш e-mail:

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


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

Ваш вопрос:


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


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


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

Программисту
Assembler (26)
C / C++ (18)
Perl (4)
Builder / Delphi (19)
Pascal (21)
Basic / VBA (3)
Java / JavaScript (5)
PHP (10)
Криптография (7)
WinAPI (12)
Пользователю
Windows 95/98/Me (39)
Windows NT/2000/XP (50)
"Железо" (28)
Поиск информации (20)
Администратору
Windows NT/2000/XP (28)
Linux / Unix (14)
Юристу
Гражданское право (15)
Семейное право (9)
Трудовое право (10)
КоАП (9)

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




Задать вопрос | Регистрация эксперта | Поиск в базе | Чат | Форумы | Новости
Проект экспертов RusFAQ.ru | Фотоальбом | Virus.RusFAQ.ru | Администрирование
Профессиональная WEB-Студия B.I.T.


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


http://subscribe.ru/
E-mail: ask@subscribe.ru
Отписаться
Убрать рекламу

В избранное