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

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


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

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

Выпуск № 474
от 22.01.2003, 06:10

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


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

Eugene
Статус: Опытный
Общий рейтинг: 108.82
URL: мощный файловый архив
[Подробней >>]
Broken Sword
Статус: Профессиональный
Общий рейтинг: 126.9
URL: моя рассылка по Protected Mode
[Подробней >>]
Igoryk
Статус: Опытный
Общий рейтинг: 146.84
URL: IgorykSoft
[Подробней >>]
 
Ayl
Статус: Профессиональный
Общий рейтинг: 117.66
[Подробней >>]
Maverick
Статус: Профессиональный
Общий рейтинг: 139.86
URL: Задачи по ассемблеру
Телефон: 89039415024 (BeeLine GSM)
[Подробней >>]
AlX1024
Статус: Начальный
Общий рейтинг: 113.23
[Подробней >>]
 
Bob Johnson
Статус: Профессиональный
Общий рейтинг: 152.82
URL: Программирование
[Подробней >>]
ASMодей
Статус: Профессиональный
Общий рейтинг: 117.83
[Подробней >>]
masquer
Статус: Профессиональный
Общий рейтинг: 146.46
[Подробней >>]
 
keleb-glin
Статус: Опытный
Общий рейтинг: 113.4
[Подробней >>]
LIFO
Статус: Профессиональный
Общий рейтинг: 119.18
URL: наш сайт
Телефон: 8 01710 24758
[Подробней >>]


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

Вопрос № 2432. Здравствуйте, эксперты! Пишу вам в первый раз, у меня не вопрос, а скорее просьба. Ассемблер я не из... (ответов: 5)
Вопрос № 2433. Привет всем! У меня вопрос: как найти каталог(и) и как узнать текущую дату? Спасибо... (ответов: 3)
Вопрос № 2434. Доброго дня всем!!! Какие есть (который знаете) самые маленькие и эффективные вирусы? Е... (ответов: 3)
Вопрос № 2435. Здравствуйте, эксперты и подписчики! ASM к своему стыду изучал я давно и не очень хорошо, вот и проб... (ответов: 6)
Вопрос № 2436. Многоуважаемые эксперты, помогите, пожалуйста, с захватом содержимого экрана, наподобие PrintScreen... (ответов: 1)
Вопрос № 2437. Здравствуйте! У меня два вопроса по работе с файлами: 1.Вот пишу CSEG segment assume cs:CSEG, ds:C... (ответов: 3)
Вопрос № 2438. А какие процессоры выбирают ассемблерщики Intel или AMD? Всю жизнь сижу на Intel'e, а щас вот апгрей... (ответов: 7)

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


 Вопрос № 2432

Здравствуйте, эксперты!
Пишу вам в первый раз, у меня не вопрос, а скорее просьба.
Ассемблер я не изучала, но в универе на сессию дали задание написать прогу на нем. Не знаю, что делать, до сессии осталась неделя, а задание не готово...
Задание легкое: составить программу вывода на экран нескольких вертикальных линий синего цвета с произвольными координатами, используя один сегмент кода.
Буду очень вам признательна, если вы мне поможете, для меня это важно. Подскажите сайт, на котором можно прочесть информацию по изучению Ассемблера.
Огромное спасибо, буду ждать вашего ответа.



Вопрос отправлен: 17.01.2003, 07:23
Отправитель: Lika

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

Отвечает Eugene

Доброе время суток, Lika!
Сомневаюсь, что тебе помогут какие-то сайты. Чтобы выучить ассемблер за неделю на том уровне, который нужен тебе, нужна книжка.

Ответ отправлен: 17.01.2003, 09:46
Отправитель: Eugene


Отвечает Broken Sword

Доброе время суток, Lika!
Мишка!!! Ты чтоль? :)
Igoryk, как насчет compo по этим синим полоскам?
; tasm /m 2432.asm
; tlink /3 /x /t 2432.obj
; 2432.com
; 14 bytes
.model tiny
.code
.386
org 100h
@@start:
xchg AX,DI ; DI=0
mov AH,99h ; blue on blue
;int 10h ; uncomment for WinXP
push 0B800h
pop ES ; ES=>video
mov CX,1000 ; 40x25
rep stosd ; fill screen

ret
end @@start

Ответ отправлен: 17.01.2003, 11:38
Отправитель: Broken Sword


Отвечает Igoryk

Здравствуйте, Lika!
Отпиши на почту igoryk@yandex.ru:
1. Сколько вывести линий
2. Как это вертикальные линии с произвольными координатами? (только по оси x произвольные?)?
3. Какое разрешение экрана использовать?
4. По-подробнее напиши задание.

Ответ отправлен: 17.01.2003, 16:46
Отправитель: Igoryk


Отвечает Ayl

Добрый день, Lika!
Ну что делать, что делать... Извечный русский вопрос. Еще можно узнать - а кто, собственно, виноват.
В общем, суть в том, что за неделю изучить ассемблер практически нельзя. Потому что он очень сильно отличается от прочих языков своей идеологией. Но если интересно - можешь посмотреть рассылку Калашникова на Subscribe.ru.
Кстати по заданию. Для какого режима должна быть программа - для текстового или графического? В общем, в приложении см. вариант для графического режима.

Приложение:

Ответ отправлен: 17.01.2003, 17:16
Отправитель: Ayl


Отвечает Maverick

Приветствую Вас, Lika!
www.wasm.ru
Может даже подобный исходник найдешь.


Ответ отправлен: 20.01.2003, 04:42
Отправитель: Maverick


 Вопрос № 2433

Привет всем!
У меня вопрос: как найти каталог(и) и как узнать текущую дату?
Спасибо



Вопрос отправлен: 17.01.2003, 17:20
Отправитель: Faraon (faraon@hotmail.ru)

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

Отвечает Igoryk

Приветствую Вас, Faraon!
А в какой ОС? Если в DOS, то используй прерывания (в TechHelpе подробно все описано). Если же в Windows, то используй функции FindFile и GetTime.

Ответ отправлен: 18.01.2003, 21:28
Отправитель: Igoryk


Отвечает AlX1024

Здравствуйте, Faraon!
Время DOS можно получить через 2A int21.
После выполнения получаешь:
AL - день недели (воскресенье - 0)
CX - год
DH - месяц
DL - число
Время из часов - через 4 int1a
AH - 0 и CF=0, если нет ошибки
CH - век (19-20)
CL - год (0-99)
DH - месяц (1-12)
DL - число (1-31)
Все числа - шеснадцатеричные.

Ответ отправлен: 17.01.2003, 21:18
Отправитель: AlX1024


Отвечает Bob Johnson

Доброе время суток, Faraon!
Текущая дата: GetDateFormat
найти каталог - обычным образом: FindFirstFile и FindNextFile


Ответ отправлен: 19.01.2003, 02:54
Отправитель: Bob Johnson


 Вопрос № 2434


Доброго дня всем!!!
Какие есть (который знаете) самые маленькие и эффективные
вирусы? Если у кого есть, то вышлите на мыло исходники.
За ранее спасибо!



Вопрос отправлен: 17.01.2003, 17:43
Отправитель: Vah (Bigvah@yandex.ru)

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

Отвечает Igoryk

Приветствую Вас, Vah!
Могу прислать (хотя возможно у тебя есть) в DrWeb'е в файле типа readme. Приведен текст абсолютно безвредного вируса (около 23 байт).

Ответ отправлен: 18.01.2003, 21:29
Отправитель: Igoryk


Отвечает AlX1024

Добрый день, Vah!
Самый маленький вирус, который я знаю - Tiny.80. Но его исходника у меня нет. Но у меня есть исходник Tiny.132 - но это тоже немного. Но, самый эффективный, на мой взгляд, вирус - это OneHalf. Мало того, что он был сильно распространен в России два-три года назад, так он отлично работает и в DOS, и в Win9x. Это, конечно, если нет резидентного антивируса или прочей гадости. Но многие бутменеджеры, например, System Commander, находят вирус при первой же перезагрузке зараженной машины. И предлагают их удалить. Тот же OneHalf не работает под WinNT. Вообще, у меня есть куча всяких вирусов в исходниках. Надо - замылю. Пиши на alx1024@mail.ru.

Ответ отправлен: 17.01.2003, 20:58
Отправитель: AlX1024


Отвечает Maverick

Добрый день, Vah!
Смотря каких типов.
Вообще самые маленткие-оверврайтеры(overwrite), т.е. перезаписывающие.
Они находят файл и пишут себя поверх него, тем самым уничтажая файл.
Они самые простые.

Ответ отправлен: 20.01.2003, 04:42
Отправитель: Maverick


 Вопрос № 2435

Здравствуйте, эксперты и подписчики!
ASM к своему стыду изучал я давно и не очень хорошо, вот и проблема теперь. Подскажите, как мне сосчитать сумму цифр (двоичных) числа, находящегося в регистре.
Заранее огромное спасибо.



Вопрос отправлен: 17.01.2003, 21:33
Отправитель: Andrew

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

Отвечает Broken Sword

Добрый день, Andrew!
подозреваю, что ты имеешь ввиду не регистр процессора, а какого то устройства. вообщем принцип такой:
mov CX,reg_size
@@next_bit:
shr reg,1
stalc
add counter,AL
loop @@next_bit


Ответ отправлен: 18.01.2003, 01:10
Отправитель: Broken Sword


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

Приветствую Вас, Andrew!
Ну например так:
;Предположим, что число находится в DX
sub ax,ax
mov cx,16
l1: rol dx,1
adc ax,0
loop l1
;Теперь в AX - сумма всех двоичных цифр


Ответ отправлен: 18.01.2003, 09:57
Отправитель: ASMодей


Отвечает masquer

Доброе время суток, Andrew!
В дополнение к уже сказанному команду bt можно использовать

Ответ отправлен: 18.01.2003, 13:31
Отправитель: masquer


Отвечает Bob Johnson

Здравствуйте, Andrew!
пусть eax - число.
xor ecx, ecx
@@m1:
shr eax, 1
adc ecx, 0
test eax, eax
jnz @@m1
ecx - число бит


Ответ отправлен: 19.01.2003, 02:55
Отправитель: Bob Johnson


Отвечает Maverick

Здравствуйте, Andrew!
Я так понял сумму 0и1...
Например число находится в аl.
1.Обнуляешь ah, и делаешь сдвиг битов влево на одну поцицию.
2.Приплюсовываешь ah к переменной или другому регистру(результат)
3.loop 1 -8раз
Вобщем примерно так.


Ответ отправлен: 20.01.2003, 04:42
Отправитель: Maverick


Отвечает Ayl

Здравствуйте, Andrew!
Ну, например, вот так:
; AX = число, BX = результат
mov bx, ax
and bx, 1 ; вначале сумма равна младшему биту
mov cx, 15 ; с оставшимися 15-ю выполнить:
l:
rol ax, 1 ; поместить в CF старший бит
adc bx, 0 ; прибавить к bx значение CF
loop l ; повторить 15 раз (кроме младшего бита)
rol ax, 1 ; восстановить как было


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


 Вопрос № 2436

Многоуважаемые эксперты, помогите, пожалуйста, с захватом содержимого экрана, наподобие PrintScreen. Я использую API функцию BitBlt c интервалом в 5 секунд, при этом машина ощутимо подтормаживает, может есть какая-нибудь альтернатива?



Вопрос отправлен: 17.01.2003, 21:36
Отправитель: new2 (new2@bk.ru)

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

Отвечает Bob Johnson

Добрый день, new2!
1. Upgrade машины.
2. Если тебе нужно только одно окно - захватывй только его.
3. Наверное, ты каждый раз создаешь в памяти bitmap и потом его удаляешь - не делай этого, копируй в один и тот же.


Ответ отправлен: 19.01.2003, 02:55
Отправитель: Bob Johnson


 Вопрос № 2437

Здравствуйте!
У меня два вопроса по работе с файлами:
1.Вот пишу
CSEG segment
assume cs:CSEG, ds:CSEG, es:CSEG, ss:CSEG
org 100h
Start:
mov ax,3d00h
mov dx,offset file ;открываем на чтение
int 21h
mov handle,ax ;сохраняем
mov bx,handle
mov ah,3fh
mov cx,0FFFFh ;читаем полностью??
mov dx,offset buf;в буфер
int 21h
mov bx,handle ;закрываем
mov ah, 3eh
int 21h
mov ah,9 ;выводим
mov dx,offset buf ;прочитанное
int 21h ;на экран
mov ah,4ch
int 21h
file db 'C:1.txt',0
buf db 500 dup (0)
Handle dw ?
CSEG ends
end Start
На экран почему-то выводиться какие-то ероглифы ... хотя вначале пишется текст прочитанного
файла. Как вывести нормально??
2.Как вывести на эран только 4 строку из файла ... типа этого на delphi
var
f:textfile;
i:integer;
s:string;
begin
i:=0;
assignfile(f,'c:1.txt');
reset(f);
while not eof(f) and (i<4) do begin
readln(f,s);
inc(i);
end;
closefile(f);
showmessage(s);
end;
lamachok
lamachok@mail.ru



Вопрос отправлен: 17.01.2003, 23:04
Отправитель: lamachok

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

Отвечает masquer

Добрый день, lamachok!
1. Под досом я тебе не помошник, смотри под отладчиком, строка вывода завершаться должна либо 0, либо $, проверяй в этом направлении.
2. Алгоритм такой - ищешь 3-й первод строки 0dh,0ah, макрируешь начало, ищешь следующий перевод строки, маркируешь конец, или длину вычисляешь сразу - все.

Ответ отправлен: 18.01.2003, 13:38
Отправитель: masquer


Отвечает Bob Johnson

Приветствую Вас, lamachok!
1. Тебе нужно в конец считанной из файла информации поставить "$".
после чтения файла поставь:
mov di, offset buffer
add di, ax
mov byte ptr [di], '$'
2. Нужно анализировать файл побайтно и самому найти начало 4 строки и потом ее вывести.


Ответ отправлен: 19.01.2003, 02:56
Отправитель: Bob Johnson


Отвечает Ayl

Добрый день, lamachok!
Вообще-то, тексты программ лучше размещать в приложении, а то очень много места занимают...
1. Функция 9 21-го прерывания выводит строку до символа '$'. Соответственно, тебе после считывания из файла надо добавить в буфер этот символ. Либо сразу же заполнить буфер символами доллара.
Кстати, хочу заметить, что если размер файла у тебя будет больше 500 байт, то у тебя затрется переменная Handle, что приведет к ошибке. Буфер лучше всего размещать последним.
2. В ассемблере нет понятия "текстовый файл". Все файлы рассматриваются просто как последовательность байт. Соответственно, все функции для работы с текстом тебе нужно писать самому.
Строка представляет собой последовательность символов до символа "перевод строки" (код 10). Для DOS'овских файлов за ним еще следует символ "возврат каретки" (код 13). Вот тебе и надо считать файл в буфер и последовательно перебирать его до очередного символа с кодом 10. И считать строки.

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


 Вопрос № 2438

А какие процессоры выбирают ассемблерщики Intel или AMD?
Всю жизнь сижу на Intel'e, а щас вот апгрейдиться думаю так у AMD достаточно заманчивые цены, да и производительность у него вроде неплоха но:
Компьютер у меня приемущественно не для игр, хотя иногда и играю. Учусь на программера. Программирую/учусь на Си/Си++ , щас и на асме чего то буду делать. Работаю в MS офисе, с базами данных и. т. д.
По интелу полно литературы.
Все преподы когда говорят о PC процессорах то с оговорокой что они говорят про Intel, а ни про какой нибудь другой.
Большинство PC процессоров в мире intel'овские и вероятно soft производители при производстве softa в первую очередь ориентируются на intel(тестят под ним...)
При работе на Асме процы AMD и Intel одинаковы или нет(если нет то сильно ли они различаются), за исключением всяких MMX, 3DNow!, SSE .
Хорошо ли работает AMD c различными средами Visual C++ и. т. д.?



Вопрос отправлен: 18.01.2003, 03:23
Отправитель: Пахан Вася

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

Отвечает Igoryk

Приветствую Вас, Пахан Вася!
Едиснтвенное что могу сказать об AMD не очень хорошо отзываются. Intel forever так сказать. Может смотрел программу "Мир компьютера" - у нас повторяют. Так там тестировали AMD и Intel. Абсолютно по всем характеристикам последний был лучше. Но! Кто-то ведь пользуется Duronами b Athlonами. Так что выберать тебе!

Ответ отправлен: 18.01.2003, 21:29
Отправитель: Igoryk


Отвечает keleb-glin

Добрый день, Пахан Вася!
Не думаю, что Интел и АМД сильно различаются, иначе то что работало на АМД не работало бы на Интеле и наоборот.


Ответ отправлен: 18.01.2003, 21:43
Отправитель: keleb-glin


Отвечает Broken Sword

Приветствую Вас, Пахан Вася!
многие когда начинают спорить о Intel VS AMD начинают недовольно вопить, что "все это уже 1000 раз обсуждалось и ничего нового никто не скажет", однако я смотрю на все это с точки зрения истории ("нет матери истории важнее...")
Первый в мире серийный микропроцессор выпустила компания Intel в 1974 г. Ну и что? Первый автомобиль в мире, сошедший с конвеера - Ford, это ж не значит что он самый лучший и более престижный, чем ламборгини, которого тогда еще в помини не было. Значит, дело не в том, кто первый. Смотрим дальше. Первый сопроцессор придумала как раз AMD (в 1979 году), назывался он AMD 9511 (это позже его стали встраивать в кристалл процессора). Кстати, если кто-то считает, что AMD с утра до вечера только и занимается тем, что ворует у Интела "секреты производства" (я так и считал до недавнего времени) тот глубоко заблуждается - клоны x86 у AMD - одна из самых перспективных ветвей, не более того. Помимо x86 они ведут и кучи других разработок (как впрочем и Intel...).
AMD немало вещей в мире микропроцессоров "придумала самая первая", опередив даже SPARC на ниве RISK процессоров.
IBM выбрала (непонятно правда из каких соображений) Intel, этим сделав ей имя во всем мире. AMD (как и десятки других компаний выпускающих процессоры) в связи с этим ушли в тень и вынуждены были бороться за свой кусок пирога путем удешевления своих творений и, следовательно, мифическими попреками на "нестабильность" (это психология человека - если что то дешевле, значит оно хуже, это не всегда так)
Вообщем, чисто подсознательно, если положить рядом Intel и AMD - рука потянеться к Intel. Наверно потому, что то, на чем мы щас все сидим (клоны x86) - были ПРИДУМАНЫ И РАЗРАБОТАНЫ корпорацией INTEL. AMD завидя перспективы x86 (который раздул IBM) тоже взялся за это дело, хотя нигде в мире вы не найдете информации про то, КАК СОВЕРШЕННО РАЗНЫЕ ДВЕ КОМПАНИИ (INTEL и AMD) выпустили АБСОЛЮТНО одинаковый по архитектуре процессор? Не может быть, что бы кто то у кого то не спер (или купил) чертежи и т.п. схемы...
Очевидно, что AMD к x86 первоначально не имело никакого отношения, а потом просто купило у Intel все необходимые документы...
Это все к чему? А просто так, это интересно знать. А вообще всему виной IBM - если бы для первого настольного PC они бы выбрали не Intel, то не факт что ни о каких AMD и Intel вообще бы никто ничего не знал.
И еще - то что Intel более стабильны, а Athlon-ы быстрее нагреваются - это ерунда. Пока на первом месте фактор цены - AMD будет впереди

p.s. кстати, из всеобщих заблуждений, все знают, что MMX - это MultiMedia eXtension (мультимедийное расширение), однако сама Intel позже расшифровала это как Matrix Math eXtension (короче, расширение для работы с матрицами)

Ответ отправлен: 18.01.2003, 20:24
Отправитель: Broken Sword


Отвечает LIFO

Приветствую Вас, Пахан Вася!
Да ты все равно разницы не увидишь.
(Для программирования на C++)
Там есть 3dNow! вместо sse2, а так в принципе разницы нет.

Ответ отправлен: 18.01.2003, 23:04
Отправитель: LIFO


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

Приветствую Вас, Пахан Вася!
Если за исключением всяких MMX, 3DNow! и SSE, то для программ
эти процессоры не отличаются ничем. У меня стоял и интеловский
Pentium и AMD Athlon - никакой разницы я не заметил и Visual C++
работал нормально.


Ответ отправлен: 18.01.2003, 09:57
Отправитель: ASMодей


Отвечает masquer

Здравствуйте, Пахан Вася!
Все нормально работет. Отличия - на атлонах есть 3dnow!, но нет sse2.

Ответ отправлен: 18.01.2003, 13:45
Отправитель: masquer


Отвечает Bob Johnson

Приветствую Вас, Пахан Вася!
Intel - это гарантировано надежный и работающий проц + возможность разгона (если тебе это интересно). Intel устанавливает стандарты на chipset, agp и многое другое + intel сам же делает chipset под свои процы. Но за это intel дороже.
AMD - это как лотерея. Можешь получить нормально работающую систему, можешь нет. У меня есть знакомые, которые тащатся от AMD - типа это руль, у них дома AMD и все в порядке. С другой стороны - есть знакомые, у которых был и глючил AMD или есть и глючит AMD. Один парень взял себе атлон ХР и сказал, что он может заглючить даже на стандартной частоте. Ни о каком разгоне думать вообще не приходится. Зато цена ниже.
В общем у меня Intel и я за Intel, т.к. для работы лучше он. AMD - это для игровых залов, где если и повиснет компьютер, то ...


Ответ отправлен: 19.01.2003, 02:56
Отправитель: Bob Johnson



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

Внимание!
Форма может работать некорректно в почтовых программах "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 (38)
C / C++ (30)
Perl (5)
Delphi (18)
Pascal (22)
Basic / VBA (12)
Java / JavaScript (8)
PHP (6)
MySQL / MSSQL (5)
Пользователю
Windows 95/98/Me (38)
Windows NT/2000/XP (30)
"Железо" (35)
Поиск информации (20)
Администратору
Windows NT/2000/XP (11)
Linux / Unix (13)
Юристу
Гражданское право (11)
Семейное право (7)
Трудовое право (6)
КоАП (4)

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




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

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


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

В избранное