Главная | Обратная связь | Поможем написать вашу работу!
МегаЛекции

Dsplnk.exe lab3.cmd




3.2.3 Запустите имитатор процессора, набрав команду sim5x.exe

При этом автоматически загрузится программа лабораторной работы lab3.out, файл с макрокомандами alias.bat и текстовый файл lab3.txt с указанием некоторых команд, используемых в лабораторной работе.

3.2.4 Выполните работу, следуя указаниям, приведенным ниже.

Пункты указаний выделяются метками, одинаковыми с метками разделов программы, к которым данные пункты относятся. В тексте указаний частично повторяются команды программы. Изучение проводится на примере вычислений следующих выражений:

 

Y = (I*I) + (IL*IL) + (ILL*ILL) - для целых чисел,

X = (A*B) + (C*D) + (E*F) – для дробных чисел.

 

Выражения вычисляются путем последовательного накопления входящих в них произведений. Перед переходом к выполнению работы необходимо выполнить вычисление точных значений выражений. Используемые значения коэффициентов приведены ниже в таблице TABLE. При использовании дробных чисел их значения нормируются к единице, которой соответствует величина 32768.

3.2.5 Размещение переменных и констант в памяти.

.bss A,13

B.set A+1

C.set B+1

D.set C+1

E.set D+1

F.set E+1

X.set F+1

I.set X+2

IL.set I+1

ILL.set IL+1

Y.set ILL+1

 

3.2.6 Таблица значений констант, размещенных в памяти программ

* 32768 соответствует единице

 

TABLE.word 32768*9/10, 32768*8/10, 32768*7/10; A=0.9, B=0.8, C=0.7

.word 32768*6/10, 32768*-1, 32768*4/10; D=0.6, E=-1.0, F=0.4

.word 32768*0,0,5,100; X=0, XA=0, I=5, IL=100

.word 1000,0,0; ILL=1000, Y=0, Y+1=0

 

3.2.7 Перепись констант из памяти программ в память данных

.sect "Vectors"

RESET B M1

.text

M1:

* Перепись констант из памяти программ в память данных в зарезервированное место

LAR AR1,#A

MAR *,AR1

LACC #TABLE

RPT #12

TBLR *+

 

Наберите команду mem 0x200. Выполните команду Go INT. При этом должна быть выполнена часть программы до метки INT и в памяти данных появятся переписанные константы из памяти программ.

3.2.8 Работа с целыми числами в младших разрядах аккумулятора. Вычисление выражения Y = (I*I) + (IL*IL) + (ILL*ILL).

INT:

LDP #A;указатель страницы памяти на размещение A

ZAC; (ACC)=0

SACL Y+1; сохранение младших разрядов ACC - ACCL

LT I

MPY I; (P)=I*I

LTA IL; (ACC)=I*I

SACL Y+1; сохранение ACCL

MPY IL; (P)=IL*IL

LTA ILL; (ACC)=I*I+IL*IL

SACL Y+1; сохранение ACCL

MPY ILL; ILL*ILL

APAC; (ACC)=(I*I)+(IL*IL)+(ILL*ILL)

SACL Y+1; сохранение младшего слова ACCL

SACH Y; сохранение старшего слова ACCH

 

Выполните фрагмент программы до метки FLOAT1 по шагам.

Сравните результаты вычисления всех частичных сумм и последнего результата с точными значениями, полученными при ручном расчете. Обратите внимание, что ошибка появляется при переполнении младшего слова ACC после прибавления третьего произведения.

3.2.8 Работа с дробными числами. Вычисление выражения

X = (A*B) + (C*D) + (E*F)

1) Влияние опции режима переполнения OVM

а) Отсутствие сдвига результата вычисления при передаче его из ACC в ЗУ

 

FLOAT1:

LDP #A

SPM 0; PM = 0

CLRC OVM; OVM = 0

CALL Q31; вызов п/программы вычисления X

FLOAT2:

SETC OVM; PM = 0, OVM = 1

CALL Q31; вызов п/программы вычисления X

* Подпрограмма вычисления X без свига на 1 разряд при передаче из ACC в ЗУ

Q31:

ZAC

SACH X

LT A

MPY B

LTA C

SACH X

MPY D

LTA E

SACH X

MPY F

APAC

SACH X

RET

.end

 

б) наличие сдвига результата вычисления при передаче его из ACC в ЗУ

FLOAT3:

LDP #A

SPM 0; PM = 0

CLRC OVM; OVM 0

CALL Q30; вызов п/программы вычисления X

FLOAT4:

SETC OVM; PM = 0, OVM = 1

CALL Q30; вызов п/программы вычисления X

* Подпрограмма вычисления X со свигом на 1 разряд при передаче из ACC в ЗУ

 

Q30:

ZAC; (ACC)=0

SACH X+1,1; сохранение старшего слова ACC со сдвигом на 1 разряд

LT A; (T)=A

MPY B; (P)=A*B

LTA C; (T)=C (ACC)=A*B

SACH X,1; сохранение старшего слова ACC со сдвигом на 1 разряд

MPY D; (P)=C*D

LTA E; (T)=E (ACC)=A*B+C*D

SACH X,1; сохранение старшего слова ACC со сдвигом на 1 разряд

MPY F; (P)=E*F

APAC; (ACC)=A*B+C*D+E*F

SACH X,1; сохранение старшего слова ACC со сдвигом на 1 разряд

RET

 

2) влияние опции РМ - сдвига результата умножения при передаче из регистра P в АЛУ при отсутствии сдвига общего результата при передаче из ACC в ЗУ

FLOAT5:

SPM 1; PM = 1

CLRC OVM; OVM = 0

CALL Q31; вызов п/программы вычисления X

 

FLOAT6:

SETC OVM; OVM = 1

CALL Q31; вызов п/программы вычисления X

 

Выполнить по шагам фрагменты программ до метки SXM. Результаты выполнения команд процессора (результаты вычислений) занесите в таблицу. В неё заносятся значения всех частичных сумм и последнего результата в зависимости от опций и сдвига; сравните результаты с точными расчетами. Значения частичных сумм и последнего результата в десятичном виде можно просмотреть в окне Watch.

3) влияние опции режима расширения знака SXM на выполнение операций в младшем слове ACC. При SXM=0 числа считаются беззнаковыми, при SXM=1 числа считаются знаковыми в дополнительном коде.

 

* SXM=0

CLRC SXM

ZAC

SUB #5; (ACC)=0-5

ZAC

SUB #(-5); (ACC)=0-(-5)

LACC #(-5); загрузка в ACC числа

ADD #6; (ACC)=-5+6

LACC #(-5); загрузка в ACC числа

SUB #(-6); (ACC)=-5-(-6)

* SXM=1

SETC SXM

ZAC

SUB #5; (ACC)=0-5

ZAC

SUB #(-5); (ACC)=0-(-5)

* LACK #(-5); загрузка в ACC числа

LACC #(-5)

 

ADD #6; (ACC)=-5+(6)

* LACK #(-5); загрузка в ACC числа

LACC #(-5)

SUB #(-6); (ACC)=-5-(-6)

HALT:

NOP

 

Т а б л и ц а 3.1

  PM   OVM Сдвиг при записи в память Промежуточные и последние результаты Примечания
Точные ACC Память
      0.72 1.14 0.74      
             
             
             
             
             

Т а б л и ц а 3.2

SXM Операция Результат
     
     

Содержание отчета

3.3.1 Текст программы с подробными комментариями.

3.3.2 Таблицы 3.1.и 3.2., содержащие состояния регистров PM, SXM, OVM и результаты работы программы.

3.3.3 Выводы по результатам сравнения точных значений, полученных при ручном расчете и значений, полученных в результате выполнения программы.

 

3.4 Контрольные вопросы

3.4.1 Поясните последовательность перевода двоичного положительного числа в двоичное отрицательное число.

3.4.2 Поясните запись “короткого” числа в “длинный” регистр.

3.4.3 Переведите в двоичный код следующие числа: 3; -3; 30; -30; 100; 64; -65; -87.

3.4.4 Почему после выполнения умножения мы сохраняем старшее слово аккумулятора?

3.4.5 Зачем при сохранении старшего слова аккумулятора мы применяем сдвиг влево на 1 разряд?

3.4.6 Что означает “формат Q15”?

3.4.7 Чем определяется точность представления целых двоичных чисел?

3.4.8 Чем определяется точность представления дробных двоичных чисел?

3.4.9 Что произойдет, если к 1 в формате Q15 прибавить 1?

3.4.10 Что произойдет, если из 0 в формате Q15 вычесть 1?

 

.

Поделиться:





Читайте также:





Воспользуйтесь поиском по сайту:



©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...