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

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.

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

Ваше имя:

Ваш e-mail:

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


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

Ваш вопрос:


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


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


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

Программисту
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
Отписаться
Убрать рекламу

В избранное