Рассылка закрыта
При закрытии подписчики были переданы в рассылку "RFpro.ru: Ассемблер? Это просто! Учимся программировать" на которую и рекомендуем вам подписаться.
Вы можете найти рассылки сходной тематики в Каталоге рассылок.
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.
Вопрос и дополнение |
Ваш вопрос:
Приложение (если необходимо):
Получить ответов:
Выбор рассылки |
Программисту 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.
http://subscribe.ru/
E-mail: ask@subscribe.ru |
Отписаться
Убрать рекламу |
В избранное | ||