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

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


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

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

Выпуск № 482
от 31.01.2003, 00:30

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


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

Maverick
Статус: Профессиональный
Общий рейтинг: 139.79
URL: Задачи по ассемблеру
Телефон: 89039415024 (BeeLine GSM)
[Подробней >>]
Igoryk
Статус: Опытный
Общий рейтинг: 138.46
URL: IgorykSoft
[Подробней >>]
Bob Johnson
Статус: Профессиональный
Общий рейтинг: 151.86
URL: Программирование
[Подробней >>]
 
ASMодей
Статус: Профессиональный
Общий рейтинг: 117.9
[Подробней >>]
LIFO
Статус: Профессиональный
Общий рейтинг: 118.33
URL: наш сайт
Телефон: 8 01710 24758
[Подробней >>]
Ayl
Статус: Профессиональный
Общий рейтинг: 118.31
[Подробней >>]
 
Andrew Vext
Статус: Опытный
Общий рейтинг: 107.41
[Подробней >>]
Топор
Статус: Доверительный
Общий рейтинг: 114.85
[Подробней >>]
Den
Статус: Начальный
Общий рейтинг: 101.59
[Подробней >>]
 
vitya
Статус: Профессиональный
Общий рейтинг: 108.05
[Подробней >>]
Broken Sword
Статус: Профессиональный
Общий рейтинг: 126.41
URL: моя рассылка по Protected Mode
[Подробней >>]
DiGiT[old]
Статус: Опытный
Общий рейтинг: 108.71
[Подробней >>]
 
Eugene
Статус: Опытный
Общий рейтинг: 109.22
URL: мощный файловый архив
[Подробней >>]


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

Вопрос № 2498. Еще раз здравствуйте! Только написал один вопрос, придумал еще один, а добавить уже нельзя - нехорош... (ответов: 2)
Вопрос № 2499. Здравствуйте, глубокоуважаемые! Я не особо разбирающийся в асме программер. Вопросы: 1) Как отсл... (ответов: 2)
Вопрос № 2500. Здравствуйте!Подскажите, пожалуйста, начальные адреса DS, SSи CS. Спасибо.... (ответов: 8)
Вопрос № 2502. Здравствуйте, уважаемые эксперты! Изучаю рассылку Олега "Ассемблер? Это просто! Учимся программ... (ответов: 1)
Вопрос № 2503. Вопрос совсем не в тему,но никто незнает ответа,может вы мне поможете.Мне очень нужно будет подслуша... (ответов: 2)
Вопрос № 2504. Приветствую Экспертов. Написал на masm'e dll'ку, чтобы вызывать ее функции из своей программы написа... (ответов: 1)
Вопрос № 2505. Здравствуйте Эксперты Если у кого-нибудь есть исходники к книге Зубкова, скиньте пожалуйсто. Буду оч... (ответов: 2)
Вопрос № 2506. Люди добрые!!!(Да и злые заодно...) Обьясните толком как управлять памятью в DPMI. Про функцию 050X... (ответов: 1)
Вопрос № 2507. Доброе время суток, эксперты! У меня возник еще вопрос - элементарный, конечно - но дело в том, чт... (ответов: 4)
Вопрос № 2508. привет,я,задам,сечас,самый,простой,вопрос,--- где(блокнот)написать,прогу,на,асме(если,можно,то,ПОДРО... (ответов: 5)

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


 Вопрос № 2498

Еще раз здравствуйте!
Только написал один вопрос, придумал еще один, а добавить уже нельзя - нехорошо
Че-то я отвлекся.
Можно ли где-то почитать (в смысле в электронном виде) те книги, которые вы так часто упоминаете: Юров, Зубков и т.д. (я ничего кроме дискет с исходниками найти не смог)
Спасибо



Вопрос отправлен: 25.01.2003, 19:36
Отправитель: Макс

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

Отвечает Maverick

Приветствую Вас, Макс!
Ну Юров был в инете, поисковиком ты его быстро найдешь, а Зубкова в инете нет, хотя кое кто говорит, что скоро будет, ждемс...


Ответ отправлен: 27.01.2003, 05:32
Отправитель: Maverick


Отвечает Igoryk

Здравствуйте, Макс!
Нельзя. Можешь поискать Абеля в интернете.

Ответ отправлен: 29.01.2003, 18:08
Отправитель: Igoryk


 Вопрос № 2499

Здравствуйте, глубокоуважаемые!
Я не особо разбирающийся в асме программер.
Вопросы:
1) Как отслеживать ограничения при использовании divа? Нельзя на ноль делить, это понятно. А что такое divide overflow? Сурс примерно такой:
mov ax, dx ;(dx - Y координата курсора в гр. режиме)
push dx
mov dl, 40h ;(40h столбцов пикслей в videopage 1024x768)
div dl
pop dx
cmp al, bl ; (bl - ныняшний номер videopage)
jne change_page ;(смена videopage)
Возможно, ошибка где-то за пределами вышеуказанного сурса. См. приложение с полным сурсом.
2) На разработке какой проги лучше всего учиться программить на асме?
Great thanks!


Приложение:


Вопрос отправлен: 25.01.2003, 21:29
Отправитель: AShein

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

Отвечает Bob Johnson

Приветствую Вас, AShein!
При делении, делимое имеет удвоенную разрядность по отношению к делителю и результату, т.е. 32:16:16, например - делимое 32 бита (dx:ax), делитель - 16 бит и результат тоже 16 бит. А ведь вполне может результат быть и 32 бита (например, деление на 1) - вот в этой ситуации (когда резултат не вмещается в 16 бит) возникает исключение (ошибка).
Нужно проверять, чтобы результат операции деления всегда помещался в отведенном для него месте (обычно это из логики программы становится ясно еще на этапе ее создания).


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


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

Добрый день, AShein!
1. Деление в процессоре происходит таким образом, что частное
и остаток помещаются в регистры в 2 раза меньшие, чем
использовался для делимого. То есть если ты делишь слово на
байт, то в итоге получишь 2 байта: частное и остаток от деления.
Таким образом, если делитель будет небольшим числом, то результат
деления может не поместиться в регистр и возникнет Divide Overflow.
Как с этим бороться?
Если ты сам пишешь программу, то ты должен знать возможный
наибольший результат от деления, и если он не влезает в регистр
результата, то используй для дедения регистры большей разрядности.


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


 Вопрос № 2500

Здравствуйте!Подскажите, пожалуйста, начальные адреса DS, SSи CS. Спасибо.



Вопрос отправлен: 25.01.2003, 21:21
Отправитель: danich

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

Отвечает Maverick

Приветствую Вас, danich!
В случае com-проги ds=ss=cs=любой свободный, за это отвечает операционка.


Ответ отправлен: 27.01.2003, 05:32
Отправитель: Maverick


Отвечает LIFO

Приветствую Вас, danich!
Какой тип файлов com или exe?
Если com, то все адреса одинаковы и указывают на сегмент твоей проги
Если exe, то
ds-data
es,fs,gs - data
cs - code
ss-stack
Надо конкретизировать вопрос.

Ответ отправлен: 26.01.2003, 10:31
Отправитель: LIFO


Отвечает Ayl

Здравствуйте, danich!
Начальные адреса когда? И для какой ОС? И для какого типа программы?
В ДОСе при старте программы типа COM CS=DS=SS=ES=PSP, IP=100h, SP=FFFEh
Для EXE CS, IP, SS и SP устанавливаются из соответствующих полей заголовка, DS=ES=PSP

Ответ отправлен: 26.01.2003, 21:57
Отправитель: Ayl


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

Приветствую Вас, danich!
1. После включения компьютера: DS=SS=0, CS=F000h
2. При старте программы *.com: DS=SS=CS=сегмент кода
3. При старте программы *.exe:
DS=сегмент данных
SS=сегмент стека
CS=сегмент кода


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


Отвечает Andrew Vext

Здравствуйте, danich!
Ну например - сразу после подачи питания на процессор - везде 0. После загрузки программы типа .com - адрес первой команды минус 100h. Есть еще варианты для exe PE . Что именно надо? Подробный вопрос - залог быстрого ответа.

Ответ отправлен: 27.01.2003, 11:45
Отправитель: Andrew Vext


Отвечает Топор

Доброе время суток, danich!
Всё определяется условиями старта программы, занятостью памяти и заголовком файла, если таковой имеется. Загадывать безполезно.


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


Отвечает Igoryk

Здравствуйте, danich!
Их DOS определяет. Это же регистры сегментов.

Ответ отправлен: 29.01.2003, 18:08
Отправитель: Igoryk


Отвечает Den

Доброе время суток, danich!
Ты КРЕТИН это РЕГИСТРЫ!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!


Ответ отправлен: 29.01.2003, 03:15
Отправитель: Den


 Вопрос № 2502

Здравствуйте, уважаемые эксперты! Изучаю рассылку Олега "Ассемблер? Это просто! Учимся программировать". С одиннадцатым выпуском появилась проблемка. Дело в том, что нужно выкачать вспомагательный файл, а ссылочка устарела, не работает. Подскажите, где можно скачать дополнительные файлы, или киньте их на мыло (с 11-го по 18-ый номер). Заранее благодарен.



Вопрос отправлен: 25.01.2003, 23:21
Отправитель: Igor_K (felix_k@rambler.ru)

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

Отвечает Maverick

Здравствуйте, Igor_K!
Погляди в ящике у себя, там точно можно скачать :)


Ответ отправлен: 27.01.2003, 06:01
Отправитель: Maverick


 Вопрос № 2503

Вопрос совсем не в тему,но никто незнает ответа,может вы мне поможете.Мне очень нужно будет подслушать разгавор в привате на chat.ru это действительно очеьн серьёзно,я точно зная что можно.Если кто знает подскажите пожалуйсто,дело жизни и смерти.



Вопрос отправлен: 26.01.2003, 01:40
Отправитель: WiX

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

Отвечает vitya

Здравствуйте, WiX!
я не знаю какое это отношение имеет к ассемблеру, но для такого мерзкого занятия - такое уж оно - есть php/asp/perl deprivatizer - ы, которые все это дело делают. Поищи в интернете может найдешь.

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


Отвечает Igoryk

Доброе время суток, WiX!
Раньше можно было - даже статья где-то есть, но сейчас уже все исправлено и чтобы сделать то, что ты хочешь нужно очень постараться.
PS. Интересено, а сколько человек у тебя спросило: "Ты WizarX?"

Ответ отправлен: 29.01.2003, 18:08
Отправитель: Igoryk


 Вопрос № 2504

Приветствую Экспертов.
Написал на masm'e dll'ку, чтобы вызывать ее функции из своей программы написанной на delfi. Но неожиданно столкнулся с такой трудностью: masm добавляет к каждой экспортируемой функции "@" и количество байтов, передаваемых в параметрах, а delfi не разрешает использовать "@" в названии функций.
Вопрос классический - чего делать?
Заранее спасибо.



Вопрос отправлен: 26.01.2003, 02:06
Отправитель: Митрич

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

Отвечает Топор

Приветствую Вас, Митрич!
Перейти на TASM. У Борланда свои стандарты линковки, ничего тут не попишешь.


Ответ отправлен: 27.01.2003, 12:06
Отправитель: Топор


 Вопрос № 2505

Здравствуйте Эксперты
Если у кого-нибудь есть исходники к книге Зубкова, скиньте пожалуйсто. Буду очень благодарен.



Вопрос отправлен: 26.01.2003, 04:34
Отправитель: Ilu (ilua_m@mail.ru)

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

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

Добрый день, Ilu!
Скинул, смотри ящик.


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


Отвечает Igoryk

Добрый день, Ilu!
Есть на www.netlib.wallst.ru

Ответ отправлен: 29.01.2003, 18:09
Отправитель: Igoryk


 Вопрос № 2506

Люди добрые!!!(Да и злые заодно...) Обьясните толком как управлять памятью в DPMI. Про функцию 050Xh int31h нигде (вродя) не написано. Напишите к-нть КУСОЧЕК КОДА желательно с обьяснениями. Узнать скока памяти, взять мегабут, че-нть прочесть с него закрыть(?) и выйти. Или скажите где такую красоту можно содрать.



Вопрос отправлен: 26.01.2003, 13:10
Отправитель: CGA (skif_85@rseu.ru)

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

Отвечает Andrew Vext

Приветствую Вас, CGA!
Почитайте на netlib.wallst.ru

Ответ отправлен: 27.01.2003, 11:54
Отправитель: Andrew Vext


 Вопрос № 2507


Доброе время суток, эксперты! У меня возник еще вопрос - элементарный, конечно - но дело в том, что ассемблер я начала изучать совсем недавно и хотя прочитала положенный курс теории с практикой у меня не совсем...
Задача следующая:
Даны символы S 1 . . . S 30 . Например, не отсортированный набор букв латинского алфавита без разделителей. Определить сколько раз один и тот же символ входит в данный набор.
По моему представлению сначала надо занести в регистр cx количество повторений - 30. Массив надо вводить или считается, что он есть?
Потом надо сравнивать код каждого символа со всеми другими с помощью команды cmp al,что-то.Например есть символ k и его код надо сравнивать с остальными , но как? Надо определять код следующего символа и сравнивать с ним, насколько я понимаю - а для этого поместить код символа в другой регистр и сравнивать содержимое регистров? Как считывать код символов и организовать цикл сравнения?
Буду очень благодарна, если вы мне поможете советом как это все выполнить...
Ольга



Вопрос отправлен: 26.01.2003, 19:45
Отправитель: Ольга (galateya2003@yahoo.com)

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

Отвечает Broken Sword

Доброе время суток, Ольга!
вот особенно такие институтские задачи со строками, которые нужно выполнять на ассемблере, выходят особенно неуклюжими и уродливыми. я б на твоем месте вообще отказался и наплевал лаборанту в глаза :). мерзость их в том, что они вызывают тут же тыщи идиотских вопросов (не таких как у тебя, конечно), а вот вроде этих: как оформить вывод ("буква тире число" или "число пробел буква", в какой системе счисления выводить всю эту энтропию, выводить ли количество тех букв, которых вообще нет. Я даже засел было за написание, а потом из-за этой мишуры забросил. Вообщем, все это скука невероятная и одни только формальности никому не нужные, а насчет твоих вопросов можно так:
1. "Массив надо вводить или считается, что он есть?"
это как раз один из серии тех бестолковых вопросов, которые вызывает обычная институтская задача. Ответ таков: иногда можешь получить за решение больше баллов, если организуешь его ввод с клавиатуры :), а иногда препод может залупиться и не поставить пока не организуешь в виде массива. Это одна из преподских уловок бесконечных, известное дело.
2. "Например есть символ k и его код надо сравнивать с остальными , но как"
для того чтобы что то с чем то сравнить для начала нужно иметь первое "что-то", т.е. в твоем случае - считываешь код символа k в al (хоть по lodsb, хоть как угодно), и ищешь его в строке (repnz cmpsb). Как только нашлось что-то - inc счетчик. И попутно сверяешь не равен ли CX уже нулю? Если равен, а счетчик равен нулю, то, стало быть, символ то у тебя всего один такой попался.
Вот он цикл:
@@next_char:
mov cx,len
lodsb ; al = код символа из массива
@@search:
repnz cmpsb ; ищем его по всей степи
jcxz @@next_char ; все уже?
inc counter
jmp @@search
ну и естественно надо этот counter вместе с буковкой и "тире" (что особо важно! ) выводить в каждой итерации, причем предварительно не забыв перевести counter в dec. вобщем, скука невероятная...
(подробнее кто нибудь да распишет)

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


Отвечает Ayl

Доброе время суток, Ольга!
Ну я бы сделал, например, так. Завел бы дополнительный массив C из 26 элементов (по кол-ву букв лат.алфавита). Вначале все элементы этого массива равны 0 (C db 26 dup (0)). Теперь просматривая за один проход исходный массив S для каждого элемента увеличивал бы соответствующий счетчик:
xor bx, bx
mov si, OFFSET S
r:
lodsb ; загрузить в al очередной элемент массива S
sub al, 'A' ; считаем, что в массиве S буквы только верхнего регистра. Этой командой получаем номер элемента
mov bl, al ; теперь bx содержит индекс в массиве
inc C [bx] ; увеличиваем соответствующий счетчик
loop r ; повторяем, пока cx<>0
Так как в задании написано "даны символы", то я думаю, что массив S надо задать в программе.

Ответ отправлен: 27.01.2003, 03:40
Отправитель: Ayl


Отвечает Maverick

Доброе время суток, Ольга!
Ну наверное он уже задан, судя по условию.
Можно по разному реализовать это, например:
.....
mov cx,30 ;размер массива
lea si,massiv ;адрес
mov bl,'v' ;нужный символ
xor bh,bh ;счетчик повторений
cycle:
lodsb ;загрузим в al элемент массива
cmp al,bl
jne no
inc bh ;Увеличиваем счетчик, если равны
no:
loop cycle
........


Ответ отправлен: 27.01.2003, 06:01
Отправитель: Maverick


Отвечает Igoryk

Доброе время суток, Ольга!
Можно так: занести в bx смещение нужного тебе символа, и сравнивать так:
cmp al, [bx]

Ответ отправлен: 29.01.2003, 18:09
Отправитель: Igoryk


 Вопрос № 2508

привет,я,задам,сечас,самый,простой,вопрос,---
где(блокнот)написать,прогу,на,асме(если,можно,то,ПОДРОБНО,опишите )заранее,благодарю
в,будущем,вопросы,будут,посложнее,обещаю
ОЧЕНЬ,ПОДРОБНО(сами,понимаете,Л А М Е Р )
у,меня,масм6.1



Вопрос отправлен: 27.01.2003, 00:29
Отправитель: .hf

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

Отвечает Maverick

Доброе время суток, .hf!
Нифига себе простой, я уже минут 20 не могу вьехать, что тебе нужно :) Может это я ламер?


Ответ отправлен: 27.01.2003, 06:01
Отправитель: Maverick


Отвечает Ayl

Здравствуйте, .hf!
Блин! Ты свой вопрос пытался хотя бы прочитать после набора? Если ты про редактор, в котором надо набрать программу на асме, то годится любой текстовый редактор. Только надо учесть, что если ты собираешься писать на русском языке (например, строки для вывода), то надо писать в редакторе для той ОС, в которой будет запускаться твоя прога. Или в редакторе, поддерживающем различные кодировки.
А насчет, чем пользоваться, то это может быть так:
DOS: ne, edit, FAR, DN, MultiEdit и т.д.
Win: Блокнот, WordPad, FAR, DN, MultiEdit и т.д.
Кстати, также можно использовать и редакторы от Pascal, C/C++, Delphi и т.п.
Прога представляет собой обычный текстовый файл. Потом его надо откомпилировать. Например, твоим MASM'ом...


Ответ отправлен: 27.01.2003, 03:49
Отправитель: Ayl


Отвечает DiGiT[old]

Здравствуйте, .hf!
В общем ответ такой. Идешь в магазин, покупаешь книгу по асму читаешь и пишешь простейший пример. Пытаешься его компилить часа два, если не получится задаешь вопрос.
Правда перед всем этим тебе желательно нужно знать какой нить алгоритмический язык высокого уровня. При несоблюдении какого либо пункта, нужно забыть об изучении асма :((
ЗЫ ну разве сложно набрать масм с ключом /?, потом почитать маленько знакомые слова и перебрать несколько комбинаций, а уж потом задать вопрос ?

Ответ отправлен: 27.01.2003, 06:39
Отправитель: DiGiT[old]


Отвечает Igoryk

Приветствую Вас, .hf!
Как написать программу в Блокноте? Если я вас правильно понял, то об этом написано в любой документации про ассемблер. Если Вы используете TASM, то так:
.model tiny
.code
org 100h
start:
--Программа--
ret
end start

Ответ отправлен: 29.01.2003, 18:10
Отправитель: Igoryk


Отвечает Eugene

Доброе время суток, .hf!
А что у тебя с пробелом? Заклинило что-ли? А,прогу,можно,писать,в,блокноте. Сам и ответил на свой вопрос. Или я вопроса не понял.

Ответ отправлен: 27.01.2003, 10:16
Отправитель: Eugene



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

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

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




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

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


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

В избранное