Sfera-perm.ru

Сфера Пермь
0 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Младший байт счетчика команд

5 Системный таймер

Кроме часов реального времени, любой компьютер (даже простейший IBM PC) содержит устройство, называемое системным таймером. Это устройство подключено к линии запроса на прерывание IRQ0 и вырабатывает прерывание INT 8h приблизительно 18,2 раза в секунду (точное значение — 1193180/65536 раз в секунду).

Обработка прерываний таймера

При инициализации BIOS устанавливает свой обработчик для прерывания таймера. Этот обработчик каждый раз увеличивает на единицу текущее значение 4-байтовой переменной, располагающейся в области данных BIOS по адресу 0000:046Ch — счетчик таймера. Если этот счетчик переполнится из-за того что прошло более 24 часов с момента запуска таймера, в ячейку 0000:0470h заносится значение 1.

Другое действие, выполняемое стандартным обработчиком прерывания таймера — контроль за работой двигателей НГМД. Если после последнего обращения к НГМД прошло более 2 секунд, обработчик прерывания выключает двигатель. Ячейка с адресом 0000:0440h содержит время, оставшееся до выключения двигателя. Это время постоянно уменьшается обработчиком прерывания таймера. Когда оно становится равно 0, двигатель НГМД отключается.

Последнее действие, которое выполняет обработчик прерывания таймера — вызов прерывания INT 1Ch. После инициализации системы вектор INT 1Ch указывает на команду IRET, то есть обработчик прерывания INT 1Ch ничего не делает. Программа может установить собственный обработчик этого прерывания для того чтобы выполнять какие-либо периодические действия.

Необходимо отметить, что прерывание INT 1Ch вызывается обработчиком прерывания INT 8h до сброса контроллера прерывания, поэтому во время выполнения прерывания INT 1Ch все аппаратные прерывания запрещены. В частности, запрещены прерывания от клавиатуры.

Обработчик прерывания INT 1Ch должен заканчиваться командой IRET. Если же вы подготавливаете собственный обработчик для прерывания INT 8h, перед завершением его работы необходимо сбросить контроллер прерываний. Это можно сделать, например, так:

Таймер обычно реализуется на микросхеме Intel 8253 (для компьютеров IBM PC и IBM PC/XT) или 8254 (для компьютеров IBM PC/AT и IBM PS/2), а также на аналогах этих микросхем. Следующий раздел книги посвящен описанию микросхемы 8254.

Мы не будем подробно рассказывать о всех возможностях микросхем 8253 и 8254, так как обычно используются только несколько режимов работы (а чаще всего один). Полное описание вы сможете найти в справочной литературе по микросхемам 8253/8254, а также по их отечественным аналогам КР1810ВИ53 и КР1810ВИ54.

Микросхемы таймера 8253 и 8254

Таймеры 8253 и 8254 состоят из трех независимых каналов, или счетчиков. Каждый канал содержит регистры:

· состояния канала RS (8 разрядов);

· управляющего слова RSW (8 разрядов);

· буферный регистр OL (16 разрядов);

· регистр счетчика CE (16 разрядов);

· регистр констант пересчета CR (16 разрядов)

Каналы таймера подключаются к внешним устройствам при помощи трех линий:

· GATE — управляющий вход;

· CLOCK — вход тактовой частоты;

· OUT — выход таймера

Регистр счетчика CE работает в режиме вычитания. Его содержимое уменьшается по заднему фронту сигнала CLOCK при условии, что на вход GATE установлен уровень логической 1.

В зависимости от режима работы таймера при достижении счетчиком CE нуля тем или иным образом изменяется выходной сигнал OUT.

Буферный регистр OL предназначен для запоминания текущего содержимого регистра счетчика CE без остановки процесса счета. После запоминания буферный регистр доступен программе для чтения.

Регистр констант пересчета CR может загружаться в регистр счетчика, если это требуется в текущем режиме работы таймера.

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

Режимы работы таймера

Возможны шесть режимов работы таймера. Они разделяются на три типа:

· режимы 0, 4 — однократное выполнение функций.

· режимы 1, 5 — работа с перезапуском.

· режимы 2, 3 — работа с автозагрузкой

Режим однократного выполнения функций

В режиме однократного выполнения функций перед началом счета содержимое регистра констант пересчета CR переписывается в регистр счетчика CE по сигналу CLOCK, если сигнал GATE установлен в 1. В дальнейшем содержимое регистра CE уменьшается по мере прихода импульсов CLOCK. Процесс счета можно приостановить, если подать на вход GATE уровень логического 0. Если затем на вход GATE подать 1, счет будет продолжен дальше. Для повторения выполнения функции необходима новая загрузка регистра CR, то есть повторное программирование таймера.

Работа с перезапуском

При работе с перезапуском не требуется повторного программирования таймера для выполнения той же функции. По фронту сигнала GATE значение константы из регистра CR вновь переписывается в регистр CE, даже если текущая операция не была завершена.

Режим автозагрузки

В режиме автозагрузки регистр CR автоматически переписывается в регистр CE после завершения счета. Сигнал на выходе OUT появляется только при наличии на входе GATE уровня логической 1. Этот режим используется для создания программируемых импульсных генераторов и генераторов прямоугольных импульсов (меандра).

Читайте так же:
Скакалка калории счетчик калорий

Каналы таймера

В соверменных компьютерах задействованы все три канала таймера.

Канал 0

Канал 0 используется в системных часах времени суток (не следует путать с часами реального времени, реализованными на другой микросхеме). Этот канал работает в режиме 3 и используется как генератор импульсов с частотой примерно 18,2 Гц. Именно эти импульсы вызывают аппаратное прерывание INT 8h.

Канал 1

Канал 1 используется для регенерации содержимого динамической памяти компьютера. Выход канала OUT используется для запроса к каналу прямого доступа DMA, который и выполняет обновление содержимого памяти. Вам не следует перепрограммировать этот канал, так как это может привести к нарушениям в работе основной оперативной памяти компьютера.

Канал 2

Канал 2 подключен к громкоговорителю компьютера и может быть использован для генерации различных звуков или музыки, либо как генератор случайных чисел. Канал использует режим 3 таймеров 8253 и 8254.

Программирование таймера на уровне портов

Для чего вам может понадобиться перепрограммирование каналов таймера?

Если вам надо повысить точность измерения времени, выполняемого с помощью канала 0 таймера, вы можете увеличить частоту генерируемых этим каналом импульсов (стандартно 18,2 Гц). По окончании измерений режим работы канала необходимо восстановить для правильной работы системы.

Канал 2, подключенный к громкоговорителю, вы можете использовать для генерации различных звуков или музыки, о чем мы расскажем немного позже. Этот же канал пригодится и для генерации случайных чисел.

Таймеру соответствуют четыре порта ввода/вывода со следующими адресами:

Команды передачи управления и работы с подпрограммами

PCHL — команда загрузки содержимого регистровой пары HL. в счетчик команд PC. Используется для реализации перехода по адресу, хранящемуся в HL.

JMP ADR — безусловный переход на команду по адресу АDR, хранящемуся во втором и третьем байтах команды.

J-CON ADR — обобщенное обозначение группы команд перехода по условию CON. Включает в себя следующие команды:

JС ADR — переход на команду по адресу ADR при условии установки разряда признака переноса C.

JNC ADR — переход при условии сброса разряда признака переноса С;

JZ ADR — переход при условии установки разряда признака нуля Z;

JNZ ADR— переход при условии сброса разряда признака нуля Z;

JP ADR — переход по положительному разряда;

JM ADR — переход по отрицательному результату;

JPE ADR — переход по четному результату;

JPO ADR — переход по нечетному результату;

CALL ADR – вызвать. По этой команде содержимое счетчика команд PC загружается адрес ADR, находящийся во втором и третьем байтах команды, в результате чего совершается переход по этому адресу. Содержимое указателя стека SP после этого уменьшается на 2.

C-CON ADR — обобщенное обозначение группы команд вызова по условию. Она включает в себя следующие команды:

СС ADR СNС ADR СZ ADR СNZ ADR СP ADR СM ADR СPE ADR СPO ADRСмысл условий тот же, что и у группы команд перехода по условию, а действие команд совпадает с действием команды CALL ADR, если соответствующее условие выполнено. Если условие выполнено, то команда игнорируется и содержимое счетчика команд PC увеличивается на 3.

RET – вернуться. Содержимое ячейки памяти, адрес которой задается указателем стека SP, заносится на место младшего байта в счетчик команд PC; содержимое ячейки памяти, адрес которой на 1 больше содержимого указателя стека SP, заносится на место старшего байта в счетчик команд PC. Значение содержимого SP увеличивается на 2.

R-СОN — обобщенное значение группы команд возврата по условию. Она включает в себя следующие команды:

RNZ RС RNC RZ RP RM RPE RPOСмысл условия тот же, что и у групп команд перехода по условию, а действие команд совпадает с действием команды RET, если соответствующее условие не выполнено. Если условие не выполнено, то команда игнорируется и содержимое счетчика команд PC увеличивается на 1.

RST Х — повторный пуск. Содержимое указателя стека SP уменьшается на единицу и старший байт счетчика команд РC заносится по адресу, указанному SР. После этого содержимое SP снова уменьшается на единицу и младший байт счетчика PC заносится по адресу, указанному SP. После этого управление передается команде, адрес которой определяется по следующей таблице.

XАдрес

Дата добавления: 2015-07-20 ; просмотров: 43 | Нарушение авторских прав

Регистры специального назначения

Регистр статуса (STATUS) содержит признаки операции (арифметические флаги) АЛУ, состояние контроллера при сбросе и биты выбора страниц для памяти данных. Назначение бит регистра приведено в табл. 5.3.

Читайте так же:
Ecosys p6021cdn сброс счетчика
Таблица 5.3. Назначение бит регистра STATUS (адрес 03h, 83h).
R/W-0R/W-0R/W-0R-1R-1R/W-xR/W-xR/W-x
IRPRP1RP0/TO/PDZDCC
Бит 7Бит 6Бит 5Бит 4Бит 3Бит 2Бит 1Бит 0
Бит 7: IRP: бит выбора страницы банка данных (используется при косвенной адресации) 0 = банк 0,1 (00h – FFh) 1 = банк 2,3 (100h – 1FFh) Бит IRP не используется в МК подгруппы PIC16F8X
Биты 6-5: RP1:RP0: биты выбора страницы банка данных (используются при прямой адресации) 00 = банк 0 (00h – 7Fh) 01 = банк 1 (80h – FFh) 10 = банк 2 (100h – 17Fh) 11 = банк 3 (180h – 1FFh) В МК подгруппы PIC16F8X используется только бит RP0
Бит 4: /TO: бит срабатывания сторожевого таймера 1 = после включения питания, а также командами CLRWDT и SLEEP 0 = по завершении выдержки сторожевого таймера
Бит 3: /PD: бит снижения потребляемой мощности 1 = после включения питания, а также командой CLRWDT 0 = по команде SLEEP
Бит 2: Z: бит нулевого результата 1 = результат арифметической или логической операции нулевой 0 = результат арифметической или логической операции ненулевой
Бит 1: DC: бит десятичного переноса/заема (для команд ADDWF и ADDLW) 1 = имеет место перенос из 4-го разряда 0 = нет переноса из 4-го разряда
Бит 0: C: бит переноса/заема (для команд ADDWF и ADDLW) 1 = имеет место перенос из самого старшего разряда 0 = нет переноса из самого старшего разряда Примечание: вычитание осуществляется путем прибавления дополнительного кода второго операнда. При выполнении команд сдвига этот бит загружается из младшего или старшего разряда сдвигаемого источника.

Здесь и далее: R — читаемый бит; W — записываемый бит; S — устанавливаемый бит; U — неиспользуемый бит (читается как «0»); -n = 0 или 1 — значение бита после сброса.

Регистр статуса доступен для любой команды так же, как любой другой регистр. Однако если регистр STATUS является регистром назначения для команды, влияющей на биты Z, DC или C, то запись в эти три бита запрещается. Кроме того, биты /TO и /PD устанавливаются аппаратно и не могут быть записаны в статус программно. Это следует иметь в виду при выполнении команды с использованием регистра статуса. Например, команда CLRF STATUS обнулит все биты, кроме битов /TO и /PD, а затем установит бит Z=1. После выполнения этой команды регистр статуса может и не иметь нулевого значения (из-за битов /TO и /PD) STATUS=000uu1uu, где u – неизменяемое состояние. Поэтому рекомендуется для изменения регистра статуса использовать только команды битовой установки BCF, BSF, MOVWF, которые не изменяют остальные биты статуса. Воздействие всех команд на биты статуса рассматривается в разделе «Описание системы команд».

Регистр конфигурации (OPTION) является доступным по чтению и записи регистром, который содержит управляющие биты для конфигурации предварительного делителя (пределителя), внешних прерываний, таймера, а также резисторов «pull-up» на выводах PORTB. Назначение бит регистра приведено в табл. 5.4.

Таблица 5.4. Назначение бит регистра OPTION (адрес 81h).
R/W-1R/W-1R/W-1R/W-1R/W-1R/W-1R/W-1R/W-1
/RBPUINTEDGT0CST0SEPSAPS2PS1PS0
Бит 7Бит 6Бит 5Бит 4Бит 3Бит 2Бит 1Бит 0
Бит 7: /RBPU: бит установки резисторов «pull-up» на выводах PORTB 0 = резисторы «pull-up» подключены 1 = резисторы «pull-up» отключены
Бит 6: INTEDG: бит выбора перехода сигнала прерывания 0 = прерывание по спаду сигнала на выводе RB0/INT 1 = прерывание по фронту сигнала на выводе RB0/INT
Бит 5: T0CS: бит выбора источника сигнала таймера TMR0 0 = внутренний тактовый сигнал (CLKOUT) 1 = переход на выводе RA4/T0CKI
Бит 4: T0SE: бит выбора перехода источника сигнала для TMR0 0 = приращение по фронту сигнала на выводе RA4/T0CKI 1 = приращение по спаду сигнала на выводе RA4/T0CKI
Бит 3: PSA: бит назначения пределителя 0 = пределитель подключен к TMR0 1 = пределитель подключен к сторожевому таймеру WDT
Биты 2-0: PS2:PS0: биты выбора коэффициента деления пределителя

Значения битСкорость TMR0Скорость WDT
1:21:1
1:41:2
1:81:4
1:161:8
1:321:16
1:641:32
1:1281:64
1:2561:128

В том случае, когда пределитель обслуживает сторожевой таймер WDT, таймеру TMR0 назначается коэффициент предварительного деления 1:1.

Регистр условий прерывания (INTCON) является доступным по чтению и записи регистром, который содержит биты доступа для всех источников прерываний. Назначение бит регистра приведено в табл. 5.5.

Таблица 5.5. Назначение бит регистра INTCON (адреса 0Bh, 8Bh).
R/W-0R/W-0R/W-0R/W-0R/W-0R/W-0R/W-0R/W-x
GIEEEIET0IEINTERBIET0IFINTFRBIF
Бит 7Бит 6Бит 5Бит 4Бит 3Бит 2Бит 1Бит 0
Бит 7: GIE: бит разрешения всех прерываний 0 = запрещены все прерывания 1 = разрешены все незамаскированные прерывания
Бит 6: EEIE: бит разрешения прерывания записи в EEPROM 0 = запрещены прерывания записи в EEPROM 1 = разрешены прерывания записи в EEPROM
Бит 5: T0IE: бит разрешения прерывания по переполнению TMR0 0 = запрещены прерывания от TMR0 1 = разрешены прерывания от TMR0
Бит 4: INTE: бит разрешения прерываний по входу RB0/INT 0 = запрещены прерывания по входу RB0/INT 1 = разрешены прерывания по входу RB0/INT
Бит 3: RBIE: бит разрешения прерываний по изменению PORTB 0 = запрещены прерывания по изменению PORTB 1 = разрешены прерывания по изменению PORTB
Бит 2: T0IF: бит запроса прерывания по переполнению TMR0 0 = прерывание по переполнению TMR0 отсутствует 1 = прерывание по переполнению TMR0 имеет место
Бит 1: INTF: бит запроса прерывания по входу RB0/INT 0 = прерывание по входу RB0/INT отсутствует 1 = прерывание по входу RB0/INT имеет место
Бит 0: RBTF: бит запроса прерывания по изменению PORTB 0 = ни на одном из входов RB7:RB4 состояние не изменилось 1 = хотя бы на одном из входов RB7:RB4 изменилось состояние

Бит разрешения всех прерываний GIE сбрасывается автоматически при следующих обстоятельствах:

  • по включению питания;
  • по внешнему сигналу /MCLR при нормальной работе;
  • по внешнему сигналу /MCLR в режиме SLEEP;
  • по окончанию задержки таймера WDT при нормальной работе;
  • по окончанию задержки таймера WDT в режиме SLEEP.

Прерывание INT может вывести процессор из режима SLEEP, если перед входом в этот режим бит INTE был установлен в единицу. Состояние бита GIE также определяет: будет ли процессор переходить на подпрограмму прерывания после выхода из режима SLEEP.

Сброс битов – запросов прерываний – должен осуществляться соответствующей программой обработки.

Счетчик команд

Счетчик команд PCL и PCLATH имеет разрядность 13 бит. Младший байт счетчика (PCL) доступен для чтения и записи и находится в регистре 02h. Старший байт счетчика команд не может быть напрямую записан или считан и берется из регистра PCLATH (PC latch high), адрес которого 0Ah. Содержимое PCLATH передается в старший байт счетчика команд, когда он загружается новым значением.

В зависимости от того, загружается ли в счетчик команд новое значение во время выполнения команд CALL, GOTO, или в младший байт счетчика команд (PCL) производится запись, – старшие биты счетчика команд загружаются из PCLATH разными способами, как показано на рис. 5.6.


Рис. 5.6. Загрузка старших бит счетчика команд.

Команды CALL и GOTO оперируют 11-разрядным адресным диапазоном, достаточным для смещения в пределах страницы программной памяти объемом 2К слов. Для МК подгруппы PIC16F8X этого хватает. С целью обеспечения возможности расширения памяти команд для будущих моделей МК предусмотрена загрузка двух старших бит счетчика команд из регистра PCLATH . При использовании команд CALL и GOTO пользователь должен убедиться в том, что эти страничные биты запрограммированы для выхода на нужную страницу. При выполнении команды CALL или выполнении прерывания весь 13-битный счетчик команд помещается в стек, поэтому для возвращения из подпрограммы не нужны манипуляции с разрядами PCLATH .

Микроконтроллеры подгруппы PIC16F8X игнорируют значения бит PCLATH , которые используются для обращения к страницам 1, 2 и 3 программной памяти. Однако применять биты PCLATH в качестве ячеек памяти общего назначения не рекомендуется, так как это может повлиять на совместимость с будущими поколениями изделий.

Возможность выполнять арифметические операции непосредственно над счетчиком команд позволяет очень быстро и эффективно осуществлять табличные преобразования в PIC-контроллерах.

Микроконтроллеры подгруппы PIC16F8X имеют восьмиуровневый аппаратный стек шириной 13 бит (см. рис. 5.4). Область стека не принадлежит ни к программной области, ни к области данных, а указатель стека пользователю недоступен. Текущее значение счетчика команд посылается в стек, когда выполняется команда CALL или производится обработка прерывания. При выполнении процедуры возврата из подпрограммы (команды RETLW, RETFIE или RETURN) содержимое счетчика команд восстанавливается из стека. Регистр PCLATH при операциях со стеком не изменяется.

Стек работает как циклический буфер. Следовательно, после того как стек был загружен 8 раз, девятая загрузка перепишет значение первой. Десятая загрузка перепишет вторую и т.д. Если стек был выгружен 9 раз, счетчик команд становится таким же, как после первой выгрузки.

Признаков положения стека в контроллере не предусмотрено, поэтому пользователь должен самостоятельно следить за уровнем вложения подпрограмм.

Формат данных и структура команд языка ассемблер

Тема 2.5 Основы программирования процессора

С увеличением длины программы все труднее становится запомнить коды различных операций. Некоторую помощь в этом отношении оказывают мнемонические обозначения.

Язык символического кодирования команд называется ассемблером.

Язык ассемблер – это язык, в котором каждое высказывание соответствует ровно одной машинной команде.

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

Язык ассемблер имеет несколько особенностей, отличающих его от языков высокого уровня:

1. Это взаимно однозначное соответствие между высказываниями языка ассемблера и машинными командами.

2. Программист на языке ассемблера имеет доступ ко всем объектам и командам, присутствующим на целевой машине.

Представление об основах программирования на машинно-ориентированных языках полезно для:

— лучшего понимания архитектуры ПК и более грамотного использования компьютеров;

— для разработки более рациональных структур алгоритмов программ решения прикладных задач;

— возможности просмотра и корректировки исполняемых программ с расширением .exe и .com, компилированных с любых языков высокого уровня, в случае утраты исходных программ (вызвав указанные программы в отладчик программы DEBUG и декомпилировав их отображение на языке ассемблера);

— составления программ решения наиболее ответственных задач (программа, составленная на машинно-ориентированном языке, обычно эффективнее – короче и быстрее процентов на 30-60 программ, полученных в результате трансляции с языков высокого уровня)

— для реализации процедур, включаемых в основную программу в виде отдельных фрагментов в том случае, если они не могут быть реализованы ни на используемом языке высокого уровня, ни с использованием служебных процедур ОС.

Программа на языке ассемблера может работать только на ЭВМ одного семейства, а программа, написанная на языке высокого уровня, потенциально может работать на разных машинах.

Алфавит языка ассемблера составляют символы ASCII.

Числа только целые. Различают:

— двоичные числа, заканчиваются буквой В;

— десятичные числа, заканчиваются буквой D;

— шестнадцатеричные числа, заканчиваются буквой Н.

Оперативная память, регистры, представление данных

Для определённой серии МП используется индивидуальный язык составления программ – язык ассемблер.

Язык ассемблер занимает промежуточное положение между машинными кодами и языками высокого уровня. Программировать на этом языке проще. Программа на языке ассемблер более рационально использует возможности конкретной машины (точнее МП), чем программа на языке высокого уровня (который более прост для программиста, чем ассемблер). Основные принципы программирования на машинно-ориентированных языках рассмотрим на примере языка ассемблер для МП КР580ВМ80. Для программирования на языке используется общая методика. Конкретные же технические приемы записи программ связаны с особенностями архитектуры и системы команд целевого МП.

Программная модель микропроцессорной системы на основе МП КР580ВМ80

Программная модель МПС в соответствии с рисунком 1

МП Порты Память

BC05H07FFУправляющая программа (монитор)ПЗУ
DE06H
HL07HДемонстрационные программы
АFL0AFFОбласть адресов для записи исследуемых программОЗУ
SP
PC0B00 0BB0Для записи данных исследуемых программ Cтек
SZACPC

FL

Рисунок 1

С точки зрения программиста МП КР580ВМ80 имеет следующие программно-доступные регистры.

А– 8-битовый регистр аккумулятор. Является главным регистром МП. Любая операция, выполняемая в АЛУ, предполагает размещение одного из операндов, подлежащих обработке, в аккумуляторе. Результат операции в АЛУ тоже обычно хранится в А.

B, C, D, E, H, L – 8-битовые регистры общего назначения (РОН). Внутренняя память МП. Предназначены для хранения обрабатываемой информации, а также результатов операции. При обработке 16-разрядных слов из регистров образуют пары BC, DE, HL, причем сдвоенный регистр называется первой буквой – B, D, H. В регистровой паре старшим является первый регистр. Особым свойством обладают регистры H, L, используемые как для хранения данных, так и для хранения 16-разрядных адресов ячеек ОЗУ.

FL– регистр флагов (регистр признаков) 8-битовый регистр, в котором сохраняются пять признаков результата выполнения арифметических и логических операций в МП. Формат FL в соответствии с рисунком

Разряд С ( CY — carry) — перенос, устанавливается в 1, если был перенос из старшего разряда байта при выполнении арифметических операций.

Разряд Р (parity) – четность, устанавливается в 1, если число единиц в разрядах результата четно.

Разряд АС – дополнительный перенос, предназначен для хранения значения переноса из младшей тетрады результата.

Разряд Z (нуль) – устанавливается в 1, если результат операции равен 0.

Разряд S (знак) – устанавливается в 1, если результат отрицательный, и в 0, если результат положительный.

SP–- указатель стека, 16-разрядный регистр, предназначен для хранения адреса ячейки памяти, куда был записан последний введенный в стек байт.

РС – программный счетчик (счетчик команд), 16-разрядный регистр, предназначен для хранения адреса следующей выполняемой команды. Содержимое счетчика команд автоматически увеличивается на 1 сразу же после выборки очередного байта команды.

В начальной области памяти адреса 0000Н – 07FF располагается управляющая программа и демонстрационные программы. Это область ПЗУ.

0800 – 0АFF — область адресов для записи исследуемых программ. (ОЗУ).

0В00 – 0ВВ0 — область адресов для записи данных. (ОЗУ).

0ВВ0 – начальный адрес стека. (ОЗУ).

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

Формат данных и структура команд языка ассемблер

Память МП КР580ВМ80 представляет собой массив 8-ьитных слов, называемых байтами, Каждый байт имеет свой 16-разрядный адрес, определяющий его положение в последовательности ячеек памяти. МП может адресовать 65536 байт памяти, которая может содержать как в ПЗУ, так и в ОЗУ.

Формат данных

Данные хранятся в памяти в виде 8-битных слов:

D7 D6 D5 D4 D3 D2 D1 D0

Младшим битом является бит 0, старшим – бит 7.

Команда характеризуется форматом, т. е. числом отведенных для нее разрядов, которые разделены побайтно на определенные функциональные поля.

Формат команд

Команды МП КР580ВМ80 имеют одно, двух или трехбайтный формат. Многобайтные команды должны быть размещены в соседних ЯП. Формат команды зависит от особенностей выполняемой операции.

Первый байт команды содержит код операции, записанный в мнемоническом виде.

Он определяет формат команды и те действия, которые должны быть выполнены МП над данными в процессе ее выполнения, и способ адресации, а также может содержать информацию о нахождении данных.

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

Формат однобайтовой команды в соответствии с рисунком 2

Код операции

Рисунок 2

Формат двухбайтовой команды в соответствии с рисунком 3

Код операции
Операнд (адрес)

Рисунок 3

Формат трехбайтовой команды в соответствии с рисунком 4

Код операции
Адрес (операнд). Младший байт адреса
Адрес (операнд). Старший байт адреса

Рисунок 4

В командах на языке ассемблера код операции имеет сокращённую форму записи английских слов – мнемоническое обозначение. Мнемоника (от греческого mnemonic – искусство запоминания) позволяет легче запомнить команды по их функциональному назначению.

Перед исполнением исходная программа переводится с помощью программы трансляции, называемой ассемблером, на язык кодовых комбинаций – машинный язык, в таком виде размещается в памяти МП и далее используется при выполнении команды.

Методы адресации

Все коды операндов (входные и выходные) должны где-то располагаться. Они могут находиться во внутренних регистрах МП (наиболее удобный и быстрый вариант). Они могут располагаться в системной памяти (самый распространенный вариант). Наконец, они могут находиться в устройствах ввода-вывода (наиболее редкий случай). Определение места положения операндов производится кодом команды. Существуют разные методы, с помощью которых код команды может определить, откуда брать входной операнд и куда помещать выходной операнд. Эти методы называются методами адресации.

Для МП КР580ВМ80 существуют следующие методы адресации:

Непосредственная адресация предполагает, что операнд (входной) находится в памяти непосредственно за кодом команды. Операнд обычно представляет собой константу, которую надо куда-то переслать, к чему-то прибавить и т. д. данные содержатся во втором или во втором и третьем байтах команды, причем младший байт данных находится во втором байте команды, а старший – в третьем байте команды.

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

Регистроваяадресация предполагает, что операнд (входной или выходной) находится во внутреннем регистре МП. Используется в однобайтовых командах

Косвенная(неявная)адресация предполагает, что во внутреннем регистре МП находится не сам операнд, а его адрес в памяти.

Стековая адресация предполагает, что команда не содержит адрес. Адресация к ячейкам памяти по содержимому 16-разрядного регистра SP (указателя стека).

Система команд

Система команд МП – это полный перечень элементарных действий, которые способен производить МП. Управляемый этими командами МП выполняет простые действия, такие как элементарные арифметические и логические операции, пересылку данных, сравнение двух величин и др. Число команд МП КР580ВМ80 — 78 (с учетом модификаций 244).

Различают следующие группы команд:

— команды ввода-вывода, управления и работы со стеком.

Символы и сокращения, применяемые при описании команд и составлении программ

голоса
Рейтинг статьи
Ссылка на основную публикацию
Adblock
detector