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

RFpro.ru: Ассемблер? Это просто! Учимся программировать


Хостинг портала RFpro.ru:
Московский хостер
Профессиональный платный хостинг на базе Windows 2008

РАССЫЛКИ ПОРТАЛА RFPRO.RU

Чемпионы рейтинга экспертов в этой рассылке

_Ayl_
Статус: Студент
Рейтинг: 905
∙ повысить рейтинг >>
Jimhucksly
Статус: 5-й класс
Рейтинг: 434
∙ повысить рейтинг >>
AMV007
Статус: 3-й класс
Рейтинг: 143
∙ повысить рейтинг >>

∙ / КОМПЬЮТЕРЫ И ПО / Языки программирования / Assembler (Ассемблер)

Выпуск № 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 например или это просто конкретный пример?

Отправлен: 22.07.2009, 20:37
Вопрос задал: Степанов Александр Андреевич, Посетитель
Всего ответов: 1
Страница вопроса >>


Отвечает Зенченко Константин Николаевич, Модератор :
Здравствуйте, Степанов Александр Андреевич.


Посмотрите на рисунок. Вы увидите как расположены в процессоре регистры и какая между ними связь.
Аккумулятор - это часто используемый регистр, т.к. большенство команд после выполнения(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
Адрес: Украина, Киев

-----
Итерация от человека. Рекурсия — от Бога. — Л. Питер Дойч

Ответ отправил: Зенченко Константин Николаевич, Модератор
Ответ отправлен: 22.07.2009, 22:15

Оценка ответа: 5

Как сказать этому эксперту "спасибо"?
  • Отправить SMS #thank 252498 на номер 1151 (Россия) | Еще номера >>
  • Отправить WebMoney:
  • Вам помогли? Пожалуйста, поблагодарите эксперта за это!


    Нам очень важно Ваше мнение об этом выпуске рассылки. Вы можете оценить этот выпуск по пятибалльной шкале, пройдя по ссылке:
    оценить выпуск >>

    подать вопрос экспертам этой рассылки >>

    Скажите "спасибо" эксперту, который помог Вам!

    Отправьте СМС-сообщение с тестом #thank НОМЕР_ОТВЕТА
    на короткий номер 1151 (Россия)

    Номер ответа и конкретный текст СМС указан внизу каждого ответа.

    Полный список номеров >>

    * Стоимость одного СМС-сообщения от 7.15 руб. и зависит от оператора сотовой связи. (полный список тарифов)
    ** При ошибочном вводе номера ответа или текста #thank услуга считается оказанной, денежные средства не возвращаются.
    *** Сумма выплаты эксперту-автору ответа расчитывается из суммы перечислений на портал от биллинговой компании.


    © 2001-2009, Портал RFpro.ru, Россия
    Авторское право: ООО "Мастер-Эксперт Про"
    Автор: Калашников О.А. | Программирование: Гладенюк А.Г.
    Хостинг: Компания "Московский хостер"
    Версия системы: 2009.6.6 от 21.07.2009

    В избранное