Рассылка закрыта
При закрытии подписчики были переданы в рассылку "RFpro.ru: Ассемблер? Это просто! Учимся программировать" на которую и рекомендуем вам подписаться.
Вы можете найти рассылки сходной тематики в Каталоге рассылок.
RusFAQ.ru: программирование на языке Assembler
Информационный Канал Subscribe.Ru |
RusFAQ.ru: программирование на языке Assembler
Выпуск № 443
от 15.12.2002, 01:40
Администратор: Имя: Калашников О.А. URL: Информационный ресурс ICQ: 68951340 Россия, Москва |
О рассылке: Задано вопросов: 2150 Отправлено ответов: 6552 Активность: 304.7 %
|
Список экспертов, ответы которых опубликованы в данном выпуске |
plexus Статус: Начальный Общий рейтинг: 101.27 [Подробней >>] |
Maverick Статус: Профессиональный Общий рейтинг: 138.83 URL: Задачи по ассемблеру Телефон: 89039415024 (BeeLine GSM) [Подробней >>] |
Traish Статус: Доверительный Общий рейтинг: 128.57 [Подробней >>] |
Bob Johnson Статус: Профессиональный Общий рейтинг: 151.67 [Подробней >>] |
keleb-glin Статус: Доверительный Общий рейтинг: 114.92 [Подробней >>] |
vitya Статус: Профессиональный Общий рейтинг: 108.11 [Подробней >>] |
Broken Sword Статус: Профессиональный Общий рейтинг: 128.13 URL: моя рассылка по Protected Mode [Подробней >>] |
St Статус: Опытный Общий рейтинг: 115.3 [Подробней >>] |
masquer Статус: Профессиональный Общий рейтинг: 149.74 [Подробней >>] |
igorash Статус: Профессиональный Общий рейтинг: 115.33 Телефон: 8(903)251-86-01 [Подробней >>] |
DiGiT[old] Статус: Опытный Общий рейтинг: 107.06 [Подробней >>] |
Ayl Статус: Профессиональный Общий рейтинг: 117.12 [Подробней >>] |
Andrew Vext Статус: Доверительный Общий рейтинг: 107.81 [Подробней >>] |
ASMодей Статус: Профессиональный Общий рейтинг: 119.06 [Подробней >>] |
baldr Статус: Профессиональный Общий рейтинг: 114.24 URL: Сайт об ОС DOS. Всем, кто любит эту ОС! [Подробней >>] |
Sensey Статус: Профессиональный Общий рейтинг: 122.29 URL: Страничка рассылки по Паскалю Телефон: +38 (0572) 41-76-04 дом. [Подробней >>] |
Краткий перечень вопросов |
Вопрос № 2094. Меня интересуют доки по ассемблеру с областью применения-вирусы.Если не трудно вышлите, пожалуйста. ... (ответов: 2)
Вопрос № 2095. 1. Я хотел бы уточнить кое-что насчет адресного пространства. Чему оно равно? 64 Тбайта или 4 Гбайта... (ответов: 6)
Вопрос № 2096. Здравствуйте. Что представляет из себя процедура окна по умолчанию (вызываемая api-функцией DefWindo... (ответов: 2)
Вопрос № 2097. Hello man! I need any information about location tasm version 5 or hi! Thank you!!... (ответов: 5)
Вопрос № 2098. Ludi kak iz sma(tolko 8086/8080) peregruzit comp Esli programma v dose rabotaet i kak peregruzit esl... (ответов: 2)
Вопрос № 2099. Здорово мужики! 1. Если кто знает как В VB6 или VBnet использовать Assembler буду вам весьма презнат... (ответов: 2)
Вопрос № 2100. Здравствуйте уважаемые эксперты, ответьте пожалуйста если сможете.Как запустить программы написанные... (ответов: 7)
Вопрос № 2101. Здравствуйте, уважаемые эксперты. Моя до слёз простая программка чёй-то не работает. Предполагаемый... (ответов: 5)
Вопрос № 2102. Здравствуйте господа эксперты! Всё-таки расскажите подробнее, как настроить сеть из двух компов. На ... (ответов: 4)
Вопрос № 2103. Privet vsem. Ja tolko nachal izuchat Asm. Vot moja problema v knige napisan primer. No ja nemogu... (ответов: 8)
Вопросов: 10, ответов: 43
Вопрос № 2094 |
Меня интересуют доки по ассемблеру с областью применения-вирусы.Если не трудно вышлите, пожалуйста.
Заранее благодарен!
Вопрос отправлен: 10.12.2002, 08:30
Отправитель: rams (gultso5@belovo.net.ru)
[Следующий вопрос >>] [Список вопросов]
Отвечает plexus
Доброе время суток, rams!
Глянь на http://www.wasm.ru
В разделе Вирусология.
Ответ отправлен: 10.12.2002, 15:03
Отправитель: plexus
Отвечает Maverick
Добрый день, rams!
www.wasm.ru
Там есть хорошие доки.
Ответ отправлен: 10.12.2002, 08:46
Отправитель: Maverick
Вопрос № 2095 |
1. Я хотел бы уточнить кое-что насчет адресного пространства. Чему оно равно?
64 Тбайта или 4 Гбайта? Я прочитал про это в паре книг, но окончательно запутался. Не могли бы вы
посоветовать какую-нибудь литературу?
2. По поводу вируса. Я правда забыл сказать, что мне нужен вирус по винду.
Broken Sword:
Действительно, мне деструкция ни к чему. Но вопрос: а как мне использовать API если система для меня их не опредилила?
Вопрос отправлен: 10.12.2002, 10:55
Отправитель: Макс
[Следующий вопрос >>] [Список вопросов]
Отвечает Maverick
Здравствуйте, Макс!
Думаю насчет защищенки тебе ответит Broken Sword.
А вот насчет вируса....на сайте www.wasm.ru есть путеводитель по написанию вирусов под винду.
Ответ отправлен: 11.12.2002, 06:38
Отправитель: Maverick
Отвечает Traish
Доброе время суток, Макс!
1. Насчет адресного пространства - тут все просто. Теоретически адресное пространство равно
64 Тб. Это при условии, что ты будешь использовать все 16384 дескриптора (как из LDT, так и из GDT) и
все элементы этих таблиц являются дескрипторами сегментов (а ведь там помимо дескрипторов много чего находится).
Отсюда - 16384 * 4294967296 = 70368744177664 байт.
Фактический размер адресного пространства процесса зависит от числа используемых сегментов. Если ты используешь два
селектора в ds и cs, то у тебя и будет 2 сегмента по 4 Гб.
Что порекомендовать из лит-ры даже не знаю - путаницы везде много. Наверное, документация от INTEL подойдет. Она на
английском правда. Может, кто из экспертов подскажет тебе (да и мне тоже) что-нибудь.
2. Ладно, уболтал - на досуге сочиню что-нибудь.
ЗЫ Слушай, а может тебе какой-нибудь готовый вирус переделать, например тот же CIH - могу исходник дать. Убрать из него деструкцию, да и все.
Ответ отправлен: 10.12.2002, 11:30
Отправитель: Traish
Отвечает Bob Johnson
Приветствую Вас, Макс!
Адресное пространство в общем случае равно 4 ГБ, что соответствует 32-разрядной адресации (2^32 = 4G - 1).
Ответ отправлен: 11.12.2002, 12:30
Отправитель: Bob Johnson
Отвечает keleb-glin
Добрый день, Макс!
В Винде адресное пространство - 4 Гига. Модель памяти - плоская, режим защищённый. Если обладаешь правами - из одного сегмента - по всей оперативе с 32-битным eip.
А в ДОСе - 1 мегабайт.
Читай Юрова.
Спи больше.
Ответ отправлен: 11.12.2002, 22:44
Отправитель: keleb-glin
Отвечает vitya
Добрый день, Макс!
с помощью 32 битов - ты можешь адресовать 4ГБ памяти. = 2^32
С помощью 48 битов - ты сможешь адресовать 2^48 байт памяти = 64TБайт
С помощью 64 битов - уже чудо число 2^64 байт.
Теперь некоторые интел процессоры (я могу ошибаться), по - моему с пентиум 2 - адресная шина у них 48 бит, но операционная система Windows вроде этого чуда не поддерживает, так как, например Вин2000 - есть всего в двух видах 32/64 бит.
Ответ отправлен: 10.12.2002, 15:03
Отправитель: vitya
Отвечает Broken Sword
Приветствую Вас, Макс!
1. Какое именно адресное пр-во? Я посвятил этому целый выпуск (№10) своей рассылки, в двух словах - виртуальное 64 Тб, линейное - 4 Гб, а почему так - читай 10 выпуск. А литературу - любая книга по защ. режиму.
2. Что значит "не определила"? Все API kernel32 и др. стандартных библиотек - ими можно пользоваться из любого процесса. Поиск файла, открытие, запись - это все стандартные штукенции
Ответ отправлен: 10.12.2002, 14:56
Отправитель: Broken Sword
Вопрос № 2096 |
Здравствуйте.
Что представляет из себя процедура окна по умолчанию (вызываемая api-функцией DefWindowProc) для окна диалога, созданного из ресурса (DialogBoxParam)?
(Вызов DefWindowProc в функции диалога ни к чему хорошему не приводит)
Спасибо.
Приложение:
Вопрос отправлен: 10.12.2002, 14:42
Отправитель: [stl] (progressor@ngs.ru)
[Следующий вопрос >>] [Список вопросов]
Отвечает St
Привет, [stl]!
Читайте вниматедьно хелп:
Although the dialog box procedure is similar to a window procedure, it must not call the DefWindowProc function to process unwanted messages. Unwanted messages are processed internally by the dialog box window procedure.
и еще:
Except in response to the WM_INITDIALOG message, the dialog box procedure should return nonzero if it processes the message, and zero if it does not. In response to a WM_INITDIALOG message, the dialog box procedure should return zero if it calls the SetFocus function to set the focus to one of the controls in the dialog box. Otherwise, it should return nonzero, in which case the system sets the focus to the first control in the dialog box that can be given the focus.
St
Ответ отправлен: 11.12.2002, 12:36
Отправитель: St
Отвечает masquer
Добрый день, [stl]!
Обычная пустышка, необходимая для удостоверения того, что отработаны сообщения, посланные окну
Ответ отправлен: 10.12.2002, 15:56
Отправитель: masquer
Вопрос № 2097 |
Hello man!
I need any information about location tasm version 5 or hi!
Thank you!!
Вопрос отправлен: 10.12.2002, 16:33
Отправитель: Nimnul (Nimnul@atrus.ru)
[Следующий вопрос >>] [Список вопросов]
Отвечает Maverick
Здравствуйте, Nimnul!
Ну дык, на английском есть в пакете тасма.
Ответ отправлен: 11.12.2002, 06:39
Отправитель: Maverick
Отвечает Bob Johnson
Hello, Nimnul!
Learn English better before using it.
And try some search engines like yandex.ru to find it yourself.
Ответ отправлен: 11.12.2002, 12:30
Отправитель: Bob Johnson
Отвечает St
Здравствуйте, Nimnul!
Internet
yandex.ru, google.com, filesearch.ru - enter tasm5 or tasm5plus and search
Another place - www.wasm.ru
St
Ответ отправлен: 11.12.2002, 12:41
Отправитель: St
Отвечает masquer
Приветствую Вас, Nimnul!
Learn English first, then learn how to use search engines...
Ответ отправлен: 11.12.2002, 10:41
Отправитель: masquer
Отвечает Traish
Greetings, Nimnul!
Look up for http://wasm.ru/tools/7/tasm50.zip
Ответ отправлен: 10.12.2002, 17:40
Отправитель: Traish
Вопрос № 2098 |
Ludi kak iz sma(tolko 8086/8080) peregruzit comp Esli programma v dose rabotaet i kak peregruzit esli v windows(esli vozmozhno).
esli mozhno otvet na e-mail.
Вопрос отправлен: 10.12.2002, 16:40
Отправитель: Sasha (felistovichs@rambler.ru)
[Следующий вопрос >>] [Список вопросов]
Отвечает Maverick
Приветствую Вас, Sasha!
Для доса:db 0EAh,0,0,0FFh,0FFh
Ответ отправлен: 11.12.2002, 06:39
Отправитель: Maverick
Отвечает igorash
Здравствуйте, Sasha!
в ДОС - jmp по адресу 0f000h:0fff0h, только не говори как, если не знаешь, ищи в предыдущих рассылках, месяца 3-4 назад это был очень частый вопрос ;)
в винде - вызови ExitWindowsEx (0)
Ответ отправлен: 11.12.2002, 03:36
Отправитель: igorash
Вопрос № 2099 |
Здорово мужики!
1. Если кто знает как В VB6 или VBnet использовать
Assembler буду вам весьма презнателен.
2. Кто нибудь умеет програмировать графику на
современном VGA (Типа GeFors или Radeon).
. . .
If (кто_нибудь_знает) = True Then
Help_Me
Else
Спасибо_за_внимание
End If
. . .
Вопрос отправлен: 10.12.2002, 16:48
Отправитель: Nimnul
[Следующий вопрос >>] [Список вопросов]
Отвечает Bob Johnson
Здравствуйте, Nimnul!
1. В VB нельзя использовать асм, т.к. VB - транслятор, а не компилятор. Можно только написать свою библиотеку (DLL) и ее использовать.
2. DirectX 8 SDK - там все подробно и с примерами (есть примеры и для VB).
Ответ отправлен: 11.12.2002, 12:31
Отправитель: Bob Johnson
Отвечает masquer
Добрый день, Nimnul!
1. Я знаю. Самый простой вариант - писать библиотеку на ассемблере, а из бейсика вызывать ее. Прямо писать вставки нельзя.
2. Если кто-нибудь поймет смысл твоего вопроса, тот ответит.
Ответ отправлен: 11.12.2002, 10:44
Отправитель: masquer
Вопрос № 2100 |
Здравствуйте уважаемые эксперты, ответьте пожалуйста если сможете.Как запустить программы написанные на компьтерах Yamaha MSX2,машинные коды ведь разные? Только не отвечайте: "Никак!"
Вопрос отправлен: 10.12.2002, 18:07
Отправитель: Sanya
[Следующий вопрос >>] [Список вопросов]
Отвечает DiGiT[old]
Здравствуйте, Sanya!
Так я не понял как запустить то :)) Бери Yamaha MSX2 и на ней запускай :))
А вообще нужен эмулятор, типа эмулятора под ПС дендевских игрушек :))
Ответ отправлен: 11.12.2002, 09:01
Отправитель: DiGiT[old]
Отвечает Maverick
Здравствуйте, Sanya!
Тебе придется знать ассемблер обоих проциков и написать эмулятор. А в инете искал, мож есть такой.
Ответ отправлен: 11.12.2002, 06:39
Отправитель: Maverick
Отвечает Bob Johnson
Здравствуйте, Sanya!
Разные и просто так действительно никак. Для этого есть специальные проги - эмуляторы - они эмулируют команды одного процессора (и часто весь компьютер) на другом. Вот тебе нужен именно такой.
Ответ отправлен: 11.12.2002, 12:31
Отправитель: Bob Johnson
Отвечает igorash
Здравствуйте, Sanya!
Скорее всего есть всякие эмуляторы...
поищи в инете..
Ответ отправлен: 11.12.2002, 03:36
Отправитель: igorash
Отвечает Ayl
Приветствую Вас, Sanya!
Вау! Любитель MSX появился! :-) Приветствую! Я тоже ее люблю! Ностальгия, блин! :-)
Есть эмуляторы MSX для PC. Я пользуюсь программкой fmsx. Могу выслать, если хочешь. Пиши: ayl@kot.spb.ru
Ответ отправлен: 10.12.2002, 18:24
Отправитель: Ayl
Отвечает Andrew Vext
Добрый день, Sanya!
Скачайте эмулятор MSX и запускайте. Сам так делаю, причем программы запускаются как с винчестера, так и с дискет MSX без всяких проблем. Если надо, могу выслать эмулятор и более подроббные рекомендации. vext@mail.ru
Ответ отправлен: 11.12.2002, 13:33
Отправитель: Andrew Vext
Отвечает ASMодей
Доброе время суток, Sanya!
Можно использовать эмулятор. У меня есть один такой, но он
использует ROM-файлы от Yamaha MSX1. Поищи в инете, наверняка
найдешь то, что нужно.
Ответ отправлен: 11.12.2002, 17:06
Отправитель: ASMодей
Вопрос № 2101 |
Здравствуйте, уважаемые эксперты. Моя до слёз простая программка чёй-то не работает. Предполагаемый смысл программки заключается в следующем: пользователь нажимает на клавишу, и вместо напечатания буквы компьютер производит такое действие, как если бы пользователь нажал ALT-F4, то есть хочет человек что-то напечатать а у него окно закрывается.(пр-мма ес-но резидентная).
Как мне известно, при нажатии любой клавиши вызывается 09h прерывание, в регистр al заносится ASCII код клавиши, и как я понял, в зависимости оттого, какой код, процессор выполняет соответствующие действия. Но, исходя из того факта, что программа ни фига не работает (всё – таки есть в великом и могучем Русском языке выражение «ни фига» раз его WORD не подчеркивает!), понял я неправильно. Отсюда вытекает, собственно, сам вопрос: что я понял не правильно и где ошибка в программе?
CSEG segment
org 100h
Begin:
jmp Init ; Это понятно
Int_09h_proc proc
cmp ax,9988 ; Проверка на повторную загрузку
jne MoyOb
xchg ah,al
iret
MoyOb:
mov ah,06Bh ; Здесь я меняю ASCII код на код сочетания ALT-F4
jmp dword ptr cs:[Int_09h_vect]
Int_09h_vect dd ?
Int_09h_proc endp
Init:
mov ax,8899
int 09h
cmp ax,9988 ; Проверка на повторную загрузку
jne Set_Resid
mov ah,09h
mov dx,offset Mess
int 21h
ret
Set_Resid:
mov ax,3509h
int 21h
mov word ptr Int_09h_vect,bx
mov word ptr Int_09h_vect+2,es
mov ax,2509h
mov dx,offset Int_09h_proc
int 21h
mov dx,offset Init
int 27h
Mess db 'UZE EST'
CSEG ends
end Begin
Вопрос отправлен: 10.12.2002, 19:47
Отправитель: Алексей
[Следующий вопрос >>] [Список вопросов]
Отвечает igorash
Добрый день, Алексей!
Так ты хочешь твоим ДОС-резидентом в винде что-то делать??? не выйдет ;)) учи программинг под винду...
Ответ отправлен: 11.12.2002, 03:40
Отправитель: igorash
Отвечает keleb-glin
Здравствуйте, Алексей!
Если ты перехватил "девятку", то ты первый получаешь управлении при нажатии на клавишу. Изменяешь регистры и отдаешь управление обработчику. Он делает in al, 60h и кладёт в буффер клавы и во флаги клавы соотв. значения. потом подопытная прога ( вернее - вызываемое прерывание запроса ввода ) берёт уже из буффера и флагов нужные значения и кладёт в ah соответствующий extended ascii... А твои значения пропадают. Отсюда мораль - перехватывай "девятку", сначала делай call обычному обработчику. Потом уже в своём, когда туда вернётся управление, изменяй флаги ( адрес - 0040h:0017h ) и буффер. А лучше перехвати соответствующую ф-кцию запроса клавиши. В своём обработчике сначала делай ей call, потом - играй с регистрами ).
Ответ отправлен: 11.12.2002, 22:40
Отправитель: keleb-glin
Отвечает Ayl
Приветствую Вас, Алексей!
Ошибок несколько.
Во-первых, не уверен, что DOS-резидент будет корректно работать под виндой. Т.е. работать-то он будет, но насчет закрывания окна - что-то я сомневаюсь. Все дело в том, что нажатие клавиши первоначально обрабатывает винда, если это ее "любимые" сочетания (типа Alt+F4, Alt+Tab и т.п.), то она посылает окну соответствующий мессадж, типа "закрыть окно" и т.п.
И только если винда не обработала нажатия, то передается управление твоему обработчику. И то, что в нем ты заменишь сочетание на другое, ничего не изменит.
Кстати, в сеансе MS-DOS окно не закрывается по нажатию Alt+F4. Но это так, к слову.
Теперь по поводу программы. Ты не очень хорошо (точнее даже очень нехорошо) разобрался с прерыванием 9. Это аппаратное прерывание, которое инициируется контроллером клавиатуры (КК). Клавиатура - это внешнее устройство, поэтому вся работа с ней может производится только через порты. Т.е. КК заносит в порт (точнее, в свой собственный регистр, значение которого доступно через этот порт) скен-код нажатой клавиши (или несколько скен-кодов для дополнительных клавиш).
Разбирать последовательность скен-кодов занятие довольно утомительное, к тому же КК посылает коды не только для нажатий на клавишу, но также и для отпусканий.
Просто подминить значение в порту нельзя - порт доступен только для чтения.
Поэтому предлагается следующий вариант. При работе в DOS с клавиатурой используется буфер клавиатуры BIOS. Он занимает 16 слов (32 байта) и находится по адресу 0000:041e. Кроме этого, еще существуют 2 указателя - на начало (слово по адресу 0000:041a) и на конец (0000:041c).
Работа обработчика клавиатуры может выглядить так:
1. Сохраняем позицию конца буфера
2. Вызываем старый обработчик клавиатуры
3. Проверяем, что изменилась позиция конца буфера. Если это не так, то это значит, что данное нажатие нас не интересует.
4. Заменяем слово по сохраненному адресу на значение 6b00h.
5. Выходим
И еще замечание. Уже по форме вопроса. Листинги и вообще большие куски текста лучше записывать в Приложение.
Ответ отправлен: 11.12.2002, 11:32
Отправитель: Ayl
Отвечает baldr
Здравствуйте, Алексей!
Твоя ошибка очевидна - ты неправильно понял смысл работы int 9h. При вызове его системой
ни в каких регистрах ничего не находится. Обработчик сам должен считать из порта клавиатуры
код нажатой клавиши и обработать его. Послать же в порт клавиатуры символ нельзя.
В твоем случае, думаю, что даже если бы ты смог что-то туда послать, окно вряд ли закрылось бы.
Потому что Alt-F4 - это сочетание системных клавиш, действует только на виндовые окна. ДОС-окно,
если ты помнишь, еще и спросит - мол, действительно ли Вы хотите закрыть окно?.. Для закрытия
ДОС-окна надо сначала завершить прогу, выполняющуюся в нем.
Ответ отправлен: 10.12.2002, 23:49
Отправитель: baldr
Отвечает ASMодей
Здравствуйте, Алексей!
Ты что, хочешь закрыть Windows-приложение резидентной программой
для DOS ? Это не прокатит. Хотя бы потому, что в Windows
DOS-резиденты не работают.
Ответ отправлен: 11.12.2002, 17:07
Отправитель: ASMодей
Вопрос № 2102 |
Здравствуйте господа эксперты!
Всё-таки расскажите подробнее, как настроить сеть из двух компов. На одном ХР, на другом 98.
Там где ХР в свойствах локального соединения нахожу TCP/IP ставлю 192.168.0.1 и 255.255.255.0,
а на 98 делаю это в Панель Управления -> Сеть -> Конфигурация -> TCP/IP и 192.168.0.2 + 255.255.255.0.
Ничего не меняется. Оба компа видят только себя. Когда на 98 делаю ping ответов 0. XP сам похоже
пингует, но тоже ни хрена не получает в ответ. Может где-то ещё какая холера должна прописываться?
И ещё вопрос. У меня XP. Пишу прогу на асме, вызываю MessageBox, а кнопочка в ней старая. А каким
образом туда красивую кнопку прописать?
Спасибо.
Вопрос отправлен: 10.12.2002, 20:56
Отправитель: Макс (maxe@mail.kz)
[Следующий вопрос >>] [Список вопросов]
Отвечает DiGiT[old]
Добрый день, Макс!
Значит у тя дрова неправильно стоят, или провод глючный. Все там должно воркать.
С ХР не так все просто там новое GDI а именно GDI+, так что либо надо его юзать если тока под ХР или довольствоваться старым.
ЗЫ а насчет сетки смотри это твой косяк.
Ответ отправлен: 11.12.2002, 08:58
Отправитель: DiGiT[old]
Отвечает Bob Johnson
Доброе время суток, Макс!
1. Не стоит указывать в адресах компьютеров нули. Лучше сделай так: 192.168.1.1 и 192.168.1.2. С нулями может и не работать, т.к. обычно нули соответствуют адресам целых сетей (т.е. нескольких компьютеров), а не одному хосту.
2. Вот и меня интересует такой же вопрос - как сделать красивые кнопки в своей проги (не только MessageBox).
Ответ отправлен: 14.12.2002, 18:19
Отправитель: Bob Johnson
Отвечает igorash
Добрый день, Макс!
Насчет сети - вопрос не по теме немного, ну да ладно - ве не увидите друг друга, пока не поставите клиентов для сети микрософт и службу доступа к файлам и принтерам... еще желательно указать одинаковую рабочую группу и разные имена компов ;) кроме того, банальный вопрос - а есть ли сеть вообще??? т.е. горят ли лампочки на сетевухах??
в общем если что пиши на мейл ;)
Ответ отправлен: 11.12.2002, 03:43
Отправитель: igorash
Отвечает masquer
Добрый день, Макс!
Красивая кнопка появится, как только ты оформишь файл манифеста и, либо положишь его рядом со своим файлом (например my_cool_prog.exe.manifest), либо в ресурс запихнешь. Формат и подробности смотри в МСДН.
Ответ отправлен: 11.12.2002, 10:46
Отправитель: masquer
Вопрос № 2103 |
Privet vsem.
Ja tolko nachal izuchat Asm. Vot moja problema v knige napisan primer. No ja nemogu sozdat obektniy fail (ispozuu MASM32) asm postojanno vidaet ohibki:
Assembling: C:masm32projectseduPRIMER31.asm
C:masm32projectseduPRIMER31.asm(18) : error A2006: undefined symbol : OAH
C:masm32projectseduPRIMER31.asm(21) : error A2074: cannot access label through segment registers
C:masm32projectseduPRIMER31.asm(23) : error A2074: cannot access label through segment registers
C:masm32projectseduPRIMER31.asm(14) : error A2004: symbol type conflict
C:masm32projectseduPRIMER31.asm(16) : error A2004: symbol type conflict
C:masm32projectseduPRIMER31.asm(32) : warning A4023: with /coff switch, leading underscore required for start address : BEGIN
Volume in drive C has no label
Volume Serial Number is 3E6B-1DE8
Directory of C:masm32projectsedu
PRIMER31 ASM 456 10.12.02 19:30 PRIMER31.asm
PRIMER~4 BAK 504 10.12.02 19:30 PRIMER31.asm.bak
2 file(s) 960 bytes
0 dir(s) 9 963.77 MB free
V chem problema.
Avtor knigi utvergdaet chto vse ego progi rabotaut.
No ja zamenitl chto ego tjani pisat cod kotoriy podhidt i dlja EXE i dlja COM. Mojet mne smenit knigu (seychas Pirogov V.U. "ASSEMBLER Uchebniy Kurs").
Приложение:
Вопрос отправлен: 10.12.2002, 21:00
Отправитель: Aex (2002ai@ua.fm)
[Следующий вопрос >>] [Список вопросов]
Отвечает Maverick
Приветствую Вас, Aex!
Замеени строку:ASSUME CS:CODSEG, DS:CODSEG, SS:CODSEG
на:ASSUME CS:CODSEG, DS:DSEG, SS:STSEG
А иначе зачем тебе экзешник, если все сегментные регистры ты адресуешь на сегмент кода.
C:masm32projectseduPRIMER31.asm(18) : error A2006: undefined symbol : OAH
Нужно не О писать, а ноль. И пользуйся Tasm, он для DOS лучше.
Ответ отправлен: 11.12.2002, 06:39
Отправитель: Maverick
Отвечает Bob Johnson
Добрый день, Aex!
(18) : error A2006: undefined symbol : OAH
Цифры обычно начинаются с нуля, т.е. "ноль а аш", а не "о а аш" (т.е. ты букву "о" вместо нуля написал.
Далее, ты пишешь assume cs: codeseg, ds: codeseg и все такое, т.к. компилятор считает, что ds у тебя указывает на codeseg, а ты пытаешься прочитать переменную из другого сегмента (dseg). Необходимо assume поправить.
У меня TASM и больше ошибок он не выдал - только 3.
Ответ отправлен: 14.12.2002, 18:20
Отправитель: Bob Johnson
Отвечает Sensey
Добрый день, Aex!
:)
0Ah - это число...
А ты набрал букву O
Ответ отправлен: 11.12.2002, 11:45
Отправитель: Sensey
Отвечает Ayl
Добрый день, Aex!
Во-первых, при отправке вопроса при использовании символа "\" повторяй его дважды.
Теперь по ошибкам.
1. Строка 18. MOV AH,OAH. А глазками посмотреть? У тебя вместо нуля написана буква "O". Есс-но, компилятор ругается на это. Надо заменить на нуль.
2 и 3. А что ты хотел? У тебя переменные LEN и STROKA описаны в сегменте DSEG, а никакой сегментный регистр к нему не привязан. То, что у тебя в программе происходит установка DS, компилятору по барабану. Его интересует строка ASSUME. А там все сегментные регистры привязаны к CODSEG.
Надо написать так:
ASSUME cs:CODSEG, ds:DSEG, ss:STSEG
4 и 5. Неправильная инициализация. Должно быть написано так:
mov ax, seg STSEG
mov ss, ax
mov ax, seg DSEG
mov ds, ax
6. Компилятор утверждает, что он хочет видеть метку BEGIN с ведущим подчеркиванием. Есть у MASMа такая особенность, у него данный режим включен по умолчанию. Посмотри в опциях, как отключить это, или напиши _BEGIN, пусть радуется :-)
Ответ отправлен: 11.12.2002, 11:55
Отправитель: Ayl
Отвечает Traish
Доброе время суток, Aex!
Тебе бы надо сменить ассемблер - на мой взгляд для DOS TASM больше подходит. MASM32 потому и "32", что не для этого создан. А в исходнике есть пара ошибок - OAH - это не имя, а значение 0ah. Зачем создал отдельный сегмент данных, а в директиве assume указал сегмнент кода ds:CODSEG?
Приложение:
Ответ отправлен: 11.12.2002, 01:59
Отправитель: Traish
Отвечает masquer
Здравствуйте, Aex!
Блин, этот вопрос появляется с периодичностью раз в неделю. Сколько уже можно объяснять - для ДОС-программ используется компилятор для ДОС, а не для Windows.
Или это где-то большими буквами выбить нужно... Я уже не говорю об этой мерзкой латинице...
Ответ отправлен: 11.12.2002, 10:49
Отправитель: masquer
Отвечает St
Привет, Aex!
Очень много ошибок!
OAH - символ O (о-о-о) не используется в 16-ричном представлении чисел, попробуйте использовать ноль.
Кроме того много неправильных использований регистров и данных, а также странное оформление программы.
Часто вы используете значения неинициализированных!!! переменных хотя как я понимаю надо использовать их адреса.
Попробуйте посмотреть мой шаблон в Приложении, у меня такая cхема проходила (правда в TASM).
St
Приложение:
Ответ отправлен: 11.12.2002, 13:46
Отправитель: St
Отвечает ASMодей
Приветствую Вас, Aex!
У меня обнаружились только первые три ошибки:
первая из-за неправильного символа OAH в 18 строке, а остальные
две - из-за неправильной директивы ASSUME. Исправь ее на
ASSUME CS:CODSEG, DS:DSEG, SS:STSEG.
Остальные ошибки - из-за неправильных ключей при компиляции.
Попробуй просто: ml.exe my.asm
Ответ отправлен: 11.12.2002, 17:07
Отправитель: ASMодей
Форма отправки вопроса |
Форма может работать некорректно в почтовых программах "Microsoft Outlook" и "Microsoft Outlook Express". В программе The Bat! подобные формы не работают вообще!
После нажатия на кнопку "Отправить", будет открыто второе окно. Заметьте, что в некоторых браузерах могут стоять запреты на открытие других окон, а также "чрезмерное" кэширование данных, при этом факт отправки Вашего вопроса стоит под сомнением.
Мы рекомендуем открывать рассылку в программе Internet Explorer 5.0+ или отправлять вопросы с сайта по адресу: http://rusfaq.ru/cgi-bin/Message.cgi.
© 2002 Команда RusFAQ.ru.
Вопрос и дополнение |
Ваш вопрос:
Приложение (если необходимо):
Получить ответов:
Выбор рассылки |
Программисту Assembler (40) C / C++ (30) Perl (6) Delphi (23) Pascal (25) Basic / VBA (11) Java / JavaScript (9) PHP (4) MySQL / MSSQL (7) |
Пользователю Windows 95/98/Me (31) Windows NT/2000/XP (22) "Железо" (30) Поиск информации (12) |
Администратору Windows NT/2000/XP (11) Linux / Unix (15) |
Юристу Гражданское право (9) Семейное право (3) Трудовое право (6) КоАП (3) |
Отправить вопрос всем экспертам выбранной рассылки.
© 2002 Россия, Москва. Авторское право: RusFAQ.ru |
http://subscribe.ru/
E-mail: ask@subscribe.ru |
Отписаться
Убрать рекламу |
В избранное | ||