Лабораторная работа №2 / LAB2_4
.DOC
Государственный комитет Российской Федерации
по высшему образованию
Санкт-Петербургский государственный электротехнический университет
Кафедра ИИСТ
Лабораторная работа №2
Студенты: Виноградов К. ãð. 6561
Евдокимов С.
Преподаватель: Королев П.Г.
Санкт-Петербург
Задание.
-
Записать во внешней памяти число равное номеру группы минус номер бригады (номер группы 6561, номер бригады 4)
-
Выполнить следующие операции:
-
получить обратный код от числа
-
получить дополнительный код от числа
-
сложить число с обратным кодом (логически и арифметически)
-
сложить число с дополнительным кодом
-
умножить число само на себя (возведение в степень)
-
разделить число на номер бригады
-
Листинг программы:
MCS-96 MACRO ASSEMBLER SECOND_LAB
03/20/10 21:40:55 PAGE 1
DOS D.40 (046-N) MCS-96 MACRO ASSEMBLER, V1.3
SOURCE FILE: lab_2_4.a96
OBJECT FILE: lab_2_4.obj
CONTROLS SPECIFIED IN INVOCATION COMMAND: <none>
LOC OBJECT STMT SOURCE STATEMENT
1 ;****************************************************************************
2 Second_lab MODULE main
3 ;Evdokimov_Vinogradov:
4 ;функция:
5 ;
6 $nolist ; подавление листинга
72 ;****************************************************************************
73 ; внутренние параметры
74 ;****************************************************************************
0030 75 rseg at (30h) ; сегмент регистров
0030 76 data_word1: dsw 1 ; запись номера группы (6561)
0032 77 data_word2: dsw 1 ; запись номера бригады (4)
0034 78 data_word3: dsw 1 ; разность (6557)
0036 79 data_word4: dsw 1 ; обратный код от 6557
0038 80 data_word5: dsw 1 ; дополнительный код от 6557
003A 81 data_word6: dsw 1 ; сумма обратный код от 6557 + разность
(6557)
003C 82 data_word7: dsw 1 ; сумма дополнительный код от 6557+
разность (6557)
003E 83 data_word8: dsw 1 ; умножение числа само на себя
(6557*6557)
0040 84 data_word9: dsw 1 ; деление числа на номер бригады
(6557/4)
0042 85 data_word10: dsw 1 ; значение логического сложения
86
87 ;****************************************************************************
88 ;блок внешних связей
89 ;****************************************************************************
90 extrn www
91 ;****************************************************************************
92 ;ввод:
93 ;вывод:
94 ;****************************************************************************
8100 95 cseg at 8100h ; сегмент кода программы
8100 A1A11930 96 ld data_word1,#6561 ; ввод числа 6561
8104 A1040032 97 ld data_word2,#4 ; ввод номера бригады
(4)
8108 48323034 98 sub data_word3,data_word1,data_word2 ; вычитание
(6561-4)
810C A03436 99 ld data_word4,data_word3 ;
810F 0236 100 not data_word4 ; обратный код
8111 A03438 101 ld data_word5,data_word3 ;
8114 0338 102 neg data_word5 ; дополнительный код
8116 4434363A 103 add data_word6,data_word4,data_word3 ;
811A A03442 104 ld data_word10,data_word3 ; ??
811D 803442 105 or data_word10,data_word3 ; логическое
сложение ??
8120 4434383C 106 add data_word7,data_word5,data_word3 ;
8124 A0343E 107 ld data_word8,data_word3
8127 FE7C3E3E 108 mulb data_word8,data_word8 ; умножение
812B A03440 109 ld data_word9,data_word3
812E FE8C3240 110 div data_word9,data_word2 ; деление
8132 F0 111 ret ;
112 ;
113 ;*****************************************************************************
8133 114 END
MCS-96 MACRO ASSEMBLER SECOND_LAB
03/20/10 21:40:55 PAGE 2
SYMBOL TABLE LISTING
--------------------
N A M E VALUE ATTRIBUTES
AD_COMMAND. . . . . . . . . . . 0002H NULL ABS BYTE
AD_RESULT . . . . . . . . . . . 0002H NULL ABS BYTE
AD_RESULT_HI. . . . . . . . . . 0003H NULL ABS BYTE
AD_RESULT_LO. . . . . . . . . . 0002H NULL ABS BYTE
AD_TIME . . . . . . . . . . . . 0003H NULL ABS BYTE
BAUD_RATE . . . . . . . . . . . 000EH NULL ABS BYTE
DATA_WORD1. . . . . . . . . . . 0030H REG ABS WORD
DATA_WORD10 . . . . . . . . . . 0042H REG ABS WORD
DATA_WORD2. . . . . . . . . . . 0032H REG ABS WORD
DATA_WORD3. . . . . . . . . . . 0034H REG ABS WORD
DATA_WORD4. . . . . . . . . . . 0036H REG ABS WORD
DATA_WORD5. . . . . . . . . . . 0038H REG ABS WORD
DATA_WORD6. . . . . . . . . . . 003AH REG ABS WORD
DATA_WORD7. . . . . . . . . . . 003CH REG ABS WORD
DATA_WORD8. . . . . . . . . . . 003EH REG ABS WORD
DATA_WORD9. . . . . . . . . . . 0040H REG ABS WORD
HSI_MODE. . . . . . . . . . . . 0003H NULL ABS BYTE
HSI_STATUS. . . . . . . . . . . 0006H NULL ABS BYTE
HSI_TIME. . . . . . . . . . . . 0004H NULL ABS WORD
HSO_COMMAND . . . . . . . . . . 0006H NULL ABS BYTE
HSO_TIME. . . . . . . . . . . . 0004H NULL ABS WORD
IMASK1. . . . . . . . . . . . . 0013H NULL ABS BYTE
INT_MASK. . . . . . . . . . . . 0008H NULL ABS BYTE
INT_MASK1 . . . . . . . . . . . 0013H NULL ABS BYTE
INT_PEND. . . . . . . . . . . . 0009H NULL ABS BYTE
INT_PEND1 . . . . . . . . . . . 0012H NULL ABS BYTE
INT_PENDING . . . . . . . . . . 0009H NULL ABS BYTE
IOC0. . . . . . . . . . . . . . 0015H NULL ABS BYTE
IOC1. . . . . . . . . . . . . . 0016H NULL ABS BYTE
IOC2. . . . . . . . . . . . . . 000BH NULL ABS BYTE
IOC3. . . . . . . . . . . . . . 000CH NULL ABS BYTE
IOPORT0 . . . . . . . . . . . . 000EH NULL ABS BYTE
IOPORT1 . . . . . . . . . . . . 000FH NULL ABS BYTE
IOPORT2 . . . . . . . . . . . . 0010H NULL ABS BYTE
IOS0. . . . . . . . . . . . . . 0015H NULL ABS BYTE
IOS1. . . . . . . . . . . . . . 0016H NULL ABS BYTE
IOS2. . . . . . . . . . . . . . 0017H NULL ABS BYTE
IPEND1. . . . . . . . . . . . . 0012H NULL ABS BYTE
PTSSEL. . . . . . . . . . . . . 0004H NULL ABS WORD
PTSSRV. . . . . . . . . . . . . 0006H NULL ABS WORD
PWM_CONTROL . . . . . . . . . . 0017H NULL ABS BYTE
PWM1_CONTROL. . . . . . . . . . 0016H NULL ABS BYTE
PWM2_CONTROL. . . . . . . . . . 0017H NULL ABS BYTE
R0. . . . . . . . . . . . . . . 0000H NULL ABS WORD
SBUF. . . . . . . . . . . . . . 0007H NULL ABS BYTE
SECOND_LAB. . . . . . . . . . . ----- MODULE MAIN STACKSIZE(0)
SP. . . . . . . . . . . . . . . 0018H NULL ABS WORD
SP_CON. . . . . . . . . . . . . 0011H NULL ABS BYTE
SP_STAT . . . . . . . . . . . . 0011H NULL ABS BYTE
T2CAPTURE . . . . . . . . . . . 000CH NULL ABS WORD
T2CONTROL . . . . . . . . . . . 000CH NULL ABS BYTE
TIMER1. . . . . . . . . . . . . 000AH NULL ABS WORD
TIMER2. . . . . . . . . . . . . 000CH NULL ABS WORD
MCS-96 MACRO ASSEMBLER SECOND_LAB
03/20/10 21:40:55 PAGE 3
N A M E VALUE ATTRIBUTES
WATCHDOG. . . . . . . . . . . . 000AH NULL ABS BYTE
WSR . . . . . . . . . . . . . . 0014H NULL ABS BYTE
WWW . . . . . . . . . . . . . . ----- REG EXTERNAL
ASSEMBLY COMPLETED, NO ERROR(S) FOUND.
Отладчик:
|
|
|
Флаги |
|||
перем. |
код |
значение |
Z |
N |
V |
C |
|
|
|
1 |
0 |
0 |
0 |
0030 |
19A1 |
6561 |
1 |
0 |
0 |
0 |
0032 |
0004 |
4 |
1 |
0 |
0 |
0 |
0034 |
199D |
6557 |
0 |
0 |
0 |
1 |
0036 |
199D |
6557 |
0 |
0 |
0 |
1 |
0036 |
E662 |
58978 |
0 |
1 |
0 |
0 |
0038 |
199D |
6557 |
0 |
1 |
0 |
0 |
0038 |
E663 |
58979 |
0 |
1 |
0 |
0 |
003A |
FFFF |
65535 |
0 |
1 |
0 |
0 |
003C |
0000 |
0 |
1 |
0 |
0 |
1 |
003E |
199D |
6557 |
1 |
0 |
0 |
1 |
003E |
2649 |
9801 |
1 |
0 |
0 |
1 |
0040 |
199D |
6557 |
1 |
0 |
0 |
1 |
0042 |
199D |
6557 |
1 |
0 |
0 |
1 |
0040 |
E66A |
58986 |
1 |
0 |
1 |
1 |
0042 |
7FF5 |
32757 |
1 |
0 |
1 |
1 |
0042 |
7FF5 |
32757 |
0 |
0 |
0 |
0 |
Вывод.
В данной лабораторной работе мы познакомились с командами арифметических (вычитание, сложение, умножение, деление) и логических операций (сложение). Произвели отладку программы, проверили ее работу в пошаговом режиме. Проверка полученных кодов в программе соответствует значениям, выполненных без использования программы.
Посмотрели изменения флагов (Z, N, V, C).
Z - признак нулевого результата, т.е. если результат выполнения равен 0, то значение флага равен 1, во всех остальных случаях флаг равен 0.
N - признак отрицательного результата повторяет значение старшего бита результата операций.
V - флаг переполнения устанавливается, когда операция генерирует результат находящийся за пределами диапазона операнда назначения.
C - бит переноса - совпадает со значением переноса из старшего разряда при выполнении операции сложения, противоположен при операции вычитания, а также совпадает со значением бита кода, вытолкнутого за пределы разрядной сетки при сдвиге разрядной сетки влево или вправо.
Распределение памяти:
Имя переменной |
Формат |
Назначение |
||
Data_word1 aдрес: 0030h |
Слово |
Хранится число, равное № группы (6561) |
||
Data_word2 aдрес: 0032h |
Слово |
Хранится число, равное номера бригады. |
||
Data_word3 aдрес: 0034h |
Слово |
Хранится разность № группы (6561) - номера бригады. |
||
Data_word4 aдрес: 0036h |
Слово |
Хранится числа с обратным кодом. |
||
Data_word5 aдрес: 0038h |
Слово |
Хранится дополнительный код числа. |
||
Data_word6 aдрес: 003Ah |
Слово |
Хранится сумма числа с обратным кодом.
|
||
Data_word7 aдрес: 003Ch |
Слово |
Хранится сумма числа с дополнительным кодом. |
||
Data_word8 aдрес: 003Eh |
слово |
Хранится значение умножения самого на себя |
||
Data_word9 aдрес: 0040h |
слово |
Хранится значение деление числа на номер бригады |
||
Data_word10 aдрес: 0042h |
Слово |
Хранится значение логического сложения. |
||
|
|
|