Рассылка закрыта
При закрытии подписчики были переданы в рассылку "RFpro.ru: Ассемблер? Это просто! Учимся программировать" на которую и рекомендуем вам подписаться.
Вы можете найти рассылки сходной тематики в Каталоге рассылок.
RusFAQ.ru: программирование на языке Assembler
Информационный Канал Subscribe.Ru |
RusFAQ.ru: программирование на языке Assembler
Выпуск № 528
от 23.04.2003, 21:00
Администратор: Имя: Калашников О.А. URL: Информационный ресурс ICQ: 68951340 Россия, Москва |
О рассылке: Задано вопросов: 3040 Отправлено ответов: 8946 Активность: 294.2 %
|
Список экспертов, ответы которых опубликованы в данном выпуске |
masquer Статус: Профессиональный Общий рейтинг: 140.78 [Подробней >>] |
Joy Статус: Опытный Общий рейтинг: 123.37 [Подробней >>] |
Bob Johnson Статус: Профессиональный Общий рейтинг: 150.54 URL: Программирование [Подробней >>] |
Knignick Статус: Доверительный Общий рейтинг: 124.32 [Подробней >>] |
akul Статус: Опытный Общий рейтинг: 114.41 Телефон: +6019-6416245 [Подробней >>] |
ASMодей Статус: Профессиональный Общий рейтинг: 115.17 [Подробней >>] |
Ayl Статус: Профессиональный Общий рейтинг: 118.87 [Подробней >>] |
Tigran K. Kalaidjian Статус: Доверительный Общий рейтинг: 115.42 [Подробней >>] |
Maverick Статус: Профессиональный Общий рейтинг: 135.36 URL: Задачи по ассемблеру Телефон: 89039415024 (BeeLine GSM) [Подробней >>] |
Hangatyr Статус: Доверительный Общий рейтинг: 134.52 [Подробней >>] |
Paulkan Статус: Начальный Общий рейтинг: 106.25 [Подробней >>] |
Broken Sword Статус: Профессиональный Общий рейтинг: 123.53 URL: моя рассылка по Protected Mode [Подробней >>] |
Краткий перечень вопросов |
Вопрос № 2998. Здравствуйте, уважаемые! Win2k Pro, FAT32 диски, нужен чистый DOS для ассемблера. Постоянно грузит... (ответов: 5)
Вопрос № 2999. Про побочные явления макроопределений. А что будет с вызовом макроопределений несколько раз (по эксп... (ответов: 3)
Вопрос № 3000. Трям всем экпертам. Подскажите, как создать массив 320х200 по адресу $A000:$0000? То есть как созда... (ответов: 6)
Вопрос № 3002. привет всем всем есть ли у кого нибудь справочник портов ПК если залежался у кого нибудь или знает г... (ответов: 2)
Вопрос № 3003. Здравствуйте, ув-мые Эксперты. Я тут все мучаюсь с сокетами и т.п. Большое спасибо всем экспертам, о... (ответов: 2)
Вопрос № 3004. Где можно взять отладчик,MASM6.11_и_дизасемблер... (ответов: 1)
Вопрос № 3007. Здравствуйте, Maverick! Недавно в рассылке проскочил вопрос о программировании flash-bios. В связи с... (ответов: 1)
Вопрос № 3008. Здравствуйте, уважаемые Эксперты! Я тут изучал формат PE и у меня возник такой вопрос: например, воз... (ответов: 2)
Вопрос № 3009. Здравствуйте уважаемые эксперты вот есть программа, в ней мне непонятна пара моментов не могли бы вы... (ответов: 4)
Вопросов: 9, ответов: 26
Вопрос № 2998 |
Здравствуйте, уважаемые!
Win2k Pro, FAT32 диски, нужен чистый DOS для ассемблера. Постоянно грузиться с флоппи - дело муторное. Вопрос: можно ли прошить дос при выборе операционки во время загрузки, и как тот же DOS 6.22 в таком случае будет вести себя? В плане на FAT32, а не 16. Если у кого-нибудь есть нужные реквизиты для установки доса (или альтернативный вариант), plz, скиньте на e-mail. Заранее спасибо!
Вопрос отправлен: 17.04.2003, 20:20
Отправитель: Alexei S (assincorp@hotmail.com)
[Следующий вопрос >>] [Список вопросов]
Отвечает masquer
Доброе время суток, Alexei S!
Запускай под vmware
Ответ отправлен: 18.04.2003, 10:37
Отправитель: masquer
Отвечает Joy
Приветствую Вас, Alexei S!
Недавно видел программу
http://www.softodrom.ru/get.php?id=3457
Попробуй, может подойдет.
Ответ отправлен: 18.04.2003, 07:11
Отправитель: Joy
Отвечает Bob Johnson
Приветствую Вас, Alexei S!
А вот никак не будет у тебя дос 6.22 стоять на фат32... Если бы был фат16, то можно было бы добавить в boot.ini нужную строку (две) и еще файлик BOOTSECT.DOS кинуть и вероятность загрузки появилась бы.
Ответ отправлен: 18.04.2003, 08:25
Отправитель: Bob Johnson
Отвечает Knignick
Насколько я знаю, "чистый ДОС" FAT32 не видит.
Так что единственное что могу посоветовать - создать новый раздел с FAT16, поставить на него ДОС. Правда диск должен быть типа primary, это, в частности, подразумевает, что между ним и другим primary не должно быть логических дисков.
Для того, чтобы грузить нужную из имеющихся ОС можно поставить утилитку System Commander или Boot Magic.
Ответ отправлен: 17.04.2003, 21:21
Отправитель: Knignick
Отвечает akul
Добрый день, Alexei S!
Поставь дос который от windows 98 и проблем не будет. Он знает Fat32. А 6.22 не знает про 32фат ничего и не увидит жесткий диск. Можно еще с vmware поиграться, я так лично делаю. Но она только PPro эмулирует так что со всякими SSE2 и Apic не поиграешься.
Ответ отправлен: 19.04.2003, 00:08
Отправитель: akul
Вопрос № 2999 |
Про побочные явления макроопределений. А что будет с вызовом макроопределений несколько раз (по экспериментируйте).
Вопрос отправлен: 17.04.2003, 22:08
Отправитель: Lapa
[Следующий вопрос >>] [Список вопросов]
Отвечает masquer
Здравствуйте, Lapa!
Ежели у человека кривые руки, то никакое макроопределение больше раза не протянет.
Я так и не понял - это вопрос или издевательство?
Ответ отправлен: 18.04.2003, 10:36
Отправитель: masquer
Отвечает Joy
Доброе время суток, Lapa!
Поэксперементировать ты и сам можешь!
Тебе же уже отвечали на этот вопрос уже не раз!!!
P.S. Если ты с первого раза не догоняешь, то не надо задавать вопрос еще раз, просто еще раз прочитай ответы, которые тебе пришли!
Ответ отправлен: 18.04.2003, 07:11
Отправитель: Joy
Отвечает Bob Johnson
Добрый день, Lapa!
Ну нет у них побочных эффектов...
Если несколько раз вызвать - вызовутся несколько раз, можно даже рекурсивно.
Ответ отправлен: 18.04.2003, 01:56
Отправитель: Bob Johnson
Вопрос № 3000 |
Трям всем экпертам.
Подскажите, как создать массив 320х200 по адресу $A000:$0000? То есть как создать массив - это я знаю, а как указать его абсолютный адрес? У Юрова я этого не нашел :(
Вопрос отправлен: 17.04.2003, 23:05
Отправитель: Necro
[Следующий вопрос >>] [Список вопросов]
Отвечает ASMодей
Здравствуйте, Necro!
Массивы при компиляции ты можешь создавать только внутри своего
EXE-шника, а уже в процессе работы программы спокойно перенести
его содержимое в видеобуфер.
Ответ отправлен: 18.04.2003, 10:24
Отправитель: ASMодей
Отвечает akul
Приветствую Вас, Necro!
если в реальном режиме, то
mov es, 0a000h
mov si, 0
теперь es:si указывает на начало этого массива
mov es:[si+10], ax
если смещение выходит за 64к то корректируй es
Ответ отправлен: 18.04.2003, 08:40
Отправитель: akul
Отвечает Joy
Здравствуйте, Necro!
Причем тут вообще массив? Видеобуфер?
Если ты хочешь выводить графику на прямую в видеобуфер, то так и надо было задавать вопрос и не парить никому мозги!
P.S. Смотри в приложении "массив" палитры, выводящейся в режиме 13h напрямую в видеобуфер.
Приложение:
Ответ отправлен: 18.04.2003, 07:11
Отправитель: Joy
Отвечает Bob Johnson
Доброе время суток, Necro!
У тебя интересный номер вопроса! По идее ты должен выиграть приз от администрации Rusfaq - обязательно обратись туда!!!
По делу: тебе нужна директива at, смотри приложение.
Приложение:
Ответ отправлен: 18.04.2003, 08:26
Отправитель: Bob Johnson
Отвечает Ayl
Добрый день, Necro!
Что это значит - создать массив по абсолютному адресу? Если у тебя есть адрес - значит, есть и массив. В общем, загружаешь в сегментный регистр значение 0a000h, в индексный - 0 - и работаешь. 320*200 - это как раз 64000 байт, т.е. за предел сегмента не вылезешь.
Ответ отправлен: 18.04.2003, 19:48
Отправитель: Ayl
Отвечает Knignick
Доброе время суток, Necro!
Что мешает тебе разместить по адресу A000 свой сегмент данных? mov AX, A000h mov ES, AX Это в real mode. Ну а в protected mode настрой соответствующим образом дескриптор
Ответ отправлен: 18.04.2003, 03:00
Отправитель: Knignick
Вопрос № 3002 |
привет всем всем есть ли у кого нибудь справочник портов ПК
если залежался у кого нибудь или знает где можно скачать пришлите мне на miri72@mail.ru, заранее благодарен
Вопрос отправлен: 18.04.2003, 12:47
Отправитель: mirik (miri72@mail.ru)
[Следующий вопрос >>] [Список вопросов]
Отвечает Tigran K. Kalaidjian
Приветствую Вас, mirik!
Ответ ушел мылом...
Ответ отправлен: 18.04.2003, 21:48
Отправитель: Tigran K. Kalaidjian
Отвечает Maverick
Доброе время суток, mirik!
Закинул...
Ответ отправлен: 22.04.2003, 07:08
Отправитель: Maverick
Вопрос № 3003 |
Здравствуйте, ув-мые Эксперты.
Я тут все мучаюсь с сокетами и т.п. Большое спасибо всем экспертам, ответившим на мои предыдущие вопросы. Но у меня уже появились новые;) Ситуация такова - имеется некоторый хост, и есть его IP, я получаю (пытаюсь) его доменное имя. В общем, это, кажется, проходит нормально, но когда я преобразовываю полученное имя в адрес, то IP отличается от исходного. Это мой косяк или так и должно быть?
Спасибо.
Вопрос отправлен: 18.04.2003, 13:50
Отправитель: Deny
[Следующий вопрос >>] [Список вопросов]
Отвечает Hangatyr
Доброе время суток, Deny!
Без исходника трудно сказать в чем именно проблема. Вот два наиболее вероятных:
1. Доменному имени может соответствовать несколько адресов.
Если ты используешь gethostbyname, то проверь все адреса - может, среди них найдется и твой...
2. Так как поиск по адресу выполняется на DNS владельца адреса, то убедись, что он заслуживает доверия.
Ответ отправлен: 18.04.2003, 14:23
Отправитель: Hangatyr
Отвечает Knignick
Добрый день, Deny!
Надо быть ясновидящим, чтобы отвечать на подобные вопросы :)
До исходников ты больно жадный, как я погляжу..
Ответ отправлен: 20.04.2003, 00:19
Отправитель: Knignick
Вопрос № 3004 |
Где можно взять
отладчик,MASM6.11_и_дизасемблер
Вопрос отправлен: 18.04.2003, 19:15
Отправитель: anton (anton2000@apex.lg.ua)
[Следующий вопрос >>] [Список вопросов]
Отвечает Paulkan
Доброе время суток, anton!
Посмотри наwww.wasm.ru
Ответ отправлен: 18.04.2003, 19:35
Отправитель: Paulkan
Вопрос № 3007 |
Здравствуйте, Maverick!
Недавно в рассылке проскочил вопрос о программировании flash-bios. В связи с этим хотел уточнить что такое "неск-ко статей в IV 15" и если не сложно вышлите исходники wincih (желательно с комментариями). Очень интересует данный вопрос (о BIOSах).
Заранее благодарен, EraSer
Вопрос отправлен: 19.04.2003, 15:02
Отправитель: EraSer (eraser99@tut.by)
[Следующий вопрос >>] [Список вопросов]
Отвечает Maverick
Приветствую Вас, EraSer!
Извиняюсь за задержку, инет не работал...
Дааа, этот вопрос много кого интересует :)))
Тока интерес так и неудовлетворен...
Почти везде приведены исходники, но не объяснено почему так... И на более поздних машинах примеры не работают...
P.S. Если не ответил на персональный вопрос, то повторите попытку позднее, т.к. с инетом перебои, а срок ответа 4 дня.
Ответ отправлен: 22.04.2003, 07:08
Отправитель: Maverick
Вопрос № 3008 |
Здравствуйте, уважаемые Эксперты!
Я тут изучал формат PE и у меня возник такой вопрос: например, возьмем некоторый файл. Допустим, у нас есть какой-нибудь адрес (в нем, ессно), ну например, 00401000. Как можно узнать его адрес в самом файле (если я открою его в шестнадцатиричном редакторе)? Я думаю, что просто взять и вычесть из него базовый адрес будет неправильно, как же тогда?
Вопрос отправлен: 19.04.2003, 15:38
Отправитель: FFFF
[Следующий вопрос >>] [Список вопросов]
Отвечает Hangatyr
Доброе время суток, FFFF!
И правильно думаешь :)
Узнать оффсет каких-либо данных в файле будет немного сложнее - нужно будет узнать к какой секции принадлежит твой адрес. Далее смотришь таблицу этой секции, в поле +14h будет лежать оффсет места в файле, где находятся данные для этой секции, а в +0ch (кажется) находится RVA, по которому загрузчик попытается ее загрузить. Вместе с базовым адресом он и составит твой 00401000h.
Ответ отправлен: 19.04.2003, 16:26
Отправитель: Hangatyr
Отвечает Bob Johnson
Доброе время суток, FFFF!
Нужно из твоего адреса вычесть RVA начала секции, где он находится, затем вычесть Image Base и добавить смещение начала этой секции в файле... Вроде так.
Еще - W32Disasm показывает смещение в файле внизу...
Ответ отправлен: 20.04.2003, 13:38
Отправитель: Bob Johnson
Вопрос № 3009 |
Здравствуйте уважаемые эксперты
вот есть программа, в ней мне непонятна пара моментов
не могли бы вы мне их объяснить
DOSSEG
.MODEL SMALL
.STACK 100h
.DATA
Result DB 13,10
Message DB "Число =:"
Count_ch DB 5 DUP (?);строка в которой находятся символы числа
DB '$'
.CODE
Begin:
mov ax,@Data
mov ds,ax ; установить регистр DS таким
; образом, чтобы он указывал на сегмент данных
mov ax,120 ; в AX поместить число 120
add ax,5 ; добавить к нему 5
mov cx,5 ; поместить длину строки в регистр СХ, который можно
; использовать, как счетчик
mov bx,OFFSET Count_ch+4 ;поместить в bx адрес последнего
элемента строки CnvrtNToStr
call CnvrtNToStr ;вызов подпрограммы преобразования целого числа
;в строку символов; результат в строке Count_ch
mov bx,1 ;номер устройства вывода помещается в BX
mov dx,OFFSET Result ;адрес сообщения с результатом
mov ah,9 ; номер функции DOS заносится в регистр ah
int 21h ; вывод сообщения с результатом
Done:
mov ah,4ch ; функция DOS завершения
; программы
int 21h ; завершить программу
CnvrtNToStr PROC ; определение подпрограммы
ConvertLoop:
mov si,10 ; основание системы счислния в регистр SI
sub dx,dx ; преобразовать AX в
; двойное слово в AX:DX
div si ; разделить число на 10
; остаток - в DX, десятичное число из
; одной цифры; частно находится в AX
add dl,'0' ; преобразовать остаток
; в текстовую строку
mov [bx],dl ; поместить эту цифру в строку Count_ch
dec bx ; ссылка на следующую
; самую значащую цифру
loop ConvertLoop ; обработать следующую
; цифру, если она есть
ret
CnvrtNToStr ENDP; Подпрограмма, преобразующая двоичное число в текстовую строку
END Begin
Почему написано, что
sub dx,dx ; преобразовать AX в
; двойное слово в AX:DX
что это за двойное слово и еще почему
div si ; разделить число на 10
; остаток - в DX, десятичное число из
; одной цифры; частно находится в AX
в si же храниться основание системы счисления
С уважением, Алексей.
Вопрос отправлен: 19.04.2003, 20:51
Отправитель: Алексей (ASoftService@mail.ru)
[Следующий вопрос >>] [Список вопросов]
Отвечает ASMодей
Приветствую Вас, Алексей!
1. Преобразовать AX в двойное слово AX:DX написано конечно некорректно,
во-первых не AX:DX а DX:AX, а во-вторых ничего никуда не преобразовывается,
а просто подразумевается, что 32-битное число будет храниться в регистрах
DX (старшие 16 разрядов) и AX (младшие 16 разрядов), а так как все число
у нас помещается в регистре AX, то регистр DX должен быть обнулен, что
и делается командой SUB DX,DX
2. Здесь число преобразовывается в строку как десятичное, поэтому берется
число (регистры DX:AX) и делится на 10 (регистр SI), после деления в
регистре DX будет находиться остаток от деления, то есть самая младшая
цифра делимого, а в регистре AX будет частное, которое нужно снова делить
на 10, при этом получим следующую цифру числа, и так далее, пока частное
не станет нулем. А для вывода числа необходимо просто ывести полученные
цифры в обратном порядке.
Ответ отправлен: 20.04.2003, 12:23
Отправитель: ASMодей
Отвечает Hangatyr
Доброе время суток, Алексей!
1. Пототу что инструкция div r16 требует, чтобы делимое располагалось в регистрах DX:AX (т.е. оно 32-битное). Для этого и очищается DX (sub dx, dx). После деления остаток будет находится в DX, ну а частное, соответственно, в AX.
2. В si хранится 10, потому что его туда поместили (инструкцией mov si, 10), к тому же это и есть основание системы счисления.
Ответ отправлен: 19.04.2003, 21:21
Отправитель: Hangatyr
Отвечает Broken Sword
Доброе время суток, Алексей!
Почему написано, что sub dx,dx ; преобразовать AX в двойное слово в AX:DX что это за двойное слово
Здесь ошибка - должно быть "в двойное слово в DX:AX", а вообще имеется ввиду расширить слово нулями слева (т.е. если было FFFF - сделать 0000FFFF). Вообще здесь больше подходит команда cwd, если числа не больше 32000.
почему div si ; разделить число на 10 остаток - в DX, десятичное число из одной цифры частно находится в AX
в si же храниться основание системы счисления
ну потому и делят, что оно основание системы счисления, в чем проблема?
Ответ отправлен: 19.04.2003, 22:16
Отправитель: Broken Sword
Отвечает Bob Johnson
Здравствуйте, Алексей!
1. Команда div в 16-разрядном виде работает с 32-разрядным делимым и 16-разрядными делителем, результатом и остатком. Делимое поэтому требует 2 регистра по 16 разрядов и представляется в паре dx:ax (причем в dx старшая часть, а в ax - младшая) - это и называется двойным словом. И если у тебя была информация только в ax, то перед делением тебе нужно занести в dx 0 - можно mov dx, 0, но лучше sub dx, dx (мне лично больше нравится xor dx, dx, хотя это монопенисуально...)
2. Команда div работает таким образом, что частное от деления помещается в ax, а остаток - в dx. При этом частное обязательно должно поместиться в 16 разрядов, если этого не получается (слишком большое делимое, оно ведь 32 разряда), то выдается ошибка деления...
Ответ отправлен: 21.04.2003, 00:41
Отправитель: Bob Johnson
Форма отправки вопроса |
Форма может работать некорректно в почтовых программах "Microsoft Outlook" и "Microsoft Outlook Express". В программе The Bat! подобные формы не работают вообще!
После нажатия на кнопку "Отправить", будет открыто второе окно. Заметьте, что в некоторых браузерах могут стоять запреты на открытие других окон, а также "чрезмерное" кэширование данных, при этом факт отправки Вашего вопроса стоит под сомнением.
Мы рекомендуем открывать рассылку в программе Internet Explorer 5.0+ или отправлять вопросы с сайта по адресу: http://rusfaq.ru/cgi-bin/Message.cgi.
© 2002 Команда RusFAQ.ru.
Вопрос и дополнение |
Ваш вопрос:
Приложение (если необходимо):
Получить ответов:
Выбор рассылки |
Программисту Assembler (38) C / C++ (30) Perl (8) Delphi (14) Pascal (23) Basic / VBA (9) Java / JavaScript (11) PHP (5) MySQL / MSSQL (5) |
Пользователю Windows 95/98/Me (28) Windows NT/2000/XP (22) "Железо" (23) Поиск информации (11) |
Администратору Windows NT/2000/XP (12) Linux / Unix (12) |
Юристу Гражданское право (7) Семейное право (4) Трудовое право (4) КоАП (4) |
Отправить вопрос всем экспертам выбранной рассылки.
© 2002 Россия, Москва. Авторское право: RusFAQ.ru |
http://subscribe.ru/
E-mail: ask@subscribe.ru |
Отписаться
Убрать рекламу |
В избранное | ||