Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
programmirovae.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
381.44 Кб
Скачать

Назначение озу

  • Хранение данных и команд для дальнейшей их передачи процессору для обработки. Информация может поступать из оперативной памяти не сразу на обработку процессору, а в более быструю, чем ОЗУ, кэш-память процессора.

  • Хранение результатов вычислений, произведенных процессором.

  • Считывание (или запись) содержимого ячеек.

Особенности работы озу

Оперативная память может сохранять данные лишь при включенном компьютере. Поэтому при его выключении обрабатываемые данные следует сохранять на жестком диске или другом носителе информации. При запуске программ информация поступает в ОЗУ, например, с жесткого диска компьютера. Пока идет работа с программой она присутствует в оперативной памяти (обычно). Как только работа с ней закончена, данные перезаписываются на жесткий диск. Другими словами, потоки информации в оперативной памяти очень динамичны.

ОЗУ представляет собой запоминающее устройство с произвольным доступом. Это означает, что прочитать/записать данные можно из любой ячейки ОЗУ в любой момент времени. Для сравнения, например, магнитная лента является запоминающим устройством с последовательным доступом.

Логическое устройство оперативной памяти

Оперативная память состоит их ячеек, каждая из которых имеет свой собственный адрес. Все ячейки содержат одинаковое число бит. Соседние ячейки имеют последовательные адреса. Адреса памяти также как и данные выражаются в двоичных числах.

Обычно одна ячейка содержит 1 байт информации (8 бит, то же самое, что 8 разрядов) и является минимальной единицей информации, к которой возможно обращение. Однако многие команды работают с так называемыми словами. Слово представляет собой область памяти, состоящую из 4 или 8 байт (возможны другие варианты).

Типы оперативной памяти

Принято выделять два вида оперативной памяти: статическую (SRAM) и динамическую (DRAM). SRAM используется в качестве кэш-памяти процессора, а DRAM - непосредственно в роли оперативной памяти компьютера.

SRAM состоит из триггеров. Триггеры могут находиться лишь в двух состояниях: «включен» или «выключен» (хранение бита). Триггер не хранит заряд, поэтому переключение между состояниями происходит очень быстро. Однако триггеры требуют более сложную технологию производства. Это неминуемо отражается на цене устройства. Во-вторых, триггер, состоящий из группы транзисторов и связей между ними, занимает много места (на микроуровне), в результате SRAM получается достаточно большим устройством.

В DRAM нет триггеров, а бит сохраняется за счет использования одного транзистора и одного конденсатора. Получается дешевле и компактней. Однако конденсаторы хранят заряд, а процесс зарядки-разрядки более длительный, чем переключение триггера. Как следствие, DRAM работает медленнее. Второй минус – это самопроизвольная разрядка конденсаторов. Для поддержания заряда его регенерируют через определенные промежутки времени, на что тратится дополнительное время.

Вид модуля оперативной памяти

Внешне оперативная память персонального компьютера представляет собой модуль из микросхем (8 или 16 штук) на печатной плате. Модуль вставляется в специальный разъем на материнской плате.

По конструкции модули оперативной памяти для персональных компьютеров делят на SIMM (одностороннее расположение выводов) и DIMM (двустороннее расположение выводов). DIMM обладает большей скоростью передачи данных, чем SIMM. В настоящее время преимущественно выпускаются DIMM-модули.

Основными характеристиками ОЗУ являются информационная емкость и быстродействие. Емкость оперативной памяти на сегодняшний день выражается в гигабайтах.

Директивы языка ассемблер.

Директивы не транслируются непосредственно в машинный код. Они используются для указания компилятору положения кода в программной памяти, для инициализации памяти и для других целей.

Директива BYTE . Это директива резервирует байты ОЗУ (в области Data). Все директивы начинаются с символа «точка».

Пример №1:

.DSEQ

Var1: .BYTE 1

.CSEQ

ldi r30, low(varl)

ldi r31, high(varl)

ld r1, z

Директива .DSEQ . Определяет, что нижеследующие строки относятся к области Data ОЗУ. Эта директива не имеет операндов.

Директива .BYTE . Имеет один обязательный операнд, указывающий количество выделенных байтов.

Если необходимо чтобы обращение к выделенным байтам происходило по имени, то вводится метка (в данном случае это метка Var 1).

Директива .CSEQ. Указывает компилятору, что последующие строчки программы должны компилироваться и располагаться в области ПЗУ.

В последующих командах используется переменная Var 1, определяющая содержимое ячеек памяти ОЗУ.

Выражения low и high являются стандартными выражениями языка Assembler и предназначены для определения старшего и младшего байтов адреса переменной Var 1, указанного в качестве операнда этих выражений.

Пример №2: определить старший и младший байты числа 30010. Переводим 30010→Х16

300| 16

288| 18|16

12 16| 1|16

2 0| 0

1

30010→12C16

Старший байт – 01, младший байт – 2С.

Директива .DEF. Эта директива назначает регистру символическое имя. Это имя может использоваться в нижеследующей части программы для обращения к данному регистру. Символическое имя может быть переименовано в программе несколько раз. Синтаксис этой директивы следующий:

.DEF Символическое имя =регистр

Пример №3:

.DEF temp=R16

.DEF ior=R0

.CSEQ

.ldi _ temp, 0×f0

.eor temp, ior

Директива .DEVICE. Определяет устройство, для которого компилируется программа. Использование данной директивы позволяет компилятору выдать предупреждение, если появится команда, не поддерживаемая данным контроллером.

Пример №4:

.DEVICE AT90S2313

Директива .EQU.Позволяет определить константу путем задания ее меткой. Формат этой директивы:

.EQU метка=выражение

Пример №5:

.EQU io_offset=0×23

.EQU port a = io_offset+2

.CSEQ

clr r2

out port a, r2

Директива .include. Означает вложение другого файла (содержимое файла включается в программу при компиляции).

Встретив .include компилятор открывает указанный в этой директиве файл, компилирует его до конца (т.е. переводит в машинные коды) или до директивы .EXIT. После этого продолжается компиляция начального файла со строки, следующей за директивой include. Вложенный файл тоже может содержать директиву include.

Пример №6:

; файл iodefs.asm

.EQU sreq=0×3F

.EQU sphigh=0×3e

.EQU splow=0×3d

; файл incdemo.asm

.include iodefs.asm

in ro,sreg

Директива .ORG устанавливает счетчик в положение равным заданной величине, которая входит как параметр в эту директиву. Для сегмента данных она устанавливает счетчик положения ОЗУ, для сегмента программ или памяти программ она устанавливает содержимое РС (программного счетчика), а для сегмента Eeprom устанавливает положение в области Eeprom.

Если директиве предшествует метка, то она становится равной адресу, указанному в параметре директивы при компиляции программы.

Перед началом компиляции РС и счетчик Eeprom нулю, а счетчик ОЗУ=32.

Для ОЗУ и Eeprom используются побайтные счетчики, а для программного сегмента пословные.

Пример №7:

.DSEQ

.ORG 0×37

; variable: .BYTE 1

; резервирует байт по адресу 0×37

.CSEQ

.ORG 0×10

MOV RO, R1; данная команда размещается по адресу 0×10

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

Пример №8:

.SET io1=0×23

.SET PORTA=io1+1

.CSEQ

out PORTA, R2

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]