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

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


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

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

Выпуск № 291
от 15.06.2002, 08:40

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


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

masquer
Статус: Профессиональный
Общий рейтинг: 160.64
[Подробней >>]
UFO
Статус: Опытный
Общий рейтинг: 119.08
[Подробней >>]
GL
Статус: Опытный
Общий рейтинг: 112.02
[Подробней >>]
 
Gibbel
Статус: Доверительный
Общий рейтинг: 110
[Подробней >>]
Beeblebrox
Статус: Опытный
Общий рейтинг: 128.95
URL: Beeblebrox / TMA HomePage
[Подробней >>]
Dark_Lord
Статус: Опытный
Общий рейтинг: 118.91
Телефон: 36 30 3862503
[Подробней >>]
 
Zloy
Статус: Доверительный
Общий рейтинг: 104.97
[Подробней >>]
kvINT
Статус: Доверительный
Общий рейтинг: 116.74
[Подробней >>]
VD
Статус: Опытный
Общий рейтинг: 116.34
URL: Программирование графики на Пакаль со вставками на
[Подробней >>]
 
Vint by Shz
Статус: Доверительный
Общий рейтинг: 116.01
[Подробней >>]
vitya
Статус: Опытный
Общий рейтинг: 117.15
[Подробней >>]
v4D
Статус: Опытный
Общий рейтинг: 112.55
[Подробней >>]
 
Федос
Статус: Начальный
Общий рейтинг: 120
[Подробней >>]
Guess Who
Статус: Начальный
Общий рейтинг: 103.22
[Подробней >>]
Тorax
Статус: Доверительный
Общий рейтинг: 113.65
[Подробней >>]
 
LAO
Статус: Опытный
Общий рейтинг: 117.52
[Подробней >>]
igorash
Статус: Опытный
Общий рейтинг: 133.75
[Подробней >>]
Артём Шегеда
Статус: Профессиональный
Общий рейтинг: 130
URL: Пристанище неодинокого программиста
[Подробней >>]


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

Вопрос № 397. Здравствуйте, уважаемые эксперты! вопрос то у меня собственно такой: поставил я SoftIce из DriverStu... (ответов: 1)
Вопрос № 398. Здраствуйте уважаемые эксперты. Вот тут написал програмку, которая после ввода числа должна вычисл... (ответов: 4)
Вопрос № 400. Здравствуйте, уважаемые эксперты! При прохождении первого же урока рассылки у меня возник такой воп... (ответов: 11)
Вопрос № 401. Здравствуйте, уважаемые эксперты! При прохождении первого же урока рассылки у меня возник такой воп... (ответов: 3)
Вопрос № 403. Здравствуйте Эксперты! Ламерский вопрос о программирование под винды! Мне нужно вывести график в окн... (ответов: 5)
Вопрос № 406. Здравствуйте эксперты! Помогите скрыть процесс Win32 от Task Manager NT – приложение привожу. Тупо, ... (ответов: 1)
Вопрос № 407. Привет всем! Писал недавно в эту рассылку, но подтверждения не получил. Прийдется повторить. Суть та... (ответов: 2)

Вопросов: 7, ответов: 27


 Вопрос № 397

Здравствуйте, уважаемые эксперты!
вопрос то у меня собственно такой: поставил я SoftIce из DriverStudio 2.5 под сначала под Win2000, потом и под XP пробовал - ситуяция одинаковая. Стартовал его различными способами - и при при стартовой загрузке, и вручную - по Ctrl-D активируется, но
почему-то не срабатывают breakpoints и SymbolLoader при открытии любой проги, хоть с отладочной информацией, хоть без оной пишет, что все, дескать загружено, но SoftIce не активируется...
Может я чего не так делаю...



Вопрос отправлен: 10.06.2002, 09:03
Отправитель: Major Pain (mpain@online.sinor.ru)

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

Отвечает masquer

Добрый день, Major Pain!
Что все бряки не срабатывают? Если ты на какую-то функцию бряк ставишь, то проверь, если не уверен, что айс имеет о ней информацию exp YourFuncName, если на память, то, возможно, ты не находишься в адресном пространстве процесса.
С СимволЛоадером есть такая проблема. Я ее рашаю так, открываю Module->Settings... и во всех закладках еще раз прощелкиваю установленные флажки, обычно после первого раза срабатывает. Есть другой путь. В программе в точке входа первым байтом прописываешь CC (опкод int 3). В айсе вводишь команду I3HERE. После выскакивания окна заменяшь CC на оригинальный байт.

Ответ отправлен: 10.06.2002, 09:17
Отправитель: masquer


 Вопрос № 398

Здраствуйте уважаемые эксперты.
Вот тут написал програмку, которая после ввода числа должна вычислять 16% от него. Одноко ничего не происходит.
Помогите пожалуйста разобратся с ней (а ткже обясните как считывать данные из буфера желательно поподробней).


Приложение:


Вопрос отправлен: 10.06.2002, 10:51
Отправитель: nenemo

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

Отвечает UFO

Приветствую Вас, nenemo!
Если ты мне покажешь в своей программе число 16, я тебе напишу_программу,которая будет вычислять, то, что тебе нужно.
Ты даже и не пытался это сделать.
ЗЫЖ Тут без вещественных чисел не обойтись, а это куча кода.

Ответ отправлен: 10.06.2002, 14:12
Отправитель: UFO


Отвечает GL

Доброе время суток, nenemo!
И не может происходить, т.к. самих вычислений в программе-то нет :(
Весь алгоритм примерно такой:
1. ввести число
2. преобразовать его из символьного в двоичный вид
3. поделить на 100
4. умножить на 16
5. результат преобразовать из двоичного в символьный
6. вывести на экран
Какой буфер имеется в виду? Если из твоей программы, то:
mov al,bufer
mov al,bufer+1
mov al,bufer+2
и т.д.

Ответ отправлен: 10.06.2002, 13:15
Отправитель: GL


Отвечает Gibbel

Добрый день, nenemo!
А где то, что не работает???

Ответ отправлен: 10.06.2002, 11:58
Отправитель: Gibbel


Отвечает Beeblebrox

Здравствуйте, nenemo!
.model tiny
.code
org 100h
sta:
mov dx,offset mess1
mov ah,9
int 21h
mov dx,offset buffer
mov ah,0ah
int 21h
mov dx,offset crlf
mov ah,9
int 21h
; buffer содержит число в ascii виде
call ascii2ax ; сам напиши ее
mov bx,16
mul bx
mov bx,100
div bx
; ax содеpжит ответ.
retn
ascii2ax:
; здесь вписать программу перевода из ascii в число (регистр ax)
retn
mess1 db 'введите число'
crlf db 0dh,0ah,'$'
buffer db 128 dup(?)
end sta


Ответ отправлен: 10.06.2002, 11:29
Отправитель: Beeblebrox


 Вопрос № 400

Здравствуйте, уважаемые эксперты!
При прохождении первого же урока рассылки у меня возник такой вопрос. Что означают буквы db при выводе сообщения на экран:
...
mov dx,offset Sring
...
String db 'Test message$'
...
Буду очень признателен за объяснение.



Вопрос отправлен: 10.06.2002, 14:12
Отправитель: Вадим

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

Отвечает masquer

Добрый день, Вадим!
define byte - db - т.е. строка как набор байтов, есть еще define word - dw, define double - dd, определить слово и двойное слово соответственно.
А повторять вопрос не надо, читать умеем :)

Ответ отправлен: 10.06.2002, 17:58
Отправитель: masquer


Отвечает Dark_Lord

Доброе время суток, Вадим!
db - byte (байт)
dw - word (Слово)
dd - doubleword (двойное слово)


Ответ отправлен: 10.06.2002, 20:20
Отправитель: Dark_Lord


Отвечает Zloy

Приветствую Вас, Вадим!
Это одна из директив определения данных. Ну типа, как int или char в языках высокого уровня. Данные могут быть:
DB - определить байт -
DW - определить слово -
DD - двойное слово (4 байта) -
DQ - четыре слова (8 байт) -
DT - десять байт -
- db - позволяет определить строку любой длинны или однобайтовую константу.



Ответ отправлен: 10.06.2002, 19:25
Отправитель: Zloy


Отвечает kvINT

Приветствую Вас, Вадим!
db - значит строка с именем String состоит из байт.
dw - резервируется память для слова
dd - для данных размером в 4 байта
df - 6
dp - 6
dq - 8
dt - 10 байт
Это директивы резервирования и инициализации данных, указывают транслятору выделить определенный объем памяти.
Аналог объявления и определения переменных на С.


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


Отвечает Beeblebrox

Доброе время суток, Вадим!
Это объявление переменной типа "массив байт"
Аналог на С выглядит так:
unsigned char String[]="Test message";
Отличие в том, что на С строка заканчивается нулем, а на асме ты сам определяешь, чем тебе выгоднее закончить строку. Например, для последующей печати строки функцией 9 прерывания int 21h надо заканчивать строку символом '$'

Ответ отправлен: 10.06.2002, 14:39
Отправитель: Beeblebrox


Отвечает VD

Здравствуйте, Вадим!
Это говорит что данные резервируются как байты, тоесть d - data b - byte


Ответ отправлен: 10.06.2002, 15:10
Отправитель: VD


Отвечает Vint by Shz

Дмюоьх делщ, Ачдук!
Амп фупчпчпч:
Дйз мноедейелуз ыйекелпма дчлльс укевпъз ъйедявшуе дуоеипуаь: DB
(ючхп), DW (ъймам), DD (дамхлме ъймам), DQ (ябепаеоеллме ъймам) у DT
(деъзпщ ючхп).
Аьочтелуе кмтеп ъмдеотчпщ имлъпчлпя, лчноукео:
FLD1 DB 25
уйу цлчи амномъч дйз лемноедейеллмжм цлчбелуз, лчноукео
FLDB DB ?
Аьочтелуе кмтеп ъмдеотчпщ леъимйщим имлъпчлп, очцдейелльс цчнзпьку у
мжочлубелльку пмйщим дйулмх ъпомиу:
FLD3 DB 11, 12, 13, 14, 15, 16, ...
Чъъекюйео мноедейзеп ыпу имлъпчлпь а ауде нмъйедмачпейщлмъпу cкетльс ючхп.
Ъъьйич нм укелу FLD3 яичцьачеп лч неоаяв имлъпчлпя, 11, нм FLD3+1 - лч
апмояв, 12. (FLD3 кмтлм ноедъпчаупщ ичи FLD3+0). Лчноукео имкчлдч
MOV AL,FLD3+3
цчжоятчеп а оежуъпо AL цлчбелуе 14 (эеъп. 0E). "
Ыпм дйз буъймаьс цлчбелух ,ч а памTк ноукеое DB оецеоауояеп ле зфехия чнкзпу очцкеома а ючхп ,ч нчкзпщ нмд ъпомия очцкеомк дм 255 ъукамйма.


Ответ отправлен: 11.06.2002, 08:07
Отправитель: Vint by Shz


Отвечает vitya

Приветствую Вас, Вадим!
db - озночает define byte, позволяет выделить память для одного или массива из байтов.


Ответ отправлен: 10.06.2002, 14:23
Отправитель: vitya


Отвечает v4D

Приветствую Вас, Вадим!
db - резервируем память для данных размером 1 байт
mov dx, offset String - смещение String заносим в dx

Ответ отправлен: 10.06.2002, 23:22
Отправитель: v4D


Отвечает Федос

Добрый день, Вадим!
define byte


Ответ отправлен: 10.06.2002, 18:25
Отправитель: Федос


Отвечает Guess Who

Здравствуйте, Вадим!
db - это директива Ассемблера, которая указывает компилятору, что нужно включить в программу данные, размерность которых 1 байт. Т.о. под каждую букву в строке выделяется 1 байт. Также существуют и другие подобные директивы:
dw - определить ячейку памяти размером в слово(2 байта)
dd - - - - - - - - - - - - - - - - - двойное слово(4 байта)
df - 6 байт
dq - 8 байт
dt - 10 байт
Если совсем точно, то мы указаываем тип переменной.

Ответ отправлен: 11.06.2002, 00:30
Отправитель: Guess Who


 Вопрос № 401

Здравствуйте, уважаемые эксперты!
При прохождении первого же урока рассылки у меня возник такой вопрос. Что означают буквы db при выводе сообщения на экран:
...
mov dx,offset Sring
...
String db 'Test message$'
...
Буду очень признателен за объяснение.



Вопрос отправлен: 10.06.2002, 14:12
Отправитель: Вадим

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

Отвечает Тorax

Здравствуйте, Вадим!
Здесь db означает, что для каждой буквы, которая в лапках, будет зарезервирован байт со значением этой буквы в ASCII.
Вообще-то рассылка хорошо, но книга(бумажная) - лучше :-))
Torax


Ответ отправлен: 10.06.2002, 22:19
Отправитель: Тorax


Отвечает LAO

Приветствую Вас, Вадим!
db - тип данных: байт. В данном случае - строка из определенного числа элементов, размер каждого - 1 байт.

Ответ отправлен: 10.06.2002, 22:32
Отправитель: LAO


Отвечает igorash

Здравствуйте, Вадим!
Define Byte, т.е. определить байт. ВЫ что ваще книжек не читаете там???



Ответ отправлен: 13.06.2002, 19:27
Отправитель: igorash


 Вопрос № 403

Здравствуйте Эксперты!
Ламерский вопрос о программирование под винды! Мне нужно вывести график в окно win32 и я не намерен свой графики(одна-две линии) записовать в .bmp , мне просто нужно вывести линию! Но во всех примерах, книгах и т.д. написано:
"Вывод БИТМАПА на экран"
Помогите! Скажите, как вывести точку хотя бы на экран!



Вопрос отправлен: 10.06.2002, 21:04
Отправитель: Dark_Lord

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

Отвечает Zloy

Приветствую Вас, Dark_Lord!
Сначала получаешь DC.
Вывод пихеля - SetPixel (hDC, X, Y, RGB (Red, Green, Blue);
Линии - MoveTo (hDC, X0, Y0);
LineTo (hDC, X, Y);
Ну и удаляешь DC.
PS>про ДС посмотри в "Вывод БИТМАПА на экран", там точно про это есть и вообще читай MSDN!


Ответ отправлен: 11.06.2002, 19:57
Отправитель: Zloy


Отвечает Артём Шегеда

Доброе время суток, Dark_Lord!
Просто точку?
Точка - есть прямая нулевой длины. Вот это нам и нужно!
Есть такие функции: MoveToEx и LineTo. Рисовать нужно по КонтекстуУстройства (DC).
Кроме того, тебе пригодятся функции CreatePen, SelectObject и DeleteObject. Без Win32SDK не разберёшься - а пересказывать N мегабайт мне в лом...
Пример на Си.

Приложение:

Ответ отправлен: 10.06.2002, 22:43
Отправитель: Артём Шегеда


Отвечает Gibbel

Здравствуйте, Dark_Lord!
Винды устроены так, что любое изображение в них представляется в виде битмапа (любит мелкософт изврат)). Для вывода линии/точки тебе необходимо получить контекст окна (грубо говоря, ссылку на тот самый битмап, который отображается в твоем окне) и в него уж рисовать, а для этого уже можно пользоваться стандартными виндовыми функциями.

Ответ отправлен: 11.06.2002, 09:45
Отправитель: Gibbel


Отвечает masquer

Приветствую Вас, Dark_Lord!
Получаешь контекст устройства (окна, например) и используешь функции GDI

Ответ отправлен: 10.06.2002, 22:40
Отправитель: masquer


Отвечает vitya

Приветствую Вас, Dark_Lord!
Используйте API фунцкии. Вам нужна переменная типа HDC и для нее вызовите функцию GetDC(). Дальше вы открываете MSDN и смотрите какие функции вам нужны. Скорее всего вам понадобятся MoveTo(), LineTo(), Rectangle(), Ellipse(), FillRect() и конечно, TextOut(). После работы надо не забыть и вызвать ReleaseDC() что бы освободить устройство.

Ответ отправлен: 14.06.2002, 08:46
Отправитель: vitya


 Вопрос № 406

Здравствуйте эксперты!
Помогите скрыть процесс Win32 от Task Manager NT – приложение привожу. Тупо, но хотелось бы знать, существуют способы решения этой задачи или нет. Для собственной подстраховки. Он похоже перебирает процессы по их ID в global descriptor table, а может и нет – все таки у него привилегии драйвера – в общем я мало знаю пока об этом…
Спасибо всем ответившим.
P.S. если кому интересно приводит Win98 в невменяемое состояние в считанные секунды на быстрых процессорах, чем быстрее тем лучше…только размер стека дочернего процесса не оптимизирован, но большой лучше не делать - просто забивает всю виртуальную память, но Win продолжает работать.


Приложение:


Вопрос отправлен: 10.06.2002, 22:36
Отправитель: re666_im7

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

Отвечает masquer

Здравствуйте, re666_im7!
Это не интересно, интересней создавать окна, так что таск манагеру даже не удастся создать свой экземпляр окна. А спрятать задачу по НТ тебе не удастся, по крайней мере я такой информации не имею. Дополнительно можешь Рихтера почитать по этой теме.

Ответ отправлен: 11.06.2002, 07:37
Отправитель: masquer


 Вопрос № 407

Привет всем!
Писал недавно в эту рассылку, но подтверждения не получил. Прийдется повторить. Суть такая- на сайте Assembler.ru ,был тест для настоящих программистов. Был там вопрос про комманду XOR. В примечании писалось, что каждый настоящий программист мечтает написать программу из одних XOR'ов. Я загорелся этой идеей и написал нижеследующее. Понимаю, что писать такие программы глупо, но всетаки здесь присутствует доля юмора. И еще, в данный момент я пытаюсь написать упаковщик для программ меньше килобайта, по этому буду рад любой информации по данной теме.


Приложение:


Вопрос отправлен: 11.06.2002, 04:44
Отправитель: Trever (trever72@mtu-net.ru)

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

Отвечает Beeblebrox

Здравствуйте, Trever!
По вопросу об упаковщике почитай
http://book.itep.ru/1/intro1.htm
Кроме того, в этой книге есть ответы на все остальные вопросы, которые человек способен задать:)

Ответ отправлен: 11.06.2002, 10:58
Отправитель: Beeblebrox


Отвечает igorash

Добрый день, Trever!
А сколько у тебя по тесту??? У меня что-то около 75-80, не помню уже. А прога веселая, ;).


Ответ отправлен: 13.06.2002, 19:26
Отправитель: igorash



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

Внимание!
Форма может работать некорректно в почтовых программах "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 (51)
C / C++ (31)
Perl (10)
Delphi (14)
Pascal (26)
Basic / VBA (15)
Java / JavaScript (6)
PHP (7)
MySQL / MSSQL (7)
Пользователю
Windows 95/98/Me (47)
Windows NT/2000/XP (33)
"Железо" (39)
Поиск информации (20)
Администратору
Windows NT/2000/XP (15)
Linux / Unix (9)
Юристу
Гражданское право (11)
Семейное право (5)
Трудовое право (6)
КоАП (3)

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




be number one Яндекс цитирования

© 2002 Россия, Москва. Авторское право: RusFAQ.ru


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

В избранное