Что предпочитаете?

понедельник, 21 февраля 2011 г.

Форматы чисел

В вычислительных машинах применяются две формы представления двоичных чисел:
  • с фиксированной точкой (ФТ);
  • с плавающей точкой (ПТ).
Форматы чисел с ФТ
 Числам с ФТ соответствует запись вида:
Положение точки одинаково для всех чисел и в процессе решения задачи не меняется.
Запятая фиксируется, но она никак не выделяется, а только подразумевается. При фиксации точки перед старшим разрядом могут быть представлены только правильные дроби. Этот способ применялся в ряде машин II поколения. В современных ЭВМ точка фиксируется после младшего разряда, т.е. числа рассматриваются целыми со знаком или без знака.

суббота, 19 февраля 2011 г.

Системы счисления

Система счисления (СС) – способ именования и изображения чисел с помощью символов,
имеющие определенные количественные значения.
В зависимости от способа отображения чисел, СС делятся на:
  • позиционные; 
  • непозиционные.
В позиционных СС количественное значение каждой цифры зависит от ее места (позиции) в
числе.
В непозиционных СС цифры не меняют своего количественного значения при изменении их
расположения в числе.
Количество (P) различных цифр, используемых для изображения числа в позиционной СС,
называется основанием СС. Значения цифр лежат в пределах от 0 до P-1.
В общем случае запись любого смещенного числа в СС с основанием Р будет представляться
в следующем виде:

Извиняюсь, что отсутствовал пару дней. По итогам голосования решено было написать про двоичную арифметику и представление чисел в памяти, чем я собственно сейчас и занимаюсь.

среда, 16 февраля 2011 г.

Написав о флагах, я подумал что, возможно, некоторые читатели не имеют представления о двоичной арифметике и представлении данных в памяти. Если вы считаете, что стоит осветить эти вопросы, проголосуйте.

понедельник, 14 февраля 2011 г.

Флаги

В программе нередко требуется принять решение на основании результата только что исполненной микропроцессором команды. Например, Вам может понадобиться выполнить одни действия, если результат сложения оказался нулем  и совсем другие действия в противном случае.
В 16-битовом регистре флагов фиксируется информация о текущем состоянии дел, которая может помочь Вашей программе принять решение. Шесть битов регистра служат для хранения состояний, а три других могут быть использованы для  программного управления режимом работы процессора.

Хоть это и совершенно не относится к теме блога, однако хочу всех поздравить с этим тёплым праздником в холодное время года.
Чуть позже допишу часть про регистр флагов.

воскресенье, 13 февраля 2011 г.

Господа, у моего блога много посещений, но это совсем не то, что нужно. Постарайтесь больше спрашивать (ну хотя пока ещё не о чем спрашивать) или можем общаться на отвлечённые темы.

Внутренние регистры

Так как мы занимаемся программированием микропроцессора, то логичнее всего начать эту тему с обсуждения внутренних регистров микропроцессора, доступных для использования. На рисунке показаны три группы регистров данных, и адресов, 16-битовый указатель команд IP  и 16-битовый регистр флагов.
  • Регистры данных
      В зависимости от того, чем Вы оперируете: 16-битовыми словами или 8-битовыми байтами, регистры данных можно рассматривать как четыре 16-битовых или восемь 8-битовых регистров. В первом случае регистры имеют имена АХ, ВХ, СХ, DX. Эти регистры образованы из 8-битовых регистров AL, АН, BL, ВН, CL, СН, DL и DH. Здесь L и Н означают младшие (low) и старшие (high) байты 16-битовых регистров. Например, регистры AL и АН образуют соответственно младший и старший байты регистра АХ.
Очень удивлён тем, что по моим ссылкам кто-то пришёл и даже отписался. Ну тогда мои усилия не напрасны и стоит попробовать продолжить этот блог. Постараюсь для вас, дорогие читатели.

суббота, 12 февраля 2011 г.

Сегменты и смещения

У большинства микропроцессоров адрес ячейки памяти представляет собой одно число. А у микропроцессора 8088 адрес каждой ячейки памяти задается двумя числами: номером блока и смещением. Такой странный метод адресации обусловлен тем, что команды программы для микропроцессора 8088 и ее данные должны располагаться в разных частях памяти, другими словами, в разных сегментах. Если, например, Вам требуется адресоваться к ячейке с данными, то микропроцессору 8088 понадобится адрес блока памяти, с которого начинается сегмент данных (из регистра сегмента данных), и позиция желаемой ячейки в этом сегменте (ее смещение). Вспомните, как ищут в городе чей-нибудь дом: сначала находят улицу (считайте ее сегментом), а затем дом с нужным номером (смещением) на этой улице. К счастью Вам достаточно задавать только смещение, а номер блока микропроцессор  выберет сам.

Адресация

Ну пока-что заходят только мои знакомые лица, но надеюсь на лучшее.

Так как у микропроцессора 8088 указатель команд и адресные регистры имеют по 1 Кбитов, то можно подумать, что он способен адресоваться к памяти объемом не более 64 Кбайт (65 536 байт), т. е. имеет стандартный для 8-битовых микропроцессоров диапазон адресов. Однако на самом деле микропроцессор 8088 всегда генерирует 20-битовые адреса. Он делает это за счет добавления 16-битового смещения к содержимому регистра сегмента, умноженному на 16. Таким образом:

физический адрес = смещение + 16 • (регистр сегмента)

В действительности, микропроцессор  вместо умножения на 16 использует содержимое регистр сегмента так, как если бы оно имело четыре дополнительных нулевых бита

Добавление нулей аналогично умножению, поскольку при каждом сдвиге на одну позицию влево двоичное число удваивается. Следовательно, перемещение значения регистра сегмента на четыре позиции влево умножает его на16:2*2*2*2=16.

пятница, 11 февраля 2011 г.

Указатели команд

Большинство микропроцессоров выполняют программу следующим образом: извлекают из памяти очередную команду, исполняют ее, затем извлекают следующую команду и т. д. Этот подход, естественно, приводит к простоям, так как микропроцессор должен перед исполнением команды подождать ее извлечения из памяти.
Одна из них, интерфейс шины (Bus Interface Unit), извлекает команды из памяти и осуществляет передачу данных между исполнительными компонентами и "внешним миром". Другая компонента, операционный блок (Execution Unit), только исполняет команды. Так как эти компоненты независимы, то интерфейс шины может извлекать новую команду из памяти в то самое время, когда операционный блок исполняет ранее извлеченную команду.

Ну чтож, начнём.

В этом бложике хочу попробовать возбудить интерес людей к языкам Ассамблера.
Поскольку я только студент, попрошу не кидать сразу камнями, а помочь конструктивной критикой.
Сначала я хотел сразу начать с 64-разрядного ассамблера, но всё же решил начать с самых азов.

Итак, начнём со старого-старого tasm'a.