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

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


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

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

Выпуск № 628
от 29.08.2003, 23:00

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


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

_vt
Статус: Профессиональный
Общий рейтинг: 121.21
[Подробней >>]
dimka
Статус: Опытный
Общий рейтинг: 139.64
Телефон: (231)-4-43-85
[Подробней >>]
Bob Johnson
Статус: Профессиональный
Общий рейтинг: 152.31
URL: Программирование
[Подробней >>]
 
Greys
Статус: Доверительный
Общий рейтинг: 125.75
[Подробней >>]
Lynx
Статус: Профессиональный
Общий рейтинг: 117.14
Телефон: (8442) 750522
[Подробней >>]
Евгений Иванов
Статус: Профессиональный
Общий рейтинг: 149.13
URL: Super Assembler Software
Телефон: НСС +7 831 3107039
[Подробней >>]
 
Алексей
Статус: Доверительный
Общий рейтинг: 103.92
[Подробней >>]
[L2]Max
Статус: Опытный
Общий рейтинг: 126.72
Телефон: (0562) 323428
[Подробней >>]
ASMодей
Статус: Профессиональный
Общий рейтинг: 113.14
[Подробней >>]
 
Илья
Статус: Опытный
Общий рейтинг: 102.77
[Подробней >>]
Fantomas
Статус: Доверительный
Общий рейтинг: 121.62
[Подробней >>]


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

Вопрос № 3998. Всем привет!!!!! Уважаемые эксперты, я написал на асме текстовый редактор с подсветкой синтаксиса и ... (ответов: 4)
Вопрос № 3999. cseg segment assume cs:cseg,ds:cseg,es:cseg,ss:cseg org 100h begin: mov ah,35h ... (ответов: 7)
Вопрос № 4000. здравствуйте. практикуюсь в ассемблере совсем недавно и ещё не освоился с масмовским компилером. не ... (ответов: 5)
Вопрос № 4001. Уважаемые эксперты! Помогите разобраться с SoftIce. Устанавливаю все как доктор прописал, а когда ... (ответов: 4)
Вопрос № 4002. Уважаемые эксперты, у меня такой вопрос: Как в окне класса "EDIT" убрать(сделать невидимым... (ответов: 4)
Вопрос № 4003. Всем привет!!! Как строку досовского формата (например C:PROGRA~1ANDROI~1.EXE) преобразовать в норма... (ответов: 7)

Вопросов: 6, ответов: 31


 Вопрос № 3998

Всем привет!!!!!
Уважаемые эксперты, я написал на асме текстовый редактор с подсветкой синтаксиса и предлагаю вам его протестировать. Прошу указать все ошибки и слабые на ваш взгляд места. Пока что не берите во внимание проблемы с кириллицей.
Заранее благодарен!!!!
Текстовый редактор: http://asm.fatal.ru/download/txtmania1.0.zip



Вопрос отправлен: 25.08.2003, 01:58
Отправитель: Andrey (AndreyTorba@mail.ru)

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

Отвечает _vt

Добрый день, Andrey!
> я написал на асме текстовый редактор с подсветкой синтаксиса
О, моя любимая тема! Ну, сейчас разнесу! :-)


Итак, просмотрев бегло твой
Редактор, перечисляю:
1) Достоинства:
- наверное, единственное - хороший интерфейс, нестандартные и очень приличные иконки (если действительно твои собственные - очень хорошо!)
2) Недостатки:
- серьезный глюк с подсветкой - какие-то накладки происходят цветов один на другой(в некоторых случаях)... Жирный минус в твою сторону... :-))
- по умолчанию как-то не очень сгруппированы ключевые слова по выделению цветом,
объединение некоторых в одну группу вообще вызывает недоумение...
- интересное явление при встаке даты - 25.08.20 - что бы это значило?? Наверное, зашифровано... :-)
Если необходима более детальная оценка и помощь - пиши. Меня очень интересует эта тема...

---===*** Updated E-Man 1.5 - it's cool!***===---


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


Отвечает dimka

Здравствуйте, Andrey!
Nu poprobuem!!!!

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


Отвечает Bob Johnson

Здравствуйте, Andrey!
А что исходники не выложил?
Кстати, как писал - на основе Rich Edit? Если да, то это плохо, здесь лучше что-то свое придумать.

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


Ответ отправлен: 26.08.2003, 17:48
Отправитель: Bob Johnson


Отвечает Greys

Доброе время суток, Andrey!
Когда-то я написал похожий редактор, но с поддержкой командной строки,советую добавить командную строку в твой редактор, тогда он будет более универсальный (мне это позволяет сократить время на написание прог на ассемблере в самом редакторе)
С уважением, GREYS!

Ответ отправлен: 28.08.2003, 16:38
Отправитель: Greys


 Вопрос № 3999

cseg segment
assume cs:cseg,ds:cseg,es:cseg,ss:cseg
org 100h
begin:
mov ah,35h ;ПОЛУЧАЕМ ВЕКТОР
mov al,21h ;21Н ПРЕРЫВАНИЯ
int 21h
mov word ptr vect,bx ;СОХРАНЯЕМ ЕГО.
mov word ptr vect+2,es
push ds ;ТУТ Я ВРОДЕ КАК ПЫТАЮСЬ
push dx ;ВЫЗВАТЬ 21Н ПРЕРЫВАНИЕ НЕ
push cs ;НА ПРЯМУЮ, А ПО ЕГО ВЕКТОРУ
pop ds ;КАК В РЕЗИДЕНТЕ..НО ,ЧТО ТО
mov dx,offset m1 ;НИЧЕГО НА ЭКРАНЕ НЕ ВИЖУ..
pushf
call dword ptr cs:[vect]
pop dx
pop ds
int 20h
m1 db 'hello!!!$'
vect dd ?
cseg ends
end begin
-------------------------------------------------
ПРИВЕТСТВИЕ, ГОСПОДА!!!!!!!! СПАСИБО ОГРОМНОЕ ЗА СКОРЫЙ ОТВЕТ!!!!! ТАМ ВСЁ КОРОТКО И ЯСНО!!!
Я ПРОДОЛЖАЮ ГЛУМИТЬСЯ НАД РЕЗИДЕНТОМ, РВУ ЕГО НА ЧАСТИ!!
ВОТ ОДНА ИЗ ЭТИХ ЧАСТЕЙ.. ОНА НЕ РАБОТАЕТ.. ПОЧЕМУ?
ЗАРАНИЕ БЛАГОДАРЕН!! (** КЛАСНАЯ У ВАС РАБОТА!! МНЕ Б ТАКУЮ!!! **)



Вопрос отправлен: 25.08.2003, 01:59
Отправитель: Женя (25-49-32@e-mail.ru)

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

Отвечает _vt

Доброе время суток, Женя!
> НИЧЕГО НА ЭКРАНЕ НЕ ВИЖУ.
А ты ничего не должен увидеть: хочешь вывести строку, а не указываешь функцию вывода (mov ah,9 перед вызовом).
По твоему предыдущему вопросу я понимаю так, ты читаешь выпуски рассылки по одному, и пытаешься разобраться. Но ведь ошибки и сильно непонятные места объясняются в следующем выпуске!!! Для начала попробуй обратиться к следующему номеру, если уж сам не понял...
> (** КЛАСНАЯ У ВАС РАБОТА!! МНЕ Б ТАКУЮ!!! **)
Во-первых, это не работа - за это не платят...
Во-вторых, это учеба - разбираясь в чужих ошибках, уже не допустишь таких сам...

---===*** Updated E-Man 1.5 - it's cool!***===---


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


Отвечает Lynx

Здравствуйте, Женя!
Попробуй читать и устанавливать вектора прерываний не через int 21h, а прямым чтением//записью по нужным адресам. Я так всё время из положения выхожу.
Адреса для int 21h:
0000:0084 - смещение обработчика
0000:0086 - сегмент обработчика.


Ответ отправлен: 27.08.2003, 10:42
Отправитель: Lynx


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

Здравствуйте, Женя!
А ты забыл в AH номер фуеции занести.
По моему, 9.


Ответ отправлен: 25.08.2003, 11:26
Отправитель: Евгений Иванов


Отвечает Алексей

Доброе время суток, Женя!
Ты забыл записать в ah номер ф-ции вывода на экран, т.е перед mov dx,ofsset m1 поставь mov ah,9. Исправленный код в приложении.
>ЗАРАНИЕ БЛАГОДАРЕН!! (** КЛАСНАЯ У ВАС РАБОТА!! МНЕ Б ТАКУЮ!!! **)
А кто тебе мешает? Бери, да регистрируйся экспертом!

Приложение:

Ответ отправлен: 25.08.2003, 08:01
Отправитель: Алексей


Отвечает Bob Johnson

Добрый день, Женя!
> РВУ ЕГО НА ЧАСТИ!!
Да это он тебя на части рвет...
> ПОЧЕМУ?
Ты забыл занести номер функции (9) в ah перед вызовом...
Кстати, непонятны все твои действия push cs pop ds - в com файле все сегменты изначально равны!
В приложении твоя программа после переделки...
> ** КЛАСНАЯ У ВАС РАБОТА!! МНЕ Б ТАКУЮ!!! **
А кто тебе сказал, что это - работа??? У нас тут практически добровольный клуб...

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

Приложение:


Ответ отправлен: 25.08.2003, 17:13
Отправитель: Bob Johnson


Отвечает dimka

Доброе время суток, Женя!
Ne ispolizuesh :
mov ah,9
...
int 21h


Ответ отправлен: 26.08.2003, 11:26
Отправитель: dimka


Отвечает Greys

Доброе время суток, Женя!
Все очень просто перед вызовом "call dword ptr cs:[vect]" добавь команду "mov ah,09h", т.е. какую функцию прерывания ты вызываешь и тогда выскочит ожидаемая тобой строка: 'hello!!!'
С уважением,Greys!


Ответ отправлен: 28.08.2003, 18:41
Отправитель: Greys


 Вопрос № 4000

здравствуйте.
практикуюсь в ассемблере совсем недавно и ещё не освоился с масмовским компилером. не получается у меня использовать include файлы. я имею ввиду файлы собственного производства, а не те что идут в комплекте с масм32. всё началось с того что мне надоело для каждой программы писать одни и те же процедурки типа обмера текстовой строки или перевода из hex в dec. и я решил написать универсальные процедуры поместив их в отдельный файл чтобы глаза не мозолили. и всё бы хорошо, но компилятор ругается страшными словами, я уж не знаю чего и придумать. могли бы вы точнее описать метод подключения таких файлов ? как при этом в включаемых процедурах определять локальные метки и локальные секции данных (и неинициализированных) ? не знаю как это сделать - в включаемой процедуре есть блок данных 64к, хотелось бы чтобы имена в нем не пересекались с именами из головного файла. пример не привожу - громоздкий слишком. может кто нибудь подкинет шаблончик включаемого файла и головоного ? заранее спасибо.



Вопрос отправлен: 25.08.2003, 18:11
Отправитель: ukms[z] (ukms@km.ru)

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

Отвечает [L2]Max

Здравствуйте, ukms[z]!
Что ты подразумеваешь под головным файлом, ты думаешь что в ассемблере как в Си есть прототипы ??? Подключаемый файл(исходный) будет полностью продублирован в той части куда его и включили

Ответ отправлен: 26.08.2003, 04:37
Отправитель: [L2]Max


Отвечает ASMодей

Приветствую Вас, ukms[z]!
include-файл - это точно такой же *.asm файл, который будет просто подставляться в программу на место директивы include. Так что простой способ написания *.inc файлов такой: набираешь в основном тексте программы все что нужно, а потом вырезаешь нужные куски в inc-файлы.

Ответ отправлен: 26.08.2003, 07:06
Отправитель: ASMодей


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

Доброе время суток, ukms[z]!
Местные переменные объявляются с помощью двух символов AT:
@@local_perem


Ответ отправлен: 26.08.2003, 13:15
Отправитель: Евгений Иванов


Отвечает Bob Johnson

Доброе время суток, ukms[z]!
> типа обмера текстовой строки
В kernel32.dll есть функция lstrlen.
Вообще же самая распространенная ошибка - это то, что в подключаемом файле в конце пишут end. Этого делать нельзя - потому что этот файл компилятор как бы вставляет в основной в то место, где он нашел include. А end должен быть только один в конце программы.
Локальные переменные в tasm обозначаются как @@имя. При этом нужно указать компилятору директиву locals. Как это в масме - точно не уверен, но есть вероятность, что так же, потому как тасм по умолчанию работает в режиме совместимости с масм.

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


Ответ отправлен: 26.08.2003, 15:49
Отправитель: Bob Johnson


Отвечает Greys

Приветствую Вас, ukms[z]!
Вот шаблон головной процедуры:
.286
CSEG segment
assume cs:CSEG, ds:CSEG, es:CSEG, ss:CSEG
org 100h
Start:
jmp Begin
include key.asm
Begin:
call pause
CSEG ends
end Start
шаблон подключаемого файла:
;*********key.asm************
Pause proc
mov ah,10h
int 16h
ret
Pause endp


Ответ отправлен: 28.08.2003, 03:18
Отправитель: Greys


 Вопрос № 4001

Уважаемые эксперты!
Помогите разобраться с SoftIce.
Устанавливаю все как доктор прописал, а когда запускаю Symbol Loader то
появляется строка:SoftICE is not active. Symbols cannot be loaded.
Заранее огромное спасибо :).
Ramala.



Вопрос отправлен: 25.08.2003, 19:47
Отправитель: Ramala

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

Отвечает Илья

Добрый день, Ramala!
Ты скорее всего работаешь под 2000XP, а она позволяет грузить или не грузить Sice, причём различными способами.
По дефолту (IMHO) стоит manual(самостоятельная) загрузка. Для запуска нужно запустить батник ntice.bat, содержание которого:
net start ntice
Можно настроить и на автоматическую загрузку утилиткой Settings в параметрах Startup.


Ответ отправлен: 25.08.2003, 21:18
Отправитель: Илья


Отвечает _vt

Добрый день, Ramala!
Если под 9x - не запущен WINICE.EXE (должен запускаться из autoexec.bat).
Если под NT - не запущен сервайс NTICE.SYS (по умолчанию, SoftIce в NT системах устанавливается в режиме Manual, т.е. тебе надо его самому запускать, например, даже в меню "пуск" в группе ярлыков софтайса есть ярлык "Start SoftIce" )

---===*** Updated E-Man 1.5 - it's cool!***===---


Ответ отправлен: 25.08.2003, 22:20
Отправитель: _vt


Отвечает Fantomas

Доброе время суток, Ramala!
SoftICE is not active - зайди в опции и
выстави чтоб он грузился с Windows.
Symbols cannot be loaded - значит нет отладочной информации в этом файле, если я не ошибаюсь.
Просто у меня та же история... :-)
И не забудь в настройках добавить некоторые Dll библиотеки !


Ответ отправлен: 26.08.2003, 01:20
Отправитель: Fantomas


Отвечает dimka

Приветствую Вас, Ramala!
V Win Xp,2000 ne rabotaet bez SP3!!!


Ответ отправлен: 26.08.2003, 11:33
Отправитель: dimka


 Вопрос № 4002

Уважаемые эксперты, у меня такой вопрос:
Как в окне класса "EDIT" убрать(сделать невидимым) мигающий курсор?
С помощью WinAPI я создал окно и хочу сделать на нем область для отображения информации(с полосами прокрутки),
класс "STATIC" не подходит, попробовал "EDIT", сделать его ReadOnly получилось, а вот курсор убрать не могу.
В MSDN копался, не нашел.



Вопрос отправлен: 25.08.2003, 21:01
Отправитель: softsnap (softsnap@softhome.net)

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

Отвечает _vt

Доброе время суток, softsnap!
По крайней мере один из способов: функция HideCaret (HWND hEditWnd).

---===*** Updated E-Man 1.5 - it's cool!***===---


Ответ отправлен: 25.08.2003, 22:21
Отправитель: _vt


Отвечает Fantomas

Приветствую Вас, softsnap!
Попробуй заDisableли, только тогда окошко станет
серым !!!
Или тупо отслеживай, чтоб на него не попал фокус,
а если попадает переводи его на другой объект,
например на тот же ScrollBar.

Ответ отправлен: 26.08.2003, 01:20
Отправитель: Fantomas


Отвечает [L2]Max

Добрый день, softsnap!
SetCursor(NULL)

Ответ отправлен: 26.08.2003, 04:53
Отправитель: [L2]Max


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

Здравствуйте, softsnap!
Попробуй SetCaret.


Ответ отправлен: 26.08.2003, 13:18
Отправитель: Евгений Иванов


 Вопрос № 4003

Всем привет!!!
Как строку досовского формата (например C:PROGRA~1ANDROI~1.EXE) преобразовать в нормальную строку (C:Program FilesAndroid.exe)
Заранее благодарен!!!!!



Вопрос отправлен: 25.08.2003, 21:19
Отправитель: Andrey (AndreyTorba@mail.ru)

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

Отвечает Lynx

Добрый день, Andrey!
Никак!!! А тебе зачем? Если прога работает с виндовским форматом строки, то с досовским точно должна работать. Или я ошибаюсь? :)


Ответ отправлен: 27.08.2003, 10:42
Отправитель: Lynx


Отвечает _vt

Доброе время суток, Andrey!
Вроде как существуют API-функции
GetShortPathName - это из длинных в короткие
и
DWORD GetFullPathName(
LPCTSTR lpFileName,
// address of name of file to find path for
DWORD nBufferLength, // size, in characters, of path buffer
LPTSTR lpBuffer, // address of path buffer
LPTSTR *lpFilePart // address of filename in path
); - а эта - из всяких в длинные.

---===*** Updated E-Man 1.5 - it's cool!***===---


Ответ отправлен: 25.08.2003, 22:21
Отправитель: _vt


Отвечает Fantomas

Приветствую Вас, Andrey!
Если ты, например, назвал каталог MyLongFolder под
виндой, то в Dos его имя будет таким: MyLong~1,
и винда помнит его окончание. Но если ты в Dos
что нибудь с ним сделаешь (скопируешь, переименуешь ...),
тогда окончание теряется навсегда. И тогда, брат,
никак ты ее уже не преобразуешь !



Ответ отправлен: 26.08.2003, 01:21
Отправитель: Fantomas


Отвечает ASMодей

Здравствуйте, Andrey!
Посмотри функцию API GetLongPathName.

Ответ отправлен: 26.08.2003, 07:11
Отправитель: ASMодей


Отвечает dimka

Здравствуйте, Andrey!
Esti programma doslnf.com(neobeazatelino ona)
Zaidi na dospage.by.ru...

Ответ отправлен: 26.08.2003, 11:36
Отправитель: dimka


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

Приветствую Вас, Andrey!
Это не строки надо преобразовывать!
А это проблема длинных имён.
Можно получить из короткого имени (или как бы на основе короткого имени)
длинное и наоборот.
Смотри
GetShortPathName
и
GetFullPathName.




Ответ отправлен: 26.08.2003, 13:24
Отправитель: Евгений Иванов


Отвечает Bob Johnson

Здравствуйте, Andrey!
GetLongPathName и GetFullPathName.

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


Ответ отправлен: 26.08.2003, 15:44
Отправитель: Bob Johnson



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

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

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

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

Ваше имя:

Ваш e-mail:

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


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

Ваш вопрос:


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


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


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

Программисту
Assembler (37)
C / C++ (30)
Perl (4)
Builder / Delphi (18)
Pascal (26)
Basic / VBA (8)
Java / JavaScript (8)
PHP (10)
Криптография (9)
WinAPI (16)
Пользователю
Windows 95/98/Me (48)
Windows NT/2000/XP (63)
"Железо" (42)
Поиск информации (23)
Администратору
Windows NT/2000/XP (31)
Linux / Unix (12)
Юристу
Гражданское право (11)
Семейное право (7)
Трудовое право (7)
КоАП (6)

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




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


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


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

В избранное