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

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.

 Персональные данные

Ваше имя:

Ваш e-mail:

Опубликовать мой e-mail в рассылке


 Вопрос и дополнение

Ваш вопрос:


Приложение (если необходимо):


Получить ответов:


 Выбор рассылки

Программисту
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
Отписаться
Убрать рекламу

В избранное