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
Т а б л и ц а 3.2
Содержание отчета 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 Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...
|