Рассылка закрыта
При закрытии подписчики были переданы в рассылку "RFpro.ru: Ассемблер? Это просто! Учимся программировать" на которую и рекомендуем вам подписаться.
Вы можете найти рассылки сходной тематики в Каталоге рассылок.
RusFAQ.ru: программирование на языке Assembler
Информационный Канал Subscribe.Ru |
RusFAQ.ru: программирование на языке Assembler
Выпуск № 319
от 16.07.2002, 03:00
Администратор: Имя: Калашников О.А. URL: Информационный ресурс ICQ: 68951340 Россия, Москва |
О рассылке: Задано вопросов: 742 Отправлено ответов: 2090 Активность: 281.6 %
|
Список экспертов, ответы которых опубликованы в данном выпуске |
Александр Статус: Опытный Общий рейтинг: 115.34 [Подробней >>] |
baldr Статус: Профессиональный Общий рейтинг: 118.56 URL: Сайт об ОС DOS. Всем, кто любит эту ОС! [Подробней >>] |
наСИльник Статус: Профессиональный Общий рейтинг: 136.9 URL: "Железо" [Подробней >>] |
veei Статус: Доверительный Общий рейтинг: 130 [Подробней >>] |
Igoryk Статус: Начальный Общий рейтинг: 108.08 [Подробней >>] |
Артём Шегеда Статус: Профессиональный Общий рейтинг: 122.32 URL: Пристанище неодинокого программиста [Подробней >>] |
Spike Статус: Доверительный Общий рейтинг: 120.65 [Подробней >>] |
Beeblebrox Статус: Профессиональный Общий рейтинг: 119.53 URL: Beeblebrox / TMA HomePage [Подробней >>] |
masquer Статус: Профессиональный Общий рейтинг: 161.42 [Подробней >>] |
Топор Статус: Профессиональный Общий рейтинг: 118.66 URL: Хорошая Русская Металлическая команда Телефон: (8462)500298 [Подробней >>] |
Broken Sword Статус: Профессиональный Общий рейтинг: 141.3 [Подробней >>] |
Gibbel Статус: Опытный Общий рейтинг: 109.46 URL: Страничка обо мне и моих друзьях [Подробней >>] |
vitya Статус: Профессиональный Общий рейтинг: 115.41 [Подробней >>] |
Краткий перечень вопросов |
Вопрос № 706. Здравствуйте дорогие ассемблершики! Вот только вчера подписался на асм рассылку - буду учить потихон... (ответов: 2)
Вопрос № 707. Пришлите пожалуйста, (если можно) bat - файл для компиляции и компоновки ассемблерной программы. И е... (ответов: 5)
Вопрос № 708. МонкейЛогик, чтож присто, я понимаю, но вообщем то обращатсьято некуда, мыло Калашникова не отвечает... (ответов: 1)
Вопрос № 709. Здравствуйте, уважаемые эксперты! Пытался отключить курсор следующим набором команд: MOV DX,3B4... (ответов: 4)
Вопрос № 710. Добрый день... Пишу ДЛЛ которая бы данные брала из формы(написанная на VB)... и подставляла их на ме... (ответов: 5)
Вопрос № 711. Здравствуйте, уважаемые эксперты. Я уже очень долго бьюсь над проблемой адресации на жестком диске. ... (ответов: 3)
Вопрос № 712. На днях решил крякнуть одну прогу(необходимость такая появилась). Покапался в ней и ужаснулся. Какие... (ответов: 4)
Вопрос № 713. Добрый час, увожаемые подписчики рассылке по ассемблеру! Я вот тут заметил некоторый спор между ... (ответов: 3)
Вопросов: 8, ответов: 27
Вопрос № 706 |
Здравствуйте дорогие ассемблершики! Вот только вчера подписался на асм рассылку - буду учить потихоньку (а то по книжке не совсем всё понятно ближе к концу).
А вопросик у меня следующий - у меня есть тут маленькая мысля по контролингу дивайса типа лампочка настольная компьютером через LPT параллельный порт подавая ток и включая реле через транзисторный буфер- тоесть типа того
MOV DX, 0378h ; адрес моего порта
MOV AL, 00000001b ;включить первую лапку
OUT DX, AL
и всё бы ничего на пентиуме втором - но когда я пытаюсь сделать то же самое на моём ноутбуке IBM R30 то не работает - тоесть там почемуто все пины на нём включены всегда - тоесть мой паралельный порт типа - EPP . а как с таким управяться - и можно ли отключать на нём напряжение? ещёкстати ос у меня WINXP и RED HAT. может есть какие - либо лазейки чтобы конролировать порт из этих осей? Заранее спасибо = извините за мою непрофессионаьность, я ведь newbie.
Вопрос отправлен: 11.07.2002, 04:58
Отправитель: GreeN_CaT_(1 am l/m3 VB MCP) (zeleniy_kot@yahoo.co)
[Следующий вопрос >>] [Список вопросов]
Отвечает Александр
Доброе время суток, GreeN_CaT_(1 am l/m3 VB MCP)!
Всё дело в волшебных пузырьках. Эти ОС достаточно жестоко относятся к попыткам самоуправства на системном уровне. На самом деле для прямого доступа к портам в линейке WinNT существуют специальные драйвера для "прямого" доступа, этакий шлюз для того чтобы пользовательский код мог выполняться в 0-м кольце привелегий. Для Linux надо знать системные вызовы, а я в этом не силён. А ты уверен, что питание включено на всех выводах? Дело в том, что некоторые выходы LPT-порта инвертированы.
Доброе время суток, GreeN_CaT_(1 am l/m3 VB MCP)!
Всё дело в волшебных пузырьках. Эти ОС достаточно жестоко относятся к попыткам самоуправства на системном уровне. На самом деле для прямого доступа к портам в линейке WinNT существуют специальные драйвера для "прямого" доступа, этакий шлюз для того чтобы пользовательский код мог выполняться в 0-м кольце привелегий. Для Linux надо знать системные вызовы, а я в этом не силён. А ты уверен, что питание включено на всех выводах? Дело в том, что некоторые выходы LPT-порта инвертированы(1, 10, 14, 15, 16). Да кстати, чуть не забыл. Порт может не обязательно иметь адрес 378h. По адресу 0040:0008 адрес порта ввода-вывода, соответствующего LPT1. Этот адрес может быть не 378h, кроме того этот порт может быть не LPT1, а LPT2, LPT3 или LPT4, адреса которых распологаются далее.
Ответ отправлен: 12.07.2002, 23:31
Отправитель: Александр
Отвечает baldr
Здравствуйте, как-тебя-там! :)
Может, просто на ноутбуке адрес порта другой?
прочитай его через BIOS.
Ответ отправлен: 12.07.2002, 00:34
Отправитель: baldr
Вопрос № 707 |
Пришлите пожалуйста, (если можно) bat - файл для компиляции
и компоновки ассемблерной программы. И если можно,
чтобы имя программы подставлялось в командной строке,
его вызывающей.
С уважением, Сергей.
Вопрос отправлен: 11.07.2002, 06:07
Отправитель: Sergey
[Следующий вопрос >>] [Список вопросов]
Отвечает наСИльник
Здравствуйте, Sergey!
Создаешь bat файл и в блокноте пишешь
tasm %1
tlink /t %1
или
ml %1 /AT
Ответ отправлен: 14.07.2002, 12:29
Отправитель: наСИльник
Отвечает veei
Добрый день, Sergey!
Я пользуюсь таким:
@echo y|del %1.exe
@echo y|del %1.obj
@tasm.exe /z %1.asm
@tlink.exe %1.obj
только имя файла нужно задавать без расширения
Ответ отправлен: 13.07.2002, 06:35
Отправитель: veei
Отвечает Igoryk
Приветствую Вас, Sergey!
Ну вот такой для COM-файлов:
@echo off
tasm %1
tlink /t %1
Такой для EXE:
@echo off
tasm %1
tlink /x %1
Если надо будет подкорректируешь немного.
Ответ отправлен: 11.07.2002, 10:19
Отправитель: Igoryk
Отвечает --- Нет данных ---
Добрый день, Sergey!
А что, самому лень в блокноте набрать?
tasm /zi proga.asm
tlink /v proga.obj
proga
Сохрани с расширением bat и всё. И вообще,
имхо, все нормальные люди пользуются make'ом
ЗЫ: Будь осторожен, а то тут есть любители
рассылать вирусы
Ответ отправлен: 11.07.2002, 21:48
Отправитель: --- Нет данных ---
Отвечает baldr
Доброе время суток, Sergey!
Есть у меня то, что тебе нужно. Уже давно написан. См. на моем сайте.
Пути изменишь на те, что у тебя. Что касается переменных - это можно посмотреть там же,
если не разберешься сам. Там же можно скачать полную версию этого файла, вместе
с прогами, запрашивающими параметры. Адрес статьи: http://www.dospage.by.ru/artcl006.shtm .
Кратко объясню, что делает файлик:
- В качестве параметра получает имя файла. ТОЛЬКО ИМЯ! Без расширения.
- удаляет все exe и com -файлы с таким именем в текущем каталоге.
- Запрашивает тип компилируемого файла: exe или com.
- Компилирует с нужными ключами.
- Все, что выводится на экран, записывается и в файл протокола в отдельном каталоге.
- Полученный obj-файл переносит в отдельный каталог, чтоб не захламлять текущий.
- Если надо запускает его сразу же.
Ответ отправлен: 12.07.2002, 00:33
Отправитель: baldr
Вопрос № 708 |
МонкейЛогик, чтож присто, я понимаю, но вообщем то обращатсьято некуда, мыло Калашникова не отвечает, так что тока суда!)))
Вопрос отправлен: 11.07.2002, 09:00
Отправитель: Pablo
[Следующий вопрос >>] [Список вопросов]
Отвечает --- Нет данных ---
Добрый день, Pablo!
Чтож, будем терпеть :)
Ответ отправлен: 11.07.2002, 21:49
Отправитель: --- Нет данных ---
Вопрос № 709 |
Здравствуйте, уважаемые эксперты!
Пытался отключить курсор следующим набором команд:
MOV DX,3B4H
MOV AL,10
OUT DX,AL
INC DX
MOV AL,32
OUT DX,AL
(взято из Журдена), но ничего не получилось. Причем DN вообще никак не реагирует, а FAR и "сеанс MS-DOS" увеличивают курсор до максимального размера. В чем тут дело? Дайте, пожалуйста, ответ.
Этот набор я поместил в com-файл. Компьютер AMD-K6.
Заранее вам благодарен.
Вопрос отправлен: 11.07.2002, 13:01
Отправитель: Вадим
[Следующий вопрос >>] [Список вопросов]
Отвечает veei
Добрый день, Вадим!
Просто изменив курсор в своей программе, у тебя ничего не получится. При выходе DOS восстанавливает стандартный курсор. А вообще, почему бы не менять курсор так:
mov ch, 01h
mov cl, 00h
mov ah, 01h
int 10h
Т. е. в CH - начальная линия курсора, CL - конечная линия курсора. В AH - 01h - номер функции BIOS, которая изменяет вид курсора. Чтобы сменить в DOS, попробуй перехватить int 10h и обрабатывать данную функцию.
Ответ отправлен: 13.07.2002, 06:36
Отправитель: veei
Отвечает Артём Шегеда
Приветствую Вас, Вадим!
Пример правильный, но корявый WinOA386.MOD некорректно контролирует управление видоадаптером. Проделай всё в чистом DOS.
DN, может быть, сам перенастраивает размер курсора - поэтому результата не видишь.
Попробуй развернуть FAR на весь экран.
Ответ отправлен: 11.07.2002, 14:19
Отправитель: Артём Шегеда
Отвечает Spike
Добрый день, Вадим!
Попробуй сделать по другому, у меня это работает:
mov dx, 03D4h
mov al, 0Ah
mov ah, 00n00000b ;Бит 5 управляет состоянием курсора
out dx, ax
Ответ отправлен: 11.07.2002, 22:42
Отправитель: Spike
Отвечает baldr
Доброе время суток, Вадим!
DN и не должен никак реагировать, ибо он по завершении всех (почти) прог восстанавливает
свой видеорежим, курсор и все остальное. А для тушения курсора см. приложение.
Как видишь - разница в адресе порта. Надо 3D4h !
Приложение:
Ответ отправлен: 12.07.2002, 00:34
Отправитель: baldr
Вопрос № 710 |
Добрый день...
Пишу ДЛЛ которая бы данные брала из формы(написанная на VB)... и подставляла их на места port и cmd...
mov dx,port <=
mov al,cmd <=
out dx,al
=============
Проблемы:
1)Как перевести(запихнуть данные из) 16-битный port..... в 8-битный dx?
2)Как перевести(запихнуть данные из) 16-битный cmd..... в al?
Может есть другие способы сделать это...?
3)В конце должна быть буква "h" (напр.3f2h......3f2 непонимает....).... как сделать типа шаблона.... чёбы букву "h" автоматом добавляло? (это можно сделать в VB... но просто хочется узнать..... вроде в макро есть... типа mov eax,e&later&x.... но ничего не выходит...)
Спасибо...
[pAcU]
Вопрос отправлен: 11.07.2002, 14:43
Отправитель: pAcU
[Следующий вопрос >>] [Список вопросов]
Отвечает veei
Приветствую Вас, pAcU!
Во-первых: dx не восьми, а шестнадцати битный.
Во-вторых: mov al, byte ptr cmd
В-третьих: буква h после числа, означает, что число в шестнадцатиричной системе счисления. Т. е. добавление h тебе вряд-ли поможет.
Ответ отправлен: 13.07.2002, 06:37
Отправитель: veei
Отвечает Beeblebrox
Добрый день, pAcU!
Не совсем понял, что значит 8-битный dx - еще с утра dx был 16-битным :)
Если cmd реально не больше 255, то просто взять младшие 8 бит, и поместить в al. А то ведь есть и команда mov dx,ax.
h писать надо
Ответ отправлен: 11.07.2002, 15:14
Отправитель: Beeblebrox
Отвечает --- Нет данных ---
Приветствую Вас, pAcU!
Есть куча команд, которые корректируют размеры
операндов, например cbw(Convert Byte to Word),
movzx, movsx, ещё оператор ptr
В приложении смотри макрос, который записывает
число в регистр al, с префиксом h.
Приложение:
Ответ отправлен: 11.07.2002, 21:51
Отправитель: --- Нет данных ---
Отвечает masquer
Приветствую Вас, pAcU!
1 и 2. Наверное, 8-битный dl.
В принципе, можно, конечно, и так написать
mov al, byte ptr [cmd]
А по сути сразу тебя огорчу - из dll тебе писать в порт не получится, только через драйвер.
Ответ отправлен: 11.07.2002, 20:17
Отправитель: masquer
Отвечает Топор
Здравствуйте, pAcU!
1) Здрасьте! DX - 16битный. Ты с DL (DH) попутал.
2) cmd... не понял... Ну если значение не больше 255, возьми младшие 8 байт...
3) Смотри доки на TASM. Там директива есть для задания системы счисления по умолчанию. RADIX называется.
Ответ отправлен: 12.07.2002, 18:44
Отправитель: Топор
Вопрос № 711 |
Здравствуйте, уважаемые эксперты.
Я уже очень долго бьюсь над проблемой адресации на жестком диске.
Использую информацию TechHelp.
-------------------------------------------
cseg segment
assume cs:cseg, ds:cseg, es:cseg, ss:cseg
org 100h
begin:
mov al,2
mov cx,0FFFFh
lea bx,ioRec
mov word ptr [bx],0
mov word ptr [bx+2],0
mov word ptr [bx+4],1
mov word ptr [bx+6],offset myBuf
mov word ptr [bx+8],cs
Int 25h
pop dx
int 20h
myBuf db 512 dup(0)
ioRec db 10 dup(0)
cseg ends
end begin
-----------------------------------------
Программа взята из примера TechHelp (немного модифицирована).
Но всеравно и начальная, и модифицированная программы не работоспособны.
Анализируя регистр AL и смотря в документации, получаем, что ошибка
заключается в "неизвестном типе носителя диска" (AX = 0207).
Пожалуйста найдите ошибку. Хотелось также понять, в чем заключается "неизвестный тип носителя диска".
Заранее благодарен!
Вопрос отправлен: 11.07.2002, 16:46
Отправитель: dm
[Следующий вопрос >>] [Список вопросов]
Отвечает veei
Доброе время суток, dm!
У тебя возникает ошибка потому, что номера жестких дисков начинаются с 80h (80h - с, 81h - d и т. д.), а ты пишешь 02h. В остальном не разбирался...
Ответ отправлен: 13.07.2002, 06:38
Отправитель: veei
Отвечает Broken Sword
Доброе время суток, dm!
Ошибка в том, что CX ни в коем разе не должен быть равен FFFF.... (см. ниже)
DX ты вообще попустил почему-то, какие то странные манипуляции с ioRec (зачем через bx туда что то писать? единички какие-то, нолики...)
Вот что по этому поводу пишет Ральф Браун:
INT 25 ---- - DOS 1+ - ABSOLUTE DISK READ (except partitions > 32M)
Inp.:
AL = drive number (00h = A:, 01h = B:, etc)
CX = number of sectors to read (not FFFFh)
DX = starting logical sector number (0000h - highest sector on drive)
DS:BX -> buffer for data
Return: CF clear if successful
CF set on error
AH = status (see #02547)
AL = error code (same as passed to INT 24 in DI)
AX = 0207h if more than 64K sectors on drive -- use new-style call may destroy all other registers except segment registers
А насчет AX=0207h - тут же не по русски написано: если более чем 64K секторов на диске используют вызовы в новом стиле ..(дословный перевод)
Ответ отправлен: 11.07.2002, 23:04
Отправитель: Broken Sword
Отвечает Spike
Приветствую Вас, dm!
Неправильная передача параметров, нужно так:
mov al, Drive ;Номер дисковода
mov cx, Length ;Количество считываемых секторов
mov dx, BeginSector ;Начальный сектор для считывания
lds bx, Buffer ;В DS:BX адрес буфера для чтения
int 25h
И еще, я не проверял, но у меня в доках написано, что функция работает только с FDD, поэтому номер дисковода должен быть 0 или 1.
Ответ отправлен: 11.07.2002, 22:42
Отправитель: Spike
Вопрос № 712 |
На днях решил крякнуть одну прогу(необходимость такая появилась). Покапался в ней и ужаснулся. Какие она вещи вытворяет.(Я раньше программировал только под ДОС, а эта программа написана под винды) Например, идет CALL на JMP, который адресуется за тело программы, но программа переходит под CALL и при этом меняются регистры. Может кто объяснит?
Через некоторое время TD32 реагирует только на пошаговый режим, а при всех остальных виснит, но так-как она вначале сама себя распатронивает, то я пошагал часа четыре и плюнул. Установил SoftIce(хотел отловить обращение в LPT за ключем), но в нем у меня почему-то мышка не работает. Хотел настройки изменить, после установки, и не нашел как это сделать. Может кто поможет или что присоветует.
Вопрос отправлен: 11.07.2002, 23:35
Отправитель: Алексей (rusinanq@mtu-net.ru)
[Следующий вопрос >>] [Список вопросов]
Отвечает masquer
Доброе время суток, Алексей!
Туториалов по распаковке море.
Ну я приблизительно так делаю: смотрю что за пакер, смотрю на секции, запоминаю размер image, правлю если нужно характеристики секции пакера (айс может не среагировать), ставлю бряк, ну, скажем на GetProcAdress, затем можно отлавливать распаковку всех секций, зная их VA (с тем чтобы импорт/экспорт нормальный снять), ну и самое главное, жду пока пакер мне OEP покажет, все. После этого снимаю дамп, правлю PE заголовок и все. Если сильно сложно показалось - смотри формат PE.
Ответ отправлен: 12.07.2002, 07:55
Отправитель: masquer
Отвечает Gibbel
Доброе время суток, Алексей!
1. Все виндовые проги обращаются к WinAPI - стандартному набору функций Windows (можешь сравнить с прерываниями доси). Соответственно, эти обращения большинством компиляторов переписываются как CALL на JMP на эту функцию. Так как адреса функций всегда отличаются для разных версий системных и прочих библиотек (.dll и прочее) то адреса в этих JMP проставляются операционной системой при загрузке программы или библиотеки.
2. TD32 имеет такую глюку периодически. Это 100% не защита от отладки. Как избавиться - не знаю.
А насчет сайса здесь много говорилось - читай рассылку
Ответ отправлен: 13.07.2002, 10:58
Отправитель: Gibbel
Отвечает Beeblebrox
Приветствую Вас, Алексей!
Могу посоветовать только одно - приобретай опыт. Потрассируй сотню-другую программ, и все вопросы отпадут сами собой. Из твоего описания нельзя понять суть проблемы.
Ответ отправлен: 12.07.2002, 10:10
Отправитель: Beeblebrox
Отвечает Broken Sword
Добрый день, Алексей!
Слушай хочешь совет - скачай WDASM32 отсюдова:
http://www.exetools.com/disassemblers.htm
и все мучения уйдут
Ответ отправлен: 13.07.2002, 03:24
Отправитель: Broken Sword
Вопрос № 713 |
Добрый час, увожаемые подписчики рассылке по ассемблеру!
Я вот тут заметил некоторый спор между Виктор (sfkvant@tuapse.ru) и masqer (адрес ломает искать)
по поводу ООП... Добавлю свое "скромное мнение" :-) (в ответ на выпуск от 11 Июля 2002 г), письма
- 6 и 7-го июля (может я и что-то пропустил...)
Во-первых: Виктор, любую программу можно реализовать без ООП! Почему? Очень просто - смотри,
есть процессор - он понимает команды и выполняет их, так? Он на хрен НЕ ЗНАЕТ НИ о каком ООП - для
него это просто MOV или CMPXCHG8B. Но все при этом работает. Вот так все просто...
Почему так можно считать? Тоже просто - см. далее.
Это вовсе не значит, что ООП не нужно! Я вообще-то считал, что ООП не нужно, когда был маленьким.
И даже хватило дури поспорить на эту тему с преподавателем в институте. Но теперь все-таки
пришел к выводу, что ООП нужно. Для чего - да, действительно для написания сложных проектов (как
и сказал masquer). Для написания обычных программ его применять МОЖНО, но не стоит (ударение все
правильно поставили?).
Какие премущества дает ООП?
1. Четкая структура программы.
2. Четкая структура данных.
3. Модульность программы - НЕОБХОДИМЫЙ вариант для создания сложной системы или при работе
нескольких программистов над одной задачей. Можно достич и без ООП.
4. Готовность кода программы обрабатывать несколько Instances (ничего лучше не придумал) данных
(процессов, приложений).
5. АВТОМАТИЗАЦИЯ реализации некоторых функций - например, конструирование и уничтожение объектов.
Но это не процессор делает, а компилятор.
Недостатки ООП:
1. (существенный) Нежелание, неготовность, невозможность программистов изучать ООП -
"На кой мне это, когда я крут! Я могу "CLI HLT"! Я все и так напишу". И ведь пишут и иногда
такое...
2. Реализация ООП требует дополнительных затрат ресурсов - память на таблицы, время проца на
дополнительные операции (обращение к этим таблицам) и др.
Во-вторых: masquer, а что такое в принципе ООП? "Объекты, методы ... вызов методов объектов ... инкапсуляция".
- слышу, слышу. Остановимся на "вызов методов объектов". Как это происходит (уверен, знаешь):
Object1.Method (param):
(тип вызова - stdcall)
push param
push &Object1Instance
call &(Object1::Method)
Вот, собственно - неявным параметром функции являет адрес Instance объекта. Вот и все ООП (ну, нет, конечно,
это только один пример).
А чем тогда не ООП тебе вот это:
push HWND
call GetDC
?????
Можно ведь это представить как:
HWND::GetDC
????
Можно. Пусть нет конструктора, нет деструктора, наследования и др, но такой вызов функций ОСТАНЕТСЯ ВСЕГДА,
т.е. одним из аргументов функции является адрес (код) структуры, хранящей данные, которые будет обрабатывать
функция. А это и лежит в основе ООП - прежде всего отойти по возможности от глобальных переменных. Так и решается
вопрос, описанный Виктором о сохранении контекста устройства.
В-третьих: не факт, что ООП в ассемблере совсем не нужно. Здесь опять можно вернуться к "во-вторых", потому что
опять возникает вопрос, что назвать ООП в ассемблере. Просто принято на ассемблере писать не ВСЮ программу, а только
некоторые ее части, критичные к чему-либо (время выполнения, размер программы, внутрениие регистры процессора),
поэтому в таких модулях (или фунциях) обычно ООП применять бессмысленно.
Если же проект сложен и доходит дело до ООП обычно предпочтение отдают другим языкам, потому что ООП приводит к
растрате ресурсов (см. "недостатки"->"пункт 2"), а поэтому можно пожертвовать еще ресурсы в пользу ЯВУ и
не геморроиться, тем более, что под ОС от микрософта о ресурсах говорить "не принято" - тормозит - меняй
процессор, не влазит на диск - меняй винт, однозначно!
А если под ООП в ассемблере преположить следующее: "не использовать в функции, осуществляющей обработку
данных структуры А никаких переменных вне структуры А (кроме констант)", то такое ООП давно ЕСТЬ и все
(в том числе и Артем Шегеда в своей ОС (если она, конечно, не работает с одной задачей at a time)) им
пользуются.
P.S. Вот тут вопрос нашелся :-) Пусть после cpuid у меня в EAX какое-то число.
КАК ВЫВЕСТИ ЕГО НА ЭКРАН????????
С уважением, Bob Johnson.
Вопрос отправлен: 12.07.2002, 02:40
Отправитель: Bob Johnson (bobjohn@newmail.ru)
[Следующий вопрос >>] [Список вопросов]
Отвечает vitya
Добрый день, Bob Johnson!
Скажу свои соображения на этот счет.
Я буду говорить о Си++ компиляторах: на самом деле (то есть на сколько мне известно )понятие "объект"(класс) исчезает после первого прохода компилятора, остается структура и глобальные функции, которые и оперируют с этим объектом.
Оптимизированный вызов метода (VC++6.0), состоит не из того, что вы написали, а из 8-10 строчек кода, то есть гораздо больше. Но, таблицы которые, я думаю, вы имели в виду, бывают лишь при иерархии классов, а именно - когда есть виртуальные функции.
Кроме того, есть такая вещь как COM, COM+, Automation, которые по-моему вообще здесь не обсуждаются, но не в этом дело; все это вообще невозможно без ООП или даже чистого ОП.
Моя работа же, а в 99% времени я работаю на Си++, состоит на 90% из работы с теми же классами. И лень изучать ООП то же фигня, так как если ты пишешь программы чтобы зарабатывать деньги, то рано или поздно, а лучше чтобы рано, тебе придется с этим встретиться.
Ответ отправлен: 12.07.2002, 08:47
Отправитель: vitya
Отвечает masquer
Доброе время суток, Bob Johnson!
1. Ну вот и я о чем.
2. Преобразуй его в строку и выводи.
Ответ отправлен: 12.07.2002, 08:04
Отправитель: masquer
Отвечает Топор
Доброе время суток, Bob Johnson!
Всё верно говоришь, да только... иногда проги, написанные с ООП, заметно притормаживают. Имхо - по возможности избегать.
Ответ отправлен: 12.07.2002, 18:37
Отправитель: Топор
Форма отправки вопроса |
Форма может работать некорректно в почтовых программах "Microsoft Outlook" и "Microsoft Outlook Express". В программе The Bat! подобные формы не работают вообще!
После нажатия на кнопку "Отправить", будет открыто второе окно. Заметьте, что в некоторых браузерах могут стоять запреты на открытие других окон, а также "чрезмерное" кэширование данных, при этом факт отправки Вашего вопроса стоит под сомнением.
Мы рекомендуем открывать рассылку в программе Internet Explorer 5.0+ или отправлять вопросы с сайта по адресу: http://rusfaq.ru/cgi-bin/Message.cgi.
© 2002 Команда RusFAQ.ru.
Вопрос и дополнение |
Ваш вопрос:
Приложение (если необходимо):
Получить ответов:
Выбор рассылки |
Программисту Assembler (44) C / C++ (31) Perl (10) Delphi (18) Pascal (30) Basic / VBA (12) Java / JavaScript (6) PHP (6) MySQL / MSSQL (9) |
Пользователю Windows 95/98/Me (43) Windows NT/2000/XP (31) "Железо" (34) Поиск информации (19) |
Администратору Windows NT/2000/XP (18) Linux / Unix (16) |
Юристу Гражданское право (7) Семейное право (3) Трудовое право (7) КоАП (2) |
Отправить вопрос всем экспертам выбранной рассылки.
© 2002 Россия, Москва. Авторское право: RusFAQ.ru |
http://subscribe.ru/
E-mail: ask@subscribe.ru |
Отписаться
Убрать рекламу |
В избранное | ||