Рассылка закрыта
При закрытии подписчики были переданы в рассылку "RFpro.ru: Ассемблер? Это просто! Учимся программировать" на которую и рекомендуем вам подписаться.
Вы можете найти рассылки сходной тематики в Каталоге рассылок.
RusFAQ.ru: программирование на языке Assembler
Информационный Канал Subscribe.Ru |
RusFAQ.ru: программирование на языке Assembler
Выпуск № 469
от 16.01.2003, 18:30
Администратор: Имя: Калашников О.А. URL: Информационный ресурс ICQ: 68951340 Россия, Москва |
О рассылке: Задано вопросов: 2425 Отправлено ответов: 7317 Активность: 301.7 %
|
Список экспертов, ответы которых опубликованы в данном выпуске |
Bob Johnson Статус: Профессиональный Общий рейтинг: 152.08 URL: Программирование [Подробней >>] |
Sensey Статус: Профессиональный Общий рейтинг: 121.79 URL: Страничка рассылки по Паскалю Телефон: +38 (0572) 41-76-04 д. [Подробней >>] |
LIFO Статус: Профессиональный Общий рейтинг: 119.3 URL: наш сайт Телефон: 8 01710 24758 [Подробней >>] |
St Статус: Опытный Общий рейтинг: 112.55 [Подробней >>] |
keleb-glin Статус: Опытный Общий рейтинг: 113.84 [Подробней >>] |
ASMодей Статус: Профессиональный Общий рейтинг: 117.84 [Подробней >>] |
Ayl Статус: Профессиональный Общий рейтинг: 117.27 [Подробней >>] |
Broken Sword Статус: Профессиональный Общий рейтинг: 127.2 URL: моя рассылка по Protected Mode [Подробней >>] |
Maverick Статус: Профессиональный Общий рейтинг: 139.18 URL: Задачи по ассемблеру Телефон: 89039415024 (BeeLine GSM) [Подробней >>] |
Gibbel Статус: Профессиональный Общий рейтинг: 108.29 URL: Страничка обо мне и моих друзьях Телефон: +7 902 168 02 65 [Подробней >>] |
Igoryk Статус: Опытный Общий рейтинг: 142.75 URL: IgorykSoft [Подробней >>] |
baldr Статус: Профессиональный Общий рейтинг: 114 URL: Сайт об ОС DOS. Всем, кто любит эту ОС! [Подробней >>] |
Portnov Статус: Профессиональный Общий рейтинг: 114.43 URL: Мой сайтик... [Подробней >>] |
masquer Статус: Профессиональный Общий рейтинг: 146.74 [Подробней >>] |
mang Статус: Начальный Общий рейтинг: 111.01 [Подробней >>] |
Dark_Lord Статус: Профессиональный Общий рейтинг: 119.54 [Подробней >>] |
Краткий перечень вопросов |
Вопрос № 2389. Добро всем читающим, здрасте. У меня тут такая маханькая проблема с копИрованием одного массива в др... (ответов: 7)
Вопрос № 2390. Здравствуйте, уважаемые! Перелопатив в поисковиках добрые две сотни (не побоюсь этой цифры)ссылок, т... (ответов: 4)
Вопрос № 2391. Здраствуйте уважаемые эксперты!Существуют ли специальные средства , API функции итп предназначеные с... (ответов: 7)
Вопрос № 2392. Привет Эксперты!!! С прошедшими праздниками!!! У меня к вам пару вопросов: 1.Что такое offset? 2.Сто... (ответов: 9)
Вопрос № 2393. Здравствуйте Эксперты и подписчики! Помогите разжиться инфой по 3Dnow!, SSE, SSE2 и иже с ними. Можн... (ответов: 5)
Вопрос № 2394. Подскажите, plz, как установить скорость RS-232 больше 9600 (DOS). ... (ответов: 2)
Вопрос № 2395. Здравствуйте уважаемые эксперты! Вот пытаюсь освоить asm, а имено защищенный режим. Проблем одна - л... (ответов: 2)
Вопрос № 2397. Здравствуйте! Изучаю рассылку "Ассемблер? Это просто!.." и там в одном из первых выпусков ... (ответов: 7)
Вопросов: 8, ответов: 43
Вопрос № 2389 |
Добро всем читающим, здрасте.
У меня тут такая маханькая проблема с копИрованием одного массива в другой.
Так вот.
У меня есть регистр es, это по сути это у меня выделенный блок памяти и также
у меня есть переменная name db 'Hello world!$'.
Я хочу сделать чтобы побайтово переменная name копировалась также в es.
Я сделал вот так.
xor di,di
mov cx,12
bbb:
mov byte ptr es:[di],name[di]
inc di
loop bbb
Выдает ошибку.
Подскажите, что мне надо сделать?
Большое спасибо.
Вопрос отправлен: 11.01.2003, 19:33
Отправитель: Buggy
[Следующий вопрос >>] [Список вопросов]
Отвечает Bob Johnson
Приветствую Вас, Buggy!
xor di,di
mov cx,12
bbb:
mov al, name[di]
mov es:[di], al
inc di
loop bbb
Ответ отправлен: 12.01.2003, 15:46
Отправитель: Bob Johnson
Отвечает Sensey
Добрый день, Buggy!
:)
У тебя копирование память-память, что нельзя. Делай через регистр!
mov al,name[di]
mov byte ptr es:[di],al
Ответ отправлен: 12.01.2003, 14:15
Отправитель: Sensey
Отвечает LIFO
Добрый день, Buggy!
А просто нельзя данной командой(MOV) делать перемещение типа
память-память
Используй movs
Ответ отправлен: 12.01.2003, 18:24
Отправитель: LIFO
Отвечает St
Привет, Buggy!
Копировать из памяти в память командой mov нельзя, для этого существует movs (из ds:si в es:di), причем loop не нужен тк существует префикс повторения REP.
St
Ответ отправлен: 11.01.2003, 22:20
Отправитель: St
Отвечает keleb-glin
Приветствую Вас, Buggy!
лучше так:
push ds
pop es ;настраиваем es на сегмент данных ( точнее - куда ;копируем )
mov si, offset sourcearray ; si - смещение массива - ;источника
mov di, offset destinationarray ; di - смещение массива - ;назначения
mov cx, 12 ;количество повторов оператора rep
rep movsb ;собственно пересылка
Ответ отправлен: 12.01.2003, 18:05
Отправитель: keleb-glin
Отвечает ASMодей
Приветствую Вас, Buggy!
Пересылать байты из памяти в память можно только используя
команды MOVS. Поэтому или пиши так:
mov si,offset name
xor di,di
mov cx,12
cld
rep movsb
или используй дополнительный регистр:
xor di,di
mov cx,12
bbb:
mov al,name[di]
mov es:[di],al
inc di
loop bbb
Ответ отправлен: 12.01.2003, 09:15
Отправитель: ASMодей
Отвечает Ayl
Добрый день, Buggy!
1. Внимательно прочитать сообщение об ошибке. У тебя должно быть примерно следующее:
**Error** a.asm(NLINE) Illegal memory reference
2. Открываешь свой файл (а еще лучше, если при компиляции будет формироваться листинг) и ищещь строчку с номером NLINE. Внимательно на нее смотришь. Очень внимательно.
У тебя эта строка будет:
mov byte ptr es:[di], name[di]
3. Если при прямом рассмотрении ты не понимаешь, что происходит, берешь справочник по командам. Любой. Главное, чтобы были описаны формат команды и комментарии к тому, что она делает. В данном случае смотришь описание команды mov
У меня в справочнике написано буквально следующее:
MOV. Пересылка данных. Пересылка специальных данных.
Копирует значение операнда-источника в операнд-приемник. [...] Команда не может пересылать данные из памяти в память; для таких пересылок может быть использована команда MOVS.
4. Бьешь себя рукой по лбу и говоришь: "Ну, конечно! Как же я мог это забыть! Сейчас все исправлю!".
Для исправления программы надо заменить вышеуказанную строку на две:
mov al, name [di]
mov es:[di], al
Ответ отправлен: 13.01.2003, 11:49
Отправитель: Ayl
Вопрос № 2390 |
Здравствуйте, уважаемые!
Перелопатив в поисковиках добрые две сотни (не побоюсь этой цифры)ссылок, так и не смог найти живую на Windasm 8.93. Кто-нибудь знает такую? Если не сильно напряжно, то можно и сам дизассемблер мне в ящик кинуть, не такой уж он и большой.
Вопрос отправлен: 11.01.2003, 19:32
Отправитель: Саня (thecure2@mail.ru)
[Следующий вопрос >>] [Список вопросов]
Отвечает Broken Sword
А на www.exetools.com смотрел?
Ответ отправлен: 11.01.2003, 20:13
Отправитель: Broken Sword
Отвечает Maverick
Добрый день, Саня!
Погляди на www.filesearch.ru
Я со своим провом не смогу ее на ящик кинуть :(
Ответ отправлен: 13.01.2003, 17:07
Отправитель: Maverick
Отвечает LIFO
Здравствуйте, Саня!
http://www.filesearch.ru/cgi-bin/s?q=w32dasm&t=f&d=
Ответ отправлен: 12.01.2003, 11:45
Отправитель: LIFO
Отвечает Gibbel
Доброе время суток, Саня!
Проверяй мыло - скинул 8.93 и 9Beta
Ответ отправлен: 13.01.2003, 10:22
Отправитель: Gibbel
Вопрос № 2391 |
Здраствуйте уважаемые эксперты!Существуют ли специальные средства , API функции итп предназначеные специально подвесить систему или это достигается только програмными средстами?
Если можно пример коротенькой программы на асме.
Заранее благоларен Юрий.
Вопрос отправлен: 11.01.2003, 21:56
Отправитель: Yury (ch_y@mail.ru)
[Следующий вопрос >>] [Список вопросов]
Отвечает keleb-glin
Добрый день, Yury!
Ты это смеёшься, или серьёзно полагаешь, что мелкософт потрудится написать функции для подвешивания системы?
Но я рекомендую тебе попробовать делать то, что категорически запрещается во всяких SDK и MSDN - удаляй все полученные DC, в BeginPaint смело пиши HWND_DESKTOP, а главное - почаще прыгай на адрес 0000FFFFh ( или что-то в этом роде ).
Хотя извини, забыл. Есть одна функция - TerminateProcess. Для этого надо найти ID процесса kernel32.dll, а это любимое занятие программиста.
Объясняю для вин98 ( для 2К, НТ, и ХР - может это сработает, но не гарантирую, вообще-то там используются другие функции)
1.делаем снимок системы -
push 0
push TH32CS_SNAPPROCESS
call CreateToolhelp32Snapshot
mov SnapHandle, eax
2. создаём эксемпляр структуры PROCESSENTRY32 и заполняем поле размера
mov ProcessData.dwSize, sizeof PROCESSENTRY32
3. юзаем функцию Process32First, а потом - Process32Next, пока она не возвратит 0.
push offset ProcessData ; ProcessData - экземпляр
;PROCESSENTRY32
push SnapHandle
call Process32First ;или Process32Next
;смотрим, если ProcessData.szExeFile - $(windir)system kernel32.dll, смотрим ProcessData.th32ProcessID
;открываем процесс
push ProcessData.th32ProcessID
call OpenProcess
;убиваем
push 0
push eax
call TerminateProcess
итак, кернел повержен, комп в дауне
Ответ отправлен: 12.01.2003, 18:36
Отправитель: keleb-glin
Отвечает Bob Johnson
Доброе время суток, Yury!
Как ты себе представляещь API функцию, которая бы подвешивала систему? HangMeNow () ???
9х можно подвесить без всяких функций (DOS - так же):
cli
jmp $-2
C NT сложнее.
Ответ отправлен: 12.01.2003, 23:30
Отправитель: Bob Johnson
Отвечает Maverick
Приветствую Вас, Yury!
Навряд ли есть такие API функции, вот если ты их будешь коряво использовать...
Ответ отправлен: 13.01.2003, 17:07
Отправитель: Maverick
Отвечает Igoryk
Здравствуйте, Yury!
В модуле user32.dll DisableOemLayer в Win98 работает точно, насчет XPNT не знаю.
Ответ отправлен: 12.01.2003, 14:21
Отправитель: Igoryk
Отвечает baldr
Доброе время суток, Yury!
Специальные встроенные функции чтоб подвесить винду? :)))
Я думаю, найдется много шутников, которые скажут, что винда из них и состоит... :))
Вот тебе примерчик, который работает во всех виндах кроме NT-шных...
cli
jmp $-2
Это, как ты, наверное, догадался, бесконечный цикл при запрещенных прерываниях... :)))
Ответ отправлен: 12.01.2003, 00:02
Отправитель: baldr
Отвечает Portnov
Доброе время суток, Yury!
М-дя. "Существуют ли такие-то АПИ ф-ции, или это можно сделать только прораммными средствами?" Вы поняли, что спросили? АПИ ф-ции - это что, по-вашему, аппаратные средства? Ну да ладно...
АПИ функций таких AFAIK нет. Но вот винда 9x вешается так:
cli
jmp $
И усе. Правда, не пробовал такое писать в приложениях Вин32 (писал просто com-файл), но, по-моему, работать тоже будет. На NT-системах такое не пройдет.
С уважением, Portnov.
Ответ отправлен: 13.01.2003, 11:21
Отправитель: Portnov
Отвечает masquer
Добрый день, Yury!
Спецаильных, конечно, нет, но если при использовании некоторых функций ошибиться, то вполне можно применять...
А можно так еще сделать - в винднах, особенно 9х, есть ограничение на количество окон, берешь и в цикле создаешь окна. Под 2к подвесить не удалось, но система о-о-о-очень медленно работала (атлон+256мб памяти), мышка почти не шевелилась. Вот так вот :)))
Ответ отправлен: 13.01.2003, 12:16
Отправитель: masquer
Вопрос № 2392 |
Привет Эксперты!!!
С прошедшими праздниками!!!
У меня к вам пару вопросов:
1.Что такое offset?
2.Стоит ли покупать книги Юрова "Assambler практикум и Assembler учебник"?
3.Скажите пожалуйста где можно скачать справочник по командам и прерываниям?
Broken Sword это не о тебе ли писали в хакере!
Это ты научился асму из-за девушки. Которая сама програмила на асме.
Вопрос отправлен: 12.01.2003, 13:38
Отправитель: Lando (next86@mail.ru)
[Следующий вопрос >>] [Список вопросов]
Отвечает mang
Приветствую Вас, Lando!
Оператор offset возвращает смещение переменной(метки)
относительно базы сегмента,где переменная(метка)определена.
OFFSET Имя переменной
OFFSET Имя метки
На щет буки есть ASSEMBLER учебный курс В.ЮРОВ. С.ХОРОШЕНКО
Пользуюсь им только для закрепления пройденого вопроса.
Ответ отправлен: 12.01.2003, 16:48
Отправитель: mang
Отвечает Broken Sword
было дело...
Ответ отправлен: 12.01.2003, 16:35
Отправитель: Broken Sword
Отвечает Bob Johnson
Доброе время суток, Lando!
1. Адрес какой-либо переменной:
mov ax, offset MY_VAR
ax = адрес MY_VAR
2. Assablbler? Нет.
Ответ отправлен: 12.01.2003, 23:31
Отправитель: Bob Johnson
Отвечает Maverick
Здравствуйте, Lando!
1.Смещение.
2.Да, не плохая книга, но для начала Зубков лучше.
3.Погляди архив рассылки, было много адресов.
Ответ отправлен: 13.01.2003, 17:07
Отправитель: Maverick
Отвечает Igoryk
Здравствуйте, Lando!
Спасибо.
1. OFFSET - это директива, с помощью которой помещается смещение какой-нибудь переменной относительно начала текущего сегмента в регистр или в слово памяти.
2. Не могу подсказать вроде бы хороший учебник, но не все тонкости программрования отслеживаются в книге.
3. В сети.
Ответ отправлен: 12.01.2003, 14:21
Отправитель: Igoryk
Отвечает LIFO
Добрый день, Lando!
1. Cмещение в сегменте
2. В учебнике хорошая теория , но исходники глюковатые(с ошибками)
В Практикуме - хорошая теория +алгоритмы
Вывод:не жалко денег - покупай , пригодятся.
3.В любом поисковике набери Interrupt List
Ответ отправлен: 12.01.2003, 13:51
Отправитель: LIFO
Отвечает keleb-glin
Здравствуйте, Lando!
offset - смещение в памяти относительно начала текущего сегмента.
Юрова купи обязательно.
Ответ отправлен: 15.01.2003, 21:52
Отправитель: keleb-glin
Отвечает Portnov
Приветствую Вас, Lando!
Если вы спрашиваете, что такое оффсет, то вам определенно стоит купить Юрова!
3. По прерываниям - на сайте Артема Шегеды (shegeda.chat.ru, там TechHelp), по командам - OPCODES.HLP идет вместе с MASM32, или можно отдельно найти; Еще по командам - интелловские мануалы, в эл. виде есть на developer.intel.com
С уважением, Portnov.
Ответ отправлен: 13.01.2003, 11:27
Отправитель: Portnov
Отвечает masquer
Приветствую Вас, Lando!
1. Смещение относительно чего-либо (обычно от начала области данных, если это переменная)
2. Полезнее пойти пива купить, чем этот отстой...
Ответ отправлен: 13.01.2003, 12:20
Отправитель: masquer
Вопрос № 2393 |
Здравствуйте Эксперты и подписчики!
Помогите разжиться инфой по 3Dnow!, SSE, SSE2 и иже с ними. Можно и по MMX, но я недавно нашел неплохую доку на аглицком – пока хватает ее. А вот по остальным технологиям гухо, как в танке. Пол-инета облазил, а самую фигню нешел, типа http://www.cpuid.com, и Зубкова. Дык у одного – совсем мало, а у других – все под онлайн замучено. А инет у меня – не выделенка, и даже не халявный. Мне подойдет все, даже линки. Скачать-то я скачаю, а вот найти никак не могу.
ЗЫ. Меня очень интересует описание команд с указанным числом тактов. Чтобы реально знать на сколько же я улучшил тот или иной кусок кода, переписав его например под MMX.
(Жаль что в моей доке про количество тактов и не вспоминается). На сколько я понимаю команды MMX не изменяют флагов процессора, ведь регистры то сопроцесорные. Тогда как общественность без этого обходится? Например как узнать о переполнении при PSLLQ mm0,1? Или в даном случае MMX не катит, и придется использовать два раза shl eax,1 + еще запихуть данные в еах (эта операция осуществляется над массивом 8*n байт).
Заранее благодарю, за помощь.
Вопрос отправлен: 12.01.2003, 14:58
Отправитель: Бадян (sba@litech.net)
[Следующий вопрос >>] [Список вопросов]
Отвечает Igoryk
Доброе время суток, Бадян!
PSLLQ не может вызвать переполнения! Если ты сдвинешь на n-ое количество битов содержимое регистров, ты никак не получишь число, которое не помещается в регистре.
Ответ отправлен: 13.01.2003, 17:55
Отправитель: Igoryk
Отвечает Bob Johnson
Приветствую Вас, Бадян!
Простое описание всех команд процессора есть в документации к ассемблеру NASM. Полное - на сайте intela: http://developer.intel.com/design/Pentium4/manuals/
И потом, что ты называешь переполнением в PSLLQ? Тогда в обычном shl тоже может быть переполнение...
SSE точно может изменять флаги - пример:
COMISD и COMISS.
Ответ отправлен: 12.01.2003, 23:31
Отправитель: Bob Johnson
Отвечает Gibbel
Здравствуйте, Бадян!
Держи линки:
3D Now! SDK
3D Now! Tech Docs
Мануалы по P4
Ну и где-то здесь должен быть мануал по MMX, точно не помню где...
Все мануалы в оригинальном виде, формат PDF. ;-)
Наслаждайтесь...
Ответ отправлен: 13.01.2003, 11:04
Отправитель: Gibbel
Отвечает Portnov
Приветствую Вас, Бадян!
Про все, кроме 3DNow!, есть в интелловских мануалах - в эл. виде есть на developer.intel.com, может, там все еще можно заказать в бумажном виде. В этих мануалах - команды, их опкоды, сколько куда тактов... По-моему, лаже примерчики в две строки к каждой команде есть...
С уважением, Portnov.
Ответ отправлен: 13.01.2003, 11:33
Отправитель: Portnov
Отвечает masquer
Доброе время суток, Бадян!
Инфа на соответствующий сайтах Intel и AMD.
Насчет тактов - для каждого процессора будет своя растактовка, плюс учитывай распаровывание инструкций, так что об этом и речи быть не может (2Portnov - намек на твой ответ). Хочешь посчитать экономию - бери профилировщик и вперед, или rdtsc юзай.Насчет обходится - обхожусь как-то, и не страдаю - MMX не для этих целей был разработан. Что за задача, может MMX и не стоит использовать?
Ответ отправлен: 13.01.2003, 12:37
Отправитель: masquer
Вопрос № 2394 |
Подскажите, plz, как установить скорость RS-232 больше 9600 (DOS).
Вопрос отправлен: 12.01.2003, 15:21
Отправитель: Alex
[Следующий вопрос >>] [Список вопросов]
Отвечает Igoryk
Добрый день, Alex!
Этот вопрос лучше послать в рассылку Железо. Так как это нен совсем по теме ассемблера.
Ответ отправлен: 13.01.2003, 17:55
Отправитель: Igoryk
Отвечает Ayl
Доброе время суток, Alex!
Элементарно. Через порты (BIOS не поддерживает скорость выше 9600 бод, хотя насчет современных не уверен).
Для этого нужно выполнить следующие действия.
1. Определить базовый порт для работы с RS-232:
COM1 - pb = 3f8
COM2 - pb = 2f8
COM3 - pb = 3e8
COM4 - pb = 2e8
2. Записать в порт с номером pb+3 значение 80h (бит DLAB - Devisor Latch Access Bit).
3. Записать в порт с номером bp+0 младший байт делителя скорости обмена, в порт с номером bp+1 - старший байт.
Скорость обмена определяется следующим образом:
V = 115200 / N,
где N = Hi * 256 + Lo, 0 <= Hi, Lo <= 255.
Байт Hi записывается в порт bp+1, байт Lo - в bp+0.
Значения N для скоростей:
N V, бод
1 115200
2 57600
3 38400
4 28800
6 19200
8 14400
12 9600
24 4800
48 2400
96 1200
192 600
384 300
768 150
1040 110
Ответ отправлен: 13.01.2003, 12:24
Отправитель: Ayl
Вопрос № 2395 |
Здравствуйте уважаемые эксперты!
Вот пытаюсь освоить asm, а имено защищенный режим.
Проблем одна - либо комп виснит, когда пытаюсь включить A20, либо он самопроизвольно перезагружается.
Проги, после длительных мучений самостоятельного их написания, начал скатывать из книг и с дискет к ним - результат тотже. WHAT IS IT?
Вопрос отправлен: 12.01.2003, 15:42
Отправитель: Vovchk (vovchk@mail.ru)
[Следующий вопрос >>] [Список вопросов]
Отвечает Broken Sword
Здравствуйте, Vovchk!
ага, прям как у меня. Пиши мне на brokensword@mail.ru, расскажу как и что.
Ответ отправлен: 12.01.2003, 16:35
Отправитель: Broken Sword
Отвечает Dark_Lord
Доброе время суток, Vovchk!
Если у тебя достаточно новая материнская плата, то в биосе есть такой параметр, как A20 driving mode, если он в strong, то очень часто возникают ошибки при включении A20!
Ответ отправлен: 13.01.2003, 21:16
Отправитель: Dark_Lord
Вопрос № 2397 |
Здравствуйте!
Изучаю рассылку "Ассемблер? Это просто!.." и там в одном из первых выпусков (третий?) есть программа использующая вывод в видеопамять. На win98 она работала нормально, а пересел на ХР и она ничего не выводит. Под отладчиком (AFD, Codeview) - все пучком. Но если в начале программы вставить mov ah,0Fh/int 10h (причем даже не анализируя результат) то все работает нормально без всякого отладчика. К чему бы это?
Спасибо
Вопрос отправлен: 12.01.2003, 18:07
Отправитель: Макс
[Следующий вопрос >>] [Список вопросов]
Отвечает LIFO
Доброе время суток, Макс!
Ну не разрешает тебе XP напрямую с видеопамятью работать.
Так что используй прерывания BIOS.
Ответ отправлен: 12.01.2003, 18:27
Отправитель: LIFO
Отвечает Dark_Lord
Добрый день, Макс!
WinXP не разрешает прямое обращение к любому железу, под дос эмулируются только VGA, а не SVGA!
Ответ отправлен: 13.01.2003, 21:19
Отправитель: Dark_Lord
Отвечает Broken Sword
Приветствую Вас, Макс!
а к тому, что это заточки XP. Не обязательно вставлять mov ah,0Fh/int 10h, можно ограничиться и mov ah,03h/int 10h. Эту штуку я еще давно заметил и кричал о ней по всем весям, не знаю отчего это... кажется когда то я обнаружил, что XP по умолчанию использует 1 видеостраницу (а не нулевую), поэтому весь вывод идет не в текущую (нулевую)видеостраницу,а в первую, и на экране мы ничего не видим.
но может быть мне все это только приснилось
Ответ отправлен: 12.01.2003, 20:05
Отправитель: Broken Sword
Отвечает Maverick
Здравствуйте, Макс!
Просто надо переключить видеорежим.
Ответ отправлен: 13.01.2003, 17:08
Отправитель: Maverick
Отвечает mang
Добрый день, Макс!
Извени MAKC ответ не по вопросу.подскажи адрес рассылки
Ответ отправлен: 13.01.2003, 15:58
Отправитель: mang
Отвечает Bob Johnson
Доброе время суток, Макс!
Я обычно ставлю в начало проги
mov ax, 3
int 10h
Это устанавливает текстовый видеорежим. Скорее всего, т.к. ХР - далеко DOS, то он просто не устанавливает эмуляцию видеопамяти до тех пор, пока это ему не укажут вызовом функции 10h. (Консоль - это не текстовый режим!)
Ответ отправлен: 13.01.2003, 00:03
Отправитель: Bob Johnson
Отвечает Ayl
Приветствую Вас, Макс!
Надеюсь, программа запускается из командной строки DOS или из-под какой-либо оболочки (FAR, NC и т.п.)?
Если ты в начало своей программы добавишь команды:
mov ax, 3
int 10h
то у тебя тоже все должно работать. Просто у NT-ых систем (в т.ч. и у XP) проблема с коректным отображением видеопямяти для DOS-программ. Им надо в начале программы обратиться к 10-му прерыванию, чтобы ось поняла, что она уже не совсем главная :-)
Ответ отправлен: 13.01.2003, 12:42
Отправитель: Ayl
Форма отправки вопроса |
Форма может работать некорректно в почтовых программах "Microsoft Outlook" и "Microsoft Outlook Express". В программе The Bat! подобные формы не работают вообще!
После нажатия на кнопку "Отправить", будет открыто второе окно. Заметьте, что в некоторых браузерах могут стоять запреты на открытие других окон, а также "чрезмерное" кэширование данных, при этом факт отправки Вашего вопроса стоит под сомнением.
Мы рекомендуем открывать рассылку в программе Internet Explorer 5.0+ или отправлять вопросы с сайта по адресу: http://rusfaq.ru/cgi-bin/Message.cgi.
© 2002 Команда RusFAQ.ru.
Вопрос и дополнение |
Ваш вопрос:
Приложение (если необходимо):
Получить ответов:
Выбор рассылки |
Программисту Assembler (34) C / C++ (28) Perl (5) Delphi (18) Pascal (22) Basic / VBA (11) Java / JavaScript (7) PHP (6) MySQL / MSSQL (5) |
Пользователю Windows 95/98/Me (34) Windows NT/2000/XP (27) "Железо" (32) Поиск информации (18) |
Администратору Windows NT/2000/XP (11) Linux / Unix (14) |
Юристу Гражданское право (9) Семейное право (6) Трудовое право (5) КоАП (3) |
Отправить вопрос всем экспертам выбранной рассылки.
© 2002 Россия, Москва. Авторское право: RusFAQ.ru |
http://subscribe.ru/
E-mail: ask@subscribe.ru |
Отписаться
Убрать рекламу |
В избранное | ||