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

Ассемблер? Это просто! Учимся программировать (FAQ)


Служба Рассылок Subscribe.Ru проекта Citycat.Ru

Ассемблер? Это просто! Учимся программировать (FAQ)
______________________________________

Выпуск N 054

Вопросы, которые поступили от подписчиков рассылки
"Ассемблер? Это просто! Учимся программировать"

Дата выхода: 2001-08-10


Вопрос №461

Здравствуйте!
Я знаю , что с помощью портов 3c8 , 3c9 можно устанавливать палитру , но не знаю как конкретно. Может кто подскажет как
это делать или хотя бы даст ссылку где это описано.
Заранее спасибо.

Ответ

Здравствуйте, Андрей!
Посмотри в архиве рассылки, на этот вопрос отвечали раз 5-10 уже :(


Отправил эксперт: Sensey
Эксперт отправил ответов (всего): 59

Экспертная группа: Общие вопросы по программированию на Ассемблере под DOS

Вопрос №461

Здравствуйте!
Я знаю , что с помощью портов 3c8 , 3c9 можно устанавливать палитру , но не знаю как конкретно. Может кто подскажет как
это делать или хотя бы даст ссылку где это описано.
Заранее спасибо.

Ответ

Здравствуйте, Андрей!
А делается это так:
В порт 3c8h посылается номер цвета, а в порт 3с9h последовательно красная, зеленая и синяя составляющие, например:

mov dx,3c8h
out dx,10 ; цвет № 10
mov dl,0c8h
out dx,17 ; R
out dx,12 ; G
out dx,0 ; B


Отправил эксперт: Painbringer
Эксперт отправил ответов (всего): 24

Экспертная группа: Общие вопросы по программированию на Ассемблере под DOS

Вопрос №460

Здраствуйте эксперты!
Мой вопрос не относится к теме программирования на асм.!
Пораллельно программированию на асм., я занимаюсь прог. на Си, у меня возникает куча вопросов, но я немогу найти путевые ссылки с FAQ по Си, где нам великим чайникам так дахотчиво и понятно отвечали на вопросы как на Колашнике
Вас незатруднит дать мне путевые ссылки...!

Ответ

Здравствуйте, В поисках правды!!
А правда, она в том что чайникам ассемблер нафиг не нужен! Им ворд нужен и учебник русского языка! А если нужен то задавай вопросы сюд и не ищи альтернативу "кОлашнику"!


Отправил эксперт: Painbringer
Эксперт отправил ответов (всего): 25

Экспертная группа: Пользовательская работа с Windows

Вопрос №461

Здравствуйте!
Я знаю , что с помощью портов 3c8 , 3c9 можно устанавливать палитру , но не знаю как конкретно. Может кто подскажет как
это делать или хотя бы даст ссылку где это описано.
Заранее спасибо.

Ответ

Уважаемый Андрей!
03С8h - это регистр индекса DAC для режима записи
Если запишешь сюда байт, то DAC переведется в режим записи и дальнейший вывод в 03C9h будет приводить к записи новых значений в регистры палитры, начиная с этого индекса.
03С9h - регистр данных DAC
Чтение отсюда считывает значение регистра палитры с индексом, помещенным предварительно в 03С8h (см. выше), запись - записывает новое значение в регистр палитры с индексом, находящимся в 03C8h. На каждый регистр требуются три операции чтения/записи, передающие три 6-битных значения уровня цвета (red, green, blue). После третьей операции чтения/записи индекс текущего регистра палитры увеличивается на 1, так что можно считывать/записывать сразу несколько регистров.

Совет: при работе с регистрами DAC используй команды insb/outsb - они быстрее и меньше аналогичных процедур с исп. int 10h
P.S. Если сильно надо, могу выслать пример. Но думаю, и так все ясно. ;)


Отправил эксперт: Broken Sword
Эксперт отправил ответов (всего): 23

Экспертная группа: Общие вопросы по программированию на Ассемблере под DOS

Вопрос №464

Здравствуйте, уважаемые эксперты.
Хочу прикупить новый сидюк, но не знаю какой.(выбор большой)
Если вам не лень, дайте совет.(желательно с аргументацией)
Заранее благодарен.187

Ответ

Здравствуйте, 187!
Если хочешь прикупить сидюк, то бери уже DVD и не мучся. Посоветую Pioneer (с микрофлипом который, без подставки). Главный аргумент - читает все (уже полгода). Второй аргумент - при всовывании диска он не царапается (как многие думают о таких моделях) а наоборот, чистится (там две специальные подушечки стоят ;). На втором месте - Creative (этот кадр с пультом, удобно, если уж накопил на DVD диск лежи и смотри на диване...;)
НЕ БЕРИ SONY DVD, т.к. читает через один (хотя скорее это мне такой попался экземплярец...) уж от кого не ожидал никак...
Насчет сидюков, самые лучшие это TEAC и ASUS (но второй шумит "как вертолет при взлете" (журнал Компьютеры) они и стоют подороже... Если ты уж сильно крут то достань себе Plextor (этого красавца - тока на заказ и то нада пройти Face control... :) - этот экземпляр в мире CDROM тоже, что Диабла* в мире Auto.
Не бери всяких там BTC, Мitsumi, и др. которые из трех букв... (хотя есть и такие двускоростные Mitsumi начала перестройки, которые до сих пор пахают...)
А вообще по большому счету тебе нет смысла брать сидюк, доплати 10$ и возьми как я говорил DVD (читает и CD и DVD - ВСЕ модели).

* - Диабла - машина есть такая, Ламборгини, здесь в Одессе ни одной нет и наверно еще лет 10 не будет ;(... В Москве, слышал, есть штук 5 (даже Контач вроде один влепился...), а на сайте auto.ru какой то тип продает ее там же в Москве за........ 40 кусков зелени!!! (всего!!! ;) (не, ну новая тянет на 250). Правда, чего-то зеленого цвета и 88 года она... ;(. Так что берите, пока не поздно ;)!
p.s. извиняюсь за оступление от темы "Какой сидюк брать", но я от этой тачи просто тащусь... (если кого интересует могу МНОГО всего про нее понарассказывать ;)


Отправил эксперт: Broken Sword
Эксперт отправил ответов (всего): 24

Экспертная группа: Модели, виды и типы компьютеров (hard)

Вопрос №468

В номере 10 рассылки была программа, прехватывающая
21 прерывание. Вот ее часть:

Init:
;установим наш обработчик (Int_21h_proc) (адрес нашего обработчика, если быть точнее) на 21h прерывание. Это позовляет сделать функция 25h прерывания 21h. Но прежде нам нужно запомнить оригинальный адрес этого прерывания. Для этого используется функция 35h прерывания 21h:
mov ah,35h ;AH содержит номер функции (это понятно)
mov al,21h ;AL указывает номер прерывания, адрес (или вектор) которого нужно получить
int 21h ;тепрь в ES:BX адрес (вектор) 21h прерывания (ES - сегмент, BX - смещение)
mov word ptr Int_21h_vect,bx
mov word ptr Int_21h_vect+2,es ;обратите внимание на запись
;итак, адрес сохранили. Теперь перехватываем прерывание:
mov ax,2521h
mov dx,offset Int_21h_proc ;DX должен указывать на наш обработчик (т.е. Int_21h_proc)
int 21h


Мне интересно, почему в строках:
mov word ptr Int_21h_vect,bx
mov word ptr Int_21h_vect+2,es

сначала зиписывается BX потом ES, ведь адрес выглядит как ES:BX???

Дмитрий.
daylightinc@mail.ru

Ответ

Уважаемый Дмитрий!
Посмотрите, пожалуйста, предыдущую рассылку... там молодой человек интересовался по поводу представления данных в памяти...
так вот.... ;) ответов от экспертов и не очень (как я) довольно прилично вроде.... ;)


Отправил эксперт: Broken Sword
Эксперт отправил ответов (всего): 25

Экспертная группа: Общие вопросы по программированию на Ассемблере под DOS

Вопрос №467

Уважаемые эксперты,
у меня к вам такой вопрос: можно ли с помощью команды WINDOWS, и если да то какой, перевести монитор в ждущий режим (standby), в который его после нескольких минут бездействия переводит WINDOWS?

Ответ

Здравствуйте, electronic!
А зачем вам это? И что вы понимаете под "командой WINDOWS" (кстати какой виндовоз то)?? В принципе в меню ПУСК есть такая хрень как приостановить работу компа. Но вообще я бы не рекомендовал ей пользоваться, особенно на небольшие промежутки времени, т.к. она тормозит винт, потом при выходе он снова раскручивается, что не есть для него гуд.


Отправил эксперт: Painbringer
Эксперт отправил ответов (всего): 27

Экспертная группа: Пользовательская работа с Windows

Вопрос №468

В номере 10 рассылки была программа, прехватывающая
21 прерывание. Вот ее часть:

Init:
;установим наш обработчик (Int_21h_proc) (адрес нашего обработчика, если быть точнее) на 21h прерывание. Это позовляет сделать функция 25h прерывания 21h. Но прежде нам нужно запомнить оригинальный адрес этого прерывания. Для этого используется функция 35h прерывания 21h:
mov ah,35h ;AH содержит номер функции (это понятно)
mov al,21h ;AL указывает номер прерывания, адрес (или вектор) которого нужно получить
int 21h ;тепрь в ES:BX адрес (вектор) 21h прерывания (ES - сегмент, BX - смещение)
mov word ptr Int_21h_vect,bx
mov word ptr Int_21h_vect+2,es ;обратите внимание на запись
;итак, адрес сохранили. Теперь перехватываем прерывание:
mov ax,2521h
mov dx,offset Int_21h_proc ;DX должен указывать на наш обработчик (т.е. Int_21h_proc)
int 21h


Мне интересно, почему в строках:
mov word ptr Int_21h_vect,bx
mov word ptr Int_21h_vect+2,es

сначала зиписывается BX потом ES, ведь адрес выглядит как ES:BX???

Дмитрий.
daylightinc@mail.ru

Ответ

Здравствуйте, Дмитрий!
Адрес представляет собой двойное слово. Я надеюсь что вам известно что старшее слово в двойном слове хранится по младшему адресу. Вот отсюда и имеем (см. вопрос 453 a.k.a. 454).


Отправил эксперт: Painbringer
Эксперт отправил ответов (всего): 28

Экспертная группа: Общие вопросы по программированию на Ассемблере под DOS

Вопрос №468

В номере 10 рассылки была программа, прехватывающая
21 прерывание. Вот ее часть:

Init:
;установим наш обработчик (Int_21h_proc) (адрес нашего обработчика, если быть точнее) на 21h прерывание. Это позовляет сделать функция 25h прерывания 21h. Но прежде нам нужно запомнить оригинальный адрес этого прерывания. Для этого используется функция 35h прерывания 21h:
mov ah,35h ;AH содержит номер функции (это понятно)
mov al,21h ;AL указывает номер прерывания, адрес (или вектор) которого нужно получить
int 21h ;тепрь в ES:BX адрес (вектор) 21h прерывания (ES - сегмент, BX - смещение)
mov word ptr Int_21h_vect,bx
mov word ptr Int_21h_vect+2,es ;обратите внимание на запись
;итак, адрес сохранили. Теперь перехватываем прерывание:
mov ax,2521h
mov dx,offset Int_21h_proc ;DX должен указывать на наш обработчик (т.е. Int_21h_proc)
int 21h


Мне интересно, почему в строках:
mov word ptr Int_21h_vect,bx
mov word ptr Int_21h_vect+2,es

сначала зиписывается BX потом ES, ведь адрес выглядит как ES:BX???

Дмитрий.
daylightinc@mail.ru

Ответ

Здравствуйте, Дмитрий!
Обычно заводят переменную разрядностью двойного слова, что бы сохранить в ней и сегмент старого обработчика, и смещение, точно в таком же виде какой имеет соответствующая строка в таблице векторов прерываний. Потому что так потом легко передавть управление старому
обработчику, например jmp cs:[Int_21h_vect] или последовательностью команд pushf и call cs:[Int_21h_vect]
Ты поступаешь именно так,переменная Int_21h_vect - двойное слово, после того как функция ah=25 прерывания int 21h вернула тебе в es сегментный адрес, а в bx смещение ты их сохраняешь и для этого содержимое es помещаешь в СТАРШЕЕ слово переменной int_21h_vect, а содержимое bx в МЛАДШЕЕ слово этой же переменной. Для того чтобы обратится к младшему слову ты используешь синтаксис:
mov WORD PTR Int_21h_vect,bx
чтобы к старшему:
mov WORD PTR Int_21h_vect+2,es
WORD PTR показывает что ты обращаешся к переменной как к слову, если бы ты не указал этого, то компилятор бы заругался что ты грузишь слово bx в двойное слово Int_21h_vect, т.к. для команды mov операнды должны иметь одинаковые разрядности. Обращаясь к старшему слову ты указываешь WORD PTR Int_21h_vect+2 что тебя интересует слово, хранящееся в памяти начиная с третьего байта (по порядку, но не по индексу) переменной Int_21h_vect.
То же самое ты мог записать как:
mov WORD PTR Int_21h_vect[0],bx
mov WORD PTR Int_21h_vect[2],es
А теперь собственно о самом вопросе: Абсолютно все равно, сохраняешь ты сперва старшее слово, потом младшее или наоборот, т.к. ты обращаешся к ним как независимым друг от друга переменным.



Отправил эксперт: Alexander_K
Эксперт отправил ответов (всего): 1

Экспертная группа: Общие вопросы по программированию на Ассемблере под DOS

Вопрос №464

Здравствуйте, уважаемые эксперты.
Хочу прикупить новый сидюк, но не знаю какой.(выбор большой)
Если вам не лень, дайте совет.(желательно с аргументацией)
Заранее благодарен.187

Ответ

Здравствуйте, 187!
Возьми TEAC какойнить, очень хорошие сидюкю, работают тихо, да и компакты не рвут:)


Отправил эксперт: Leha
Эксперт отправил ответов (всего): 13

Экспертная группа: Модели, виды и типы компьютеров (hard)

Вопрос №465

Здравствуйте, уважаемые эксперты.
Скажите, можно ли как-нибудь определить такие две вещи:
1. Поддерживает ли материнская плата режим UDMA 66. (Плата Chaintech 6BTML440BX.ATX)
2. Сколько мегов у видеокарты S3 (4 или 8).
Может какие тестовые проги есть?
Заранее благодарен.

Ответ

Здравствуйте, Ransom!
Твоя мать точно не держит UDMA66,у матерей на i440BX поддержка только UDMA33.


Отправил эксперт: Leha
Эксперт отправил ответов (всего): 14

Экспертная группа: Модели, виды и типы компьютеров (hard)

Вопрос №458

сБЮФЮЕЛШЕ ЩЙЯОЕПРШ!
мЮОХЯЮК ОПНЦС ДКЪ AT89C51 - МЕ ПЮАНРЮЕР!
оНЛНЦХРЕ ПЮГНАПЮРЭЯЪ.
яНАЯРБЕММН ЩРН ЮБРНЛЮР ДКЪ МЮЯНЯЮ, Ю ПЮАНРЮРЭ ДНКФЕМ РЮЙ:
еЛЙНЯРЭ ГЮОНКМЪЕРЯЪ ЯЮЛНРЕЙНЛ, Ю МЮЯНЯ (ОПХ ДНЯРХФЕМХХ БЕПУМЕЦН СПНБМЪ БНДНИ)Её НРЙЮВХБЮЕР.

Ответ

гДПЮБЯРБСИРЕ, юКЕЙЯЮМДП!
еЫЕ, БЯОНЛМХК, CARRY ЯНБЯЕЛ МЕ НАЪГЮРЕКЭМН ХЯОНКЭГНБЮРЭ.

Приложение:


Отправил эксперт: Kurt
Эксперт отправил ответов (всего): 4

Экспертная группа: нОРХЛХГЮЖХЪ ОПНЦПЮЛЛ

Вопрос №464

Здравствуйте, уважаемые эксперты.
Хочу прикупить новый сидюк, но не знаю какой.(выбор большой)
Если вам не лень, дайте совет.(желательно с аргументацией)
Заранее благодарен.187

Ответ

Здравствуйте, 187!

Берите 50х CD-ROM ASUS S500. Он самый надежный, быстрый, нетребовательный к ресурсам ПК, имеет малое время доступа (75 мс), оснащен кэш-буфером в 128 кб., имеет аппаратный ограничитель скорости, кнопки для проигрывания аудио-CD. Его недостатки – чуть большая цена и высокий уровень шума (который кстати можно понизить, снизив скорость CD-ROM). Но т.к. разница в цене не высокая, а шум присутсвует у всех скоростных CD, то лучше взять именно его.
Можете также взять CD-ROM фирмы LG. Он также имеет высокую скорость, малое время доступа (75 мс), 128 кб кэш-буфер, невысокую цену.
С уважением, Евгений!


Отправил эксперт: Evgeny
Эксперт отправил ответов (всего): 10

Экспертная группа: Модели, виды и типы компьютеров (hard)

Вопрос №471

Уважаемые эксперты!!!
Мне на мыло неизвестно кто прислал какой-то файл,
и я, как полный ламер, этот exe-шник запустил
теперь гадаю, чот он там натворил.
Кому надо, я его перешлю и вы его дизасемлируете , разберетесь и т.п. , заодно себя проверете
мыло тогда мне ваше напишите

Ответ

Здравствуйте, Дмитрий!
Отправь мне на интерес глянуть.:) Шли сюда lehan@svs.ru


Отправил эксперт: Leha
Эксперт отправил ответов (всего): 15

Экспертная группа: Общие вопросы по программированию на Ассемблере под DOS

Вопрос №470

Уважаемые эксперты!!!
Какой текст легче, менее вредно для глаз читать на компе:
1) черный текст на белом фоне
2) белый текст на черном фоне
3) другое сочетание???????

Ответ

Здравствуйте, Дмитрий!

Советы:
1) Белый текст на черном фоне - меньше светисость экрана монитора
2) Подобрать сочетание, наиболее мякгое для глаза (у каждого человека свое)
3) распечатывать текст на бумаге


Отправил эксперт: Spartak
Эксперт отправил ответов (всего): 7

Экспертная группа: Пользовательская работа с Windows

Подписаться на рассылки

Рассылки Subscribe.Ru
Ассемблер? Это просто! Учимся программировать
Ассемблер? Это просто! Учимся программировать (FAQ)

Форма подачи вопроса

ВНИМАНИЕ!!! Пожалуйста, НЕ высылайте один вопрос сразу нескольким подгруппам! Дополнения к вопросам, на которые эксперт уже ответил НЕ следует направлять ведущему рассылки (я не успеваю!). Просто скомбинируйте первый вопрос и дополнение к нему, а затем заново отправьте его, используя приведенную ниже форму!

Нажимайте кнопку "Отправить" только ОДИН раз и дождитесь полной загрузки страницы, иначе вопрос будет продублирован!


Ваше имя *:

Ваш e-mail *:

Подгруппы:

Вопрос *:

Прилагаемая программа (если необходимо):


Регистрация в качестве эксперта

Архив выпусков


Ведущий рассылки,

Калашников Олег: Assembler@Kalashnikoff.ru
ICQ No.:
68951340
URL сайта подписчиков: http://www.Kalashnikoff.ru

______________

По вопросам сотрудничества, рекламы и спонсорства обращайтесь:

  1. Публичное размещение материала из рассылки: Cooperation@Kalashnikoff.ru
  2. Реклама на сайте, в книге и рассылках: http://www.Kalashnikoff.ru/Reklama.html, Reklama@Kalashnikoff.ru
  3. Издание книги (спонсорство): Sponsor@Kalashnikoff.ru

Рассылка 'Ассемблер? Это просто! Учимся программировать (FAQ)' Рассылка 'Ассемблер? Это просто! Учимся программировать'


(C) Москва, 2001. Авторское право принадлежит Калашникову О.А. Публичное размещение материала из рассылки, а также его использование полностью или частично в коммерческих или иных подобных целях без письменного согласия автора влечет ответственность за нарушение авторских прав.


http://subscribe.ru/
E-mail: ask@subscribe.ru
Отписаться Рейтингуется SpyLog

В избранное