Выпуск № 1237 от 27.07.2009, 21:05
Администратор рассылки: Лысков Игорь Витальевич, Модератор
В рассылке: подписчиков - 432, экспертов - 64
В номере: вопросов - 1, ответов - 1
Нам очень важно Ваше мнение об этом выпуске рассылки. Вы можете оценить этот выпуск по пятибалльной шкале, пройдя по ссылке: оценить выпуск >>
Вопрос № 170704: Здраствуйте,вот собственно продолжаю изучать assembler и по главе регистры вознили вопросы,как понять определение аккумулятор присваимое регистру ax,в чем различие регистра данных dx от регистра данных ds(в книжке указано только что ds это сегментны...
Вопрос № 170704:
Здраствуйте,вот собственно продолжаю изучать assembler и по главе регистры вознили вопросы,как понять определение аккумулятор присваимое регистру ax,в чем различие регистра данных dx от регистра данных ds(в книжке указано только что ds это сегментный регистр,и все таки в чем разница,в чем разница регистра ah от регистра al общую характерестикику укажите пожалуйста чтоб было понятно по какой идее идет разделение на bh и bl и тд,и вот эти регистры ah и al это как охарактеризовать ,подразделы регистра ax? или
дается какое то другое определение?почему собственно в примере листинг 2.1 страница 20 mov al,10 add al,15 mov ax,25000 у меня возник вопрос а почему именно в регист al загружаем число 10 а не в ah например или это просто конкретный пример?
Посмотрите на рисунок. Вы увидите как расположены в процессоре регистры и какая между ними связь. Аккумулятор - это часто используемый регистр, т.к. большенство команд после выполнения(mul, div и др.) результат возвращают именно в аккумуляторе. Если Вы посмотрите в отладчике или в листинге программы, то увидите, что команды работающие с аккумулатором
занимают на один байт меньше. Это сделано для для экономии памяти, т.к. раньше первые процессоры моги адресовать только 64-е килобайта(т.е. 16-ти битная шина адреса). Когда все только начиналось это было так много, но прошло время и этого(памяти) уже стало мало. Появились новые технологии и новые возможности. х86 процессор уже мог работать с одним мегабайтом памяти. Но регистры остались 16-ти битными(т.е. максимум 64-е кб.) Для этого разработчики процессора пошли на &quo
t;трюк" введя дополнительные сегментные регистры. Физический адрес в памяти вычислялся как значение сегментного регистра(умноженное на 16) и добавленое значение смещения.
Этот "трюк" позволял увеличить адресуемое пространство не выходя за пределы 16-ти бит. В изучаемой Вами ранее программе все сегменты имели одинаковое значение, т.е. CS=DS=ES=SS, при переходе на ЕХЕ-программы появляется
возможность отдельно адресовать сегмент кода, данных, стека и ещё один разширенный сегмент(все они могут быть размером до 64-кб.). В процессорах х86 в целях экономии памяти под код есть много правил "по умолчанию".
Функция DOS 09h — Записать строку в STDOUT с проверкой на Ctrl-Break Ввод: АН = 09h DS:DX = адрес строки, заканчивающейся символом $ (24h) Вывод: Никакого, согласно документации, но на самом деле: AL = 24h (код последнего символа)
Заметьте, что досовские функции используют сегментные регистры, заметьте выводимые данные должны быть расположены именно по этому физическому адресу, в отличии от непосредственного определения сегментного регистра mov
es:[ si ],al- это была индексная адресация при чтении в память одного регистра 8-мь бит, при этом значение регистра ES может быть не равно DS(регистр используемый по умолчанию), перед такими командами появляется ещё дополнительный байт называемый префиксом. Теперь о самий регистрах. У каждого регистра общего назначения есть определенная функция: AX - аккумулятор, в нем производятся основные арифметические вычисления, команды использующие этот регистр имеют
более которкий код и выполняются быстрее; BX - базовый регистр, очень полезен при работе с массивами, может применятся с регистрами DI и SI([ BX + DI ]); CX - счетчик, используется в операторе цикла и некотороых строковых командах; DX - регистр данных, в некоторых командах используется как разширитель аккумулятора, если результат работы превышает размер 16-ть бит; DI - индекс приемника; SI - индекс источника; Два последних регистра используются в строковых командах. Все выше перечисленные
регистры по умолчанию используются вместе с регистром DS; BP - база стека, может применятся с регистрами DI и SI([ BP + SI ]); SP - указатель стека; Эти два регистра по умолчанию работают только с регистром SS. рисунки из книг Зубкова и Юрова Вопросы задавайте в мини-форум. Удачи!
Украина, Киев Тел.: +38-097-953-66-19 Адрес: Украина, Киев
----- Итерация от человека. Рекурсия — от Бога. — Л. Питер Дойч
* Стоимость одного СМС-сообщения от 7.15 руб. и зависит от оператора сотовой связи.
(полный список тарифов)
** При ошибочном вводе номера ответа или текста #thank услуга считается оказанной, денежные средства не возвращаются.
*** Сумма выплаты эксперту-автору ответа расчитывается из суммы перечислений на портал от биллинговой компании.