Рассылка закрыта
При закрытии подписчики были переданы в рассылку "RFpro.ru: Ассемблер? Это просто! Учимся программировать" на которую и рекомендуем вам подписаться.
Вы можете найти рассылки сходной тематики в Каталоге рассылок.
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.
Вопрос и дополнение |
Ваш вопрос:
Приложение (если необходимо):
Получить ответов:
Выбор рассылки |
Программисту 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 |
Отписаться
Убрать рекламу |
В избранное | ||