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

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


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

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

Выпуск № 697
от 15.02.2004, 02:10

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


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

_vt
Статус: Профессиональный
Общий рейтинг: 117.74
URL: Тест
[Подробней >>]
Bob Johnson
Статус: Профессиональный
Общий рейтинг: 145.09
URL: Программирование
[Подробней >>]
Gibbel
Статус: Профессиональный
Общий рейтинг: 105.96
URL: Savage Metal Club - жизнь в стиле рок-н-ролл
Телефон: +7 901 710 3146
[Подробней >>]
 
Ayl
Статус: Профессиональный
Общий рейтинг: 116.57
[Подробней >>]
Евгений Иванов
Статус: Профессиональный
Общий рейтинг: 135.96
URL: Super Assembler Software
Телефон: Пчёлка +7 905 6601206
[Подробней >>]
never_again
Статус: Опытный
Общий рейтинг: 123.91
[Подробней >>]
 
Dark_Lord
Статус: Профессиональный
Общий рейтинг: 110.2
[Подробней >>]
VOVAN
Статус: Доверительный
Общий рейтинг: 106.91
[Подробней >>]
vitya
Статус: Профессиональный
Общий рейтинг: 108.59
[Подробней >>]
 
St
Статус: Профессиональный
Общий рейтинг: 105.38
[Подробней >>]
Artemy
Статус: Опытный
Общий рейтинг: 115.89
Телефон: 8 905 549 38 66
[Подробней >>]
ASMодей
Статус: Профессиональный
Общий рейтинг: 112.13
[Подробней >>]


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

Вопрос № 4914. Привет, эксперты! Тут у меня такие вопросы возникли. Мне нужно перепрограммировать системный таймер ... (ответов: 2)
Вопрос № 4915. Здравствуйте, эксперты! У меня такой вопрос: Нужно вывести потоковый массив графических точек в откр... (ответов: 1)
Вопрос № 4916. Ув эксперты! Разъясните чайнику.Пытаюсь проверить на валидность PE-файл. 1. CreateFile (exe) 2. Crea... (ответов: 1)
Вопрос № 4917. Gibbel,огромное спасибо за ответ. Ну и объясни тому же чайнику зачем здесь слово ptr? (assume edi:p... (ответов: 1)
Вопрос № 4920. Здравствуйте Gibbel. Спасибо за то , что ответили первым и объяснили некоторые понятия. Теперь у мен... (ответов: 1)
Вопрос № 4922. Здравствуйте! Не могли бы вы мне объяснить кое-что из 13-го выпуска рассылки, там где описывается ви... (ответов: 1)
Вопрос № 4923. Здравствуйте Эксперты, Как мне сделать на Асме двухмерный массив, например: buf[10][*] , *-значит чт... (ответов: 2)
Вопрос № 4925. Скажите пожалуйста, зачем нужны регистры FS и GS?... (ответов: 5)
Вопрос № 4926. Доброго времени суток, уважаемые эксперты. Как в Windows определить размер строки (буквы, цифры) в п... (ответов: 2)
Вопрос № 4927. Народ, что такое с wasm.ru. Уже пару недель не могу зайти... ... (ответов: 1)
Вопрос № 4928. Ay, кто нибудь знает куда делся wasm.ru ?... (ответов: 1)
Вопрос № 4929. Здравствуйте, Эксперты! Нужно решить такую задачу: Допустим есть массив, назовем его А. Нужно обнули... (ответов: 2)
Вопрос № 4930. Как можно с помощью ассемблера узнать пароль на RAR-архив,подсажите пожалуйста. С уважением Станисла... (ответов: 3)
Вопрос № 4931. Здравствуйте Дорогие эксперты. Дело вот в чем. После продолжительных изысканий в области ассемблера ... (ответов: 2)

Вопросов: 14, ответов: 25


 Вопрос № 4914

Привет, эксперты! Тут у меня такие вопросы возникли.
Мне нужно перепрограммировать системный таймер так чтоб он работал с частотой не 18.2 раза в секунду, а от 40 до 240 раз в минуту (0.67 - 4 раза в сек). И отсюда вопросы.
а) Не опасно ли это делать? Не повлияет ли это на работу компьютера в частности временные алгоритмы компа.
б) Если не опасно, то можно спросить как это делать и желательно с не большим примерчиком.
Спасибо за Ваши ответы (если таковые будут! :) )



Вопрос отправлен: 06.02.2004, 10:49
Отправитель: TimerManiac

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

Отвечает _vt

Доброе время суток, TimerManiac!
Подробно все "прелести" и недостатки описаны в старой книге Р.Журдена - есть на сайте kalashnikoff.ru. В общем, ничего страшного, главное, восстановить всё как было после завершения работы программы.
--- E-Man 1.5+ : Sorry for terrible english. My native language is C++


Ответ отправлен: 09.02.2004, 23:06
Отправитель: _vt


Отвечает Bob Johnson

Здравствуйте, TimerManiac!
> а от 40 до 240 раз в минуту (0.67 - 4 раза в сек)
Это невозможно. Минимально возможная частота систменого таймера - 18.2 раза в секунду. Можно чаще, но не реже. Чтобы сэмулировать снижение частоты можно вызывать нужный обработчик не каждый раз, а, например, каждый двадцатый раз.
> Не повлияет ли это на работу компьютера в частности временные алгоритмы компа.
Это приведет к изменении скорости системных часов в досе.

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


Ответ отправлен: 09.02.2004, 10:24
Отправитель: Bob Johnson


 Вопрос № 4915

Здравствуйте, эксперты!
У меня такой вопрос: Нужно вывести потоковый массив графических точек в открытое окно Виндовса, как получится быстрее при использовании АПИ функций или ДИректХ? Важна производительность! Может кто сталкивался с даной проблемой, был бы благодарен за пример.



Вопрос отправлен: 06.02.2004, 12:21
Отправитель: Александр

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

Отвечает Gibbel

Доброе время суток, Александр!
В принципе, используя DirectX сам вывод точек пройдет быстрее, но, если вам требуется разовый вывод, то быстрее будет сделать это на WinAPI, так как инициализация DirectX может занять время, большее, нежели будет выигрыш от его использования.

Ответ отправлен: 06.02.2004, 13:06
Отправитель: Gibbel


 Вопрос № 4916

Ув эксперты!
Разъясните чайнику.Пытаюсь проверить на валидность PE-файл.
1. CreateFile (exe)
2. CreateFileMapping
3. MapViewOfFile,которая возвращает адрес Вида файла в адресном пространстве моего процесса - pMapping.
Это все ясно.Затем в книжке,по которой разбираюсь пишут:
mov edi, pMapping
assume edi:ptr IMAGE_DOS_HEADER
.if [edi].e_magic==IMAGE_DOS_SIGNATURE
Я понимаю,что адрес первого байта в файле присваивают структуре,и теперь можно считывать поля этой структуры.
Но как присвоить адрес структуре в С(API),чтобы затем считать значение e_magic?
Спасибо заранее.



Вопрос отправлен: 06.02.2004, 17:28
Отправитель: Alex

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

Отвечает Gibbel

Приветствую Вас, Alex!
Создаешь указатель на структуру и присваеваешь ему адрес первого байта в файле.

Ответ отправлен: 06.02.2004, 17:44
Отправитель: Gibbel


 Вопрос № 4917

Gibbel,огромное спасибо за ответ.
Ну и объясни тому же чайнику зачем здесь слово ptr?
(assume edi:ptr IMAGE_DOS_HEADER )
Почитал,вроде оно для других целей.
Еще раз спасибо.



Вопрос отправлен: 06.02.2004, 18:18
Отправитель: Alex

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

Отвечает Gibbel

Добрый день, Alex!
mov edi, pMapping ;Загружаем в edi адрес PE-файла
assume edi:ptr IMAGE_DOS_HEADER ;указываем ассемблеру, что edi указывает на структуру IMAGE_DOS_HEADER

В C та же конструкция равносильна:
IMAGE_DOS_HEADER *tmpedi;
tmpedi=(IMAGE_DOS_HEADER*)pMapping;

а вообще, ptr - сокращение от pointer.

Ответ отправлен: 06.02.2004, 19:13
Отправитель: Gibbel


 Вопрос № 4920

Здравствуйте Gibbel.
Спасибо за то , что ответили первым и объяснили некоторые понятия. Теперь у меня появился еще вопрос: какой использовать компилятор? У меня есть TASM 5.0, MASM32 7.0, NASM 1.6, MASM 6.13. Учебников около 15 штук в электронном виде, т.к. там есть описание программирования под dos, windows & UNIX, а в печатном виде у нас в городе я нашел только 2. Спасибо за помощь.



Вопрос отправлен: 07.02.2004, 07:18
Отправитель: dima

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

Отвечает Gibbel

Добрый день, dima!
Компилятор - это дело вкуса. Мне больше симпотизирует TASM с его режимом IDEAL. Но некоторым он кажется неудобным. Попробуйте все, и сами придете к выводу, какой из них вам будет более удобен.

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


 Вопрос № 4922

Здравствуйте!
Не могли бы вы мне объяснить кое-что из 13-го выпуска рассылки, там где описывается вирус. Коткретно мне не понятно почему меняются регистры CS и IP при переходе на метку Lab_jmp, а затем на Lab_return.
Заранее спасибо!
Вот этот вирус:
.286 ;Будем использовать инструкции 80286 процессора (пришло время!)
cseg SEGMENT
assume cs:CSEG, ds:CSEG, es:CSEG, ss:CSEG
org 100h
Begin:
jmp Init ;Преходим на процедуру инициализации

; --- Общие данные ---
Off_move dw offset Lab_jmp ;Смещение и
Seg_move dw 0BF00h ;сегмент адреса, куда будем прыгать
;0BF00h - адрес (сегмент) 7 страницы дисплея
;Младшее слово в начале, а старшее - в конце
Off_return dw offset Lab_return ;Смещение и
Seg_return dw ? ;сегмент адреса для возврата

; === Процедуры работы с файлами ===
; --- Открытие файла для записи ---
; Вход: DX - путь файлу ASCIIZ
; Выход: Handle, BX - номер файла
Open_file proc
mov ax,3D02h ;Открываем файл для чтения/записи
int 21h
mov Handle,ax ;Сохраняем номер файла
mov bx,ax
ret
Handle dw 0FFFFh ;Переменная для хранения номера файла (по умолчанию 0FFFFh)
Open_file endp
; --- Закрытие файла ---
; Вход: Handle - номер открытого файла
; Выход: ничего
Close_file proc
cmp Handle,0FFFFh ;Нет открытых файлов?
je No_close ;Тогда выходим (закрывать нечего!)
mov bx,Handle ;Закрываем файл...
mov ah,3Eh
int 21h
No_close:
ret
Close_file endp
; --- Поиск первого файла ---
Find_first proc
mov ah,4Eh ;Ищем первый файл по маске (Mask_file)
xor cx,cx ;Атрибуты обычные (CX=0)
mov dx,offset Mask_file ;Адрес маски в DS:DX
int 21h ;Теперь (если нашли файл *.com в текущем каталоге)
;имя файла находится по адресу 0BF00:001Eh,
;т.е. по смещению 30...
ret
Mask_file db '*.com',0 ;Маска для поиска (только COM-файлы)
Find_first endp
; --- Поиск следующих файлов ---
Find_next proc
xor dx,dx ;DS:DX указывают на DTA
xor cx,cx
mov ah,4Fh
int 21h
ret
Find_next endp
; --- Заражение файла ---
Infect_file proc
clc ;Пока просто сбросим флаг переноса.
;Типа, заразили файл успешно!
;Потом добавим все, что нужно...
ret
Infect_file endp

; Процедура инициализации вируса
Init:
mov es,Seg_move ;ES - сегмент, куда будем перемещать код вируса,
mov di,100h ;DI - смещение
mov cx,offset Finish-100h ;CX - количество перемещаемых байт
;CX = конец нашего вируса - 100h (PSP)
;Т.е. CX = длина нашего вируса в байтах
mov si,100h ;DS:SI откуда перемещать будем
rep movsb ;перебрасываем нашу программу в область
;7 видеостраницы
; ___________________________________________________
; !!! Теперь ВНИМАТЕЛЬНО следим за CS в отладчике !!!
; ___________________________________________________
jmp dword ptr cs:[Off_move] ;Прыгаем куда переместили (фактически на
;следующую строку, только уже в сегменте
;0BF00h!)
; Что показал отладчик? Подумайте, что произошло...
; Теперь мы уже в области экрана
Lab_jmp:
;Вот сюда-то мы и прыгнули с предыдущей строки! Толко CS теперь
;равен 0BF00h. Внимательно проследите в отладчике за этим...
nop ;Это Вам для отладчика (на всякий случай!)
nop
push cs ;Настроим сегментные регистры
pop ds
mov Seg_return,ss ;Запомним сегмент для возврата.
;SS-то остается прежним!
mov ah,1Ah ;Установим DTA для поиска файлов
xor dx,dx ;Он устанавливается на тот адрес, который содержится
int 21h ;в регистрах DS:DX. В отладчике посмотрите,
;что находится в памяти на которую указывают данные
;регистры, т.е. DS:DX...
;После выполнения следующей процедуры там будет
;находиться что-то ОЧЕНЬ интересное...
call Find_first ;Ищем первый файл
jc Nomore_files ;Нет COM-файлов - на выход
Inf_file:
call Infect_file ;Нашли - пробуем заразить
jnc Nomore_files ;Удалось заразить - выходим
call Find_next ;Не удалось заразить - ищем следующий
jnc Inf_file ;Нашли еще один COM-файл; пробуем заразить...
Nomore_files:
jmp dword ptr cs:[Off_return] ;Возвращаемся в сегмент программы...
;Интересно, а что отладчик говорит по поводу этого jmp'а?
;Возможно, сегментные регистры помогут?
;Теперь мы уже в сегменте зараженной программы...
;Только что произошло самое важное!
Lab_return:
push cs ;Восстановим сегментные регистры...
push cs
pop ds
pop es
mov ah,1Ah ;Восстановим DTA
mov dx,80h
int 21h
ret ;Выходим в DOS...
Finish equ $ ;Метка конца программы-вируса
CSEG ends
end Begin



Вопрос отправлен: 07.02.2004, 13:26
Отправитель: Alex

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

Отвечает Ayl

Здравствуйте, Alex!
Потому что при переходу указывается dword ptr, который выбирает из памяти 4(!) байта, первые 2 определяют смещение следующей команды (помещаются в регистр IP), а вторые - сегмент (помещаются в регистр CS). В результате изменяются и CS, и IP.

По адресу Off_move находится следующее:
Off_move dw offset Lab_jmp ;Смещение и
Seg_move dw 0BF00h ;сегмент адреса, куда будем прыгать

т.е. смещение метки Lab_jmp и адрес сегмента видеопамяти (0BF00h).


Ответ отправлен: 09.02.2004, 11:09
Отправитель: Ayl


 Вопрос № 4923

Здравствуйте Эксперты,
Как мне сделать на Асме двухмерный массив, например: buf[10][*] , *-значит что длина при обьявлении массива не известна, И естественно как обратиться к какому-нибудь элементу массива. Заранее Спасибо



Вопрос отправлен: 07.02.2004, 20:59
Отправитель: Andrei

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

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

Добрый день, Andrei!
Всё должно быть известно.
Выделяешь память под соотв. массив и потом работаешь с ним:
Call GlobalAlloc, GPTR, x*y*SizeOfElements
or eax,eax
jz error
xchg esi,eax
mov eax,[x]
mul [y]
mul [SizeOfElements]
mov al,[esi+eax] ;или ax, eax

* EMan: -=- Любовь существует! =-=


Ответ отправлен: 08.02.2004, 10:50
Отправитель: Евгений Иванов


Отвечает Ayl

Доброе время суток, Andrei!
Ну раз длина неизвестна, значит тебе придется работать с динамическим выделением памяти. Делаешь это так. Описываешь в программе массив из 10-ти указателей:
buf dd 10 dup (?)
Затем определяешь размерность второго индекса, например N.
Делаешь цикл из 10-ти итераций и выделяешь N * sizeof (тип элемента) байт памяти, записывая адрес выделенной памяти в соответствующий элемент массива buf.

Чтобы обратиться к элементу buf [i, j] поступаешь так:
mov bx, i
shl bx, 2 ; ax = 4 * i (нумерация элементов от 0!!!)
mov bx, word ptr buf [bx] ; смещение начала строки buf [i]
mov es, word ptr buf [bx + 2] ; сегмент
mov ax, j
mul elem_size ; умножаем на размер одного элемента в байтах
add bx, ax ; надо следить за тем, чтобы не выйти за предел сегмента!

elem_size - размер элемента в байтах. Если он равен 2, 4 или 8, то можно заменить mul elem_size на соответствующий сдвиг
Первый байт элемента buf [i, j] находится по адресу es:[bx].

Ответ отправлен: 09.02.2004, 12:09
Отправитель: Ayl


 Вопрос № 4925

Скажите пожалуйста, зачем нужны регистры FS и GS?



Вопрос отправлен: 08.02.2004, 04:42
Отправитель: in_transit

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

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

Добрый день, in_transit !
Дополнительные сегментные регистры для доступа к дополн. сегментам данных. Можно использовать по своему усмотреyb.//
* EMan: -=- Любовь существует! =-=


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


Отвечает never_again

Добрый день, in_transit !
Это просто дополнительные регистры. И существуют они для удобства программиста. Ты их используешь так как и любой другой сегментный регистр типа ES. Если ES занят то можешь использовать FS или GS

Ответ отправлен: 08.02.2004, 13:37
Отправитель: never_again


Отвечает Dark_Lord

Добрый день, in_transit !
А зачем нужн ы es и ds?! для адресации куска памяти через них! Чем больше регистров, тем меньше головной боли у программистов!

Ответ отправлен: 08.02.2004, 15:11
Отправитель: Dark_Lord


Отвечает VOVAN

Доброе время суток, in_transit !
fs,gs - регистры типа CS, используются только в тех случаях, когда для кода нужно ещё пара сегментов, то есть почти никогда.

Ответ отправлен: 08.02.2004, 17:49
Отправитель: VOVAN


Отвечает Ayl

Здравствуйте, in_transit!
Чтобы меньше перегружать сегментные регистры. Ты можешь записать в них нужные тебе сегменты и затем обращаться к данным как fs:смещение или gs:смещение


Ответ отправлен: 09.02.2004, 12:13
Отправитель: Ayl


 Вопрос № 4926

Доброго времени суток, уважаемые эксперты.
Как в Windows определить размер строки (буквы, цифры) в пикселях для определённого Device Context -а? Например если нужно вывести строку, но так чтоб оня вся была видима (без scroll окна), то нужно определить размер который она будет занимать в этом окне! Шрифт может быть изменён.



Вопрос отправлен: 08.02.2004, 15:17
Отправитель: Dark_Lord (Dark_Lord@RusFAQ.ru)

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

Отвечает vitya

Приветствую Вас, Dark_Lord!
GetTextExtent() и сопуствующие ему функции - смотри в MSDN.

Ответ отправлен: 08.02.2004, 15:32
Отправитель: vitya


Отвечает St

Привет, Dark_Lord!
Я делал так - выбирается шрифт и создается, затем GetCharWidth - получение массива ширин символов и GetTextExtentPoint32 - высота символа (она одна для всех символов данного шрифта, так что любого). Дальше делал все сам - складывал, умножал, делил для получения строки нужной длины. В win32 есть функции для получения длины строки и для выяснения сколько знаков строки влезет в область нужной ширины, но мне оказалось удобнее и быстрее это сосчитать это самому.
St

Ответ отправлен: 10.02.2004, 12:19
Отправитель: St


 Вопрос № 4927

Народ, что такое с wasm.ru. Уже пару недель не могу зайти...



Вопрос отправлен: 08.02.2004, 22:54
Отправитель: I7cux

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

Отвечает Bob Johnson

Добрый день, I7cux!
http://assembler.ru

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


Ответ отправлен: 09.02.2004, 10:21
Отправитель: Bob Johnson


 Вопрос № 4928

Ay, кто нибудь знает куда делся wasm.ru ?



Вопрос отправлен: 09.02.2004, 01:33
Отправитель: ...Sergei..

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

Отвечает Bob Johnson

Приветствую Вас, ...Sergei..!
http://assembler.ru

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


Ответ отправлен: 09.02.2004, 10:21
Отправитель: Bob Johnson


 Вопрос № 4929

Здравствуйте, Эксперты! Нужно решить такую задачу:
Допустим есть массив, назовем его А. Нужно обнулить нечетные элементы массива А и записать результат в массив В. Размер элемента - 2 байта. В массив В записываются преобразованные и непреобразованные элементы массива А.



Вопрос отправлен: 10.02.2004, 20:09
Отправитель: Kiler

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

Отвечает Ayl

Доброе время суток, Kiler!
Ну и в чем проблема? См. Приложение


Приложение:

Ответ отправлен: 11.02.2004, 11:10
Отправитель: Ayl


Отвечает Artemy

Доброе время суток, Kiler!
dw a 01h, 02h, 03h, 04h, 05h, 06h, 07h, 08h, 09h, 00h
dw b 10 dup(0)
...
...
...
push ds
pop es
mov si,offset a
mov di,offset b
mov cx,10
l: xor ax,ax
test cl,1
jne l1
mov ax,ds:[si]
l1: mov es:[di],ax
inc si
inc di
loop l
b - результирующий массив

Ответ отправлен: 11.02.2004, 09:48
Отправитель: Artemy


 Вопрос № 4930

Как можно с помощью ассемблера узнать пароль на RAR-архив,подсажите пожалуйста.
С уважением Станислав.



Вопрос отправлен: 10.02.2004, 22:39
Отправитель: Станислав

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

Отвечает _vt

Доброе время суток, Станислав!
Пароль на RAR-архив можно узнать, перебирая все возможные варианты, для чего и может помочь ассемблер - напиши программу, которая пытается распаковать архив, перебирая все возможные сочетания символов. Для версии архиватора выше 2.9 лучшие программы перебирают по 2-3 пароля в секунду, а вот zip-пароли - несколько десятков тысяч в секунду. Так что, даже если ты напишешь алгоритм, перебирающий пароли, быстрее, чем известные, то при приличной длине пароля перебор может занять много тысячелетий.
--- E-Man 1.5+ : Sorry for terrible english. My native language is C++


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


Отвечает Ayl

Здравствуйте, Станислав!
Написать программу перебора паролей.


Ответ отправлен: 11.02.2004, 11:12
Отправитель: Ayl


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

Доброе время суток, Станислав!
Пароль на RAR-архив можно узнать только с помощью мозгов и документации,
а ассемблер - это всего лишь инструмент, с таким же успехом можно использовать
и VB.


Ответ отправлен: 11.02.2004, 13:31
Отправитель: ASMодей


 Вопрос № 4931

Здравствуйте Дорогие эксперты. Дело вот в чем. После продолжительных изысканий в области ассемблера на ZX
перешел на всем известный PC. Сталкнулся с проблемой выбора софта для работы. Не будите ли вы так добры просветить меня.Начал изучать TASM,но как можно подбирая скажем значение переменной каждый раз ломиться к компилятору,то к линковшику.Может для ассембдера тоже есть среда програмирования? Еще меня несколько смутило "обширность" исходников для WIN. Чего,эти все АPI функции надо запоминать, а потом ручками набирать? А конкретнее меня интересует demomaking. Спасибо.



Вопрос отправлен: 11.02.2004, 02:02
Отправитель: Hirurg (HirurgMARB@tut.by)

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

Отвечает Bob Johnson

Здравствуйте, Hirurg!
> каждый раз ломиться к компилятору,то к линковшику
Это вполне нормально. На спектруме были гораздо более простые задачи (например, объектных файлов не было вообще), так что там было по другому. Среды программирования есть, конечно, но я бы все-таки рекомендовал пользоваться обычным текстовым редактором (например, far или aditor), а компилировать с помощью батника - по началу тебе этого вполне хватит. Потребность в среде может возникнуть, если на асме писать очень большие проекты.
> Чего,эти все АPI функции надо запоминать, а потом ручками набирать?
А ты чего хотел, что компилятор за тебя их сам вставлял?

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


Ответ отправлен: 11.02.2004, 09:26
Отправитель: Bob Johnson


Отвечает Gibbel

Доброе время суток, Hirurg!
>>После продолжительных изысканий в области ассемблера на ZX перешел на всем известный PC
Думаю, что большая часть экспертов проделала такой же путь ;-)
>>каждый раз ломиться к компилятору,то к линковшику
Все дело в том, что на PC, в большинстве случаев, предполагается сборка конечного кода из нескольких модулей, написанных как на одном языке, так и на разных. Для этого используются obj и lib файлы. В большинстве случаев, конечно, неудобно и ненужно, но так уж повелось. Кстати, есть гибриды компилятор+линковщик, но они, как правило, менее функциональны.
>>Может для ассембдера тоже есть среда програмирования?
Если ты собираешься писать программы для Windows, то, естественно, тебе будет удобнее работать в той же среде Windows. Для этих целей могу тебе посоветовать Negatory Assembly Studio. Правда, отладчик тебе придется все равно запускать вручную.
>>Еще меня несколько смутило "обширность" исходников для WIN. Чего,эти все АPI функции надо запоминать, а потом ручками набирать
Зачем запоминать??? Качаешь себе Platform SDK или покупаешь MSDN и пользуешься ими в процессе работы.
>>А конкретнее меня интересует demomaking
Полазь немного по поисковикам и найдешь уйму инфы на эту тему.

Ответ отправлен: 11.02.2004, 13:16
Отправитель: Gibbel



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

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

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

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

Ваше имя:

Ваш e-mail:

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


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

Ваш вопрос:


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


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


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

Программисту
Assembler (25)
C / C++ (14)
Perl (3)
Builder / Delphi (19)
Pascal (20)
Basic / VBA (9)
Java / JavaScript (3)
PHP (13)
Криптография (5)
WinAPI (11)
Радиоэлектроника (7)
Пользователю
Windows 95/98/Me (41)
Windows NT/2000/XP (56)
"Железо" (36)
Поиск информации (16)
Администратору
Windows NT/2000/XP (31)
Linux / Unix (10)
Юристу
Гражданское право (15)
Семейное право (10)
Трудовое право (12)
КоАП (10)

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




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


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


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

В избранное