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

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.

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

Ваше имя:

Ваш e-mail:

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


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

Ваш вопрос:


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


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


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

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

В избранное