Вопрос № 93683: Уважаемые эксперты!
Могли бы Вы мне чуть подробнее рассказать о сегментных регистрах?
Почему почти всегда когда вызывается процедура есть эти строки:
push cs
push cs
pop ds
pop es
???
а разве cs меняется всег...Вопрос № 93786: Всем привет!Не поможете ли срочным образом в решении задач(колледж) на ассемблере.Ассемблер для PC(Turboassembler Borland) - не знаю уж,насколько правильно описал среду для работы,надеюсь достаточно.
1 Вывод на экран 4-х полос разного цвета(типа ...
Вопрос № 93.683
Уважаемые эксперты!
Могли бы Вы мне чуть подробнее рассказать о сегментных регистрах?
Почему почти всегда когда вызывается процедура есть эти строки:
push cs
push cs
pop ds
pop es
???
а разве cs меняется всегда?
и если не сложно, скажите, пожалуйста,
mov ax:word ptr cs:[100] это все-равно что mov ax,cs:[100] ?
я вообще постоянно путаюсь с word ptr, dword ptr...
Все время пишу программу, и числа у меня наоборот.
например, загружаю в ax,0123, а у меня там 2301...
Всего наилучшего! Удачи!
Отвечает: Зенченко Константин Николаевич
Здравствуйте, Покритюк Виталий Леонидович!
Смотрите в приложении описание моделей организации памяти в программах. CS меняется: когда Вы используете прерывания DOS или BIOS (т.к. во время его выполнения "прерывания" процессор переходит на обработчик перерывания который расположенн в другом сегменте), когда код Вашей программы расположен в нескольких сегментах(см. MEDIUM, LARGE и HUGE).
Команды: push cs
push cs
pop ds
pop es
можно встретить в программах (модель обычно TINY) которые заменяют стандартные обработчики прерываний своими и Вам в обработчике необходимо много читать и записывать свои данные, ( т.к. на момент вызова Вашего обработчика известен только один сегментный регистр CS, остальные нужно настраивать). Регистры общего назначения имеют сегментные регистры которые используются по умолчанию в командах: mov ax,cs:[100] по умолчанию должен использоватся регистр DS, но наличие перфикса CS: указывает на чтение слова из текущего
сегмента кода (добавляется один байт в размер программы, а если комманд чтения/записи 10 и больше, то целесообразней запомнить старые DS и ES, установить свои и потом востановить старые значения сегментов это всего 8 байт). загружаю в ax,0123, а у меня там 2301... это стандартная форма записи процессоров INTEL "младший байт находится по младшему адресу". Не обращайте внимание, со временем замечать перестанете.
Скачайте эту книгу.
Удачи!
Приложение:
--------- И только наступив на грабли мы преобретаем драгоценный опыт!
Всем привет!Не поможете ли срочным образом в решении задач(колледж) на ассемблере.Ассемблер для PC(Turboassembler Borland) - не знаю уж,насколько правильно описал среду для работы,надеюсь достаточно.
1 Вывод на экран 4-х полос разного цвета(типа флага)
2 Участки прямоугольника,разделенного двумя средними линиями и двумя диагоналями(8 участков) - в разные цвета.
3 - в приложении.Здесь копия текста из задания.Правда,я сам не понял,какие участки надо выводить.Между пунктирами попытался изобразить таблицу из четырех граф(как в задании).
Приложение:
Отправлен: 03.07.2007, 14:40
Вопрос задал: ОлегГ (статус: Посетитель)
Всего ответов: 1 Мини-форум вопроса >>> (сообщений: 8)
Отвечает: Зенченко Константин Николаевич
Здравствуйте, ОлегГ!
Первые две задачи смотрите в приложении.
Программа компилируется как *.COM.
Удачи!
Приложение:
--------- И только наступив на грабли мы преобретаем драгоценный опыт!
Ответ отправил: Зенченко Константин Николаевич (статус: Практикант)
Ответ отправлен: 05.07.2007, 16:37 Оценка за ответ: 5 Комментарий оценки: Предоставленный ответ на вопрос изложен полно,подробно,с комментариями.Спасибо ЗенченкоК.Н. Первый раз обратился на RUFAQ,очевидно- эффективный,содержательныйсайт,я остаюсь.