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

2. Порядок роботи:

  1. Розробити алгоритм і написати програму додавання довільних (додатних і від’ємних) двійкових чисел із рухомою комою у модифікованому доповнювальному коді в інструкціях симулятора DeComp. Числа подаються у форматі:

Знак порядку

Знак мантиси

Порядок

Мантиса

2 розряди

2 розряди

4 розряди

8 розрядів

У алгоритмі передбачити аналіз отриманого результату на:

  • переповнення розрядної сітки (порушення нормалізації вліво);

  • наявність порушення нормалізації вправо;

  • від'ємний результат

Передбачити відповідні заходи з корекції результату

Виконання:

Інформація про вхідні дані:

Адреса комірки

Дані в двійковому коді

Позначення змінної в алгоритмі

Інформація про вхідні дані та призначення комірок, що використовуються.

300

1100 0101 1101 0000

А

A перший доданок. А=-0,1101101(У декомпі А=1100 0101, 1101 0000) знаходиться у 300-й комірці

301

0000 0011 1100 0000

В

Число В – другий доданок. В=0,1100011 (У деком пі В=0000 0011, 1100 0000) знаходиться у 301-й комірці

302

1100 0000 0000 0000

М1

Число М1 – маска. Слугує для визначення знаку мантис А та В.

303

0011 0000 0000 0000

М2

Число М2 – маска. Слугує для визначення знаку порядків А та В.

304

1100 0000 1111 1111

М3

Число М3 – маска. Слугує для відокремлення мантис А та В зі знаком.

305

0011 1111 0000 0000

М4

Число М4 – маска. Слугує для відокремлення порядку А і В зі знаком

306

0000 1111 0000 0000

М5

Число М5 – маска. Слугує для відокремлення порядку без знаку

307

0000 0001 0000 0000

М6

Число М6 – маска. Допомагає переводити у модифікований доповняльний код порядок

308

0000 0000 0000 0001

М7

Число М7 – маска. Допомагає переводити у модифікований доповняльний код мантису

309

0000 0000 1000 0000

М8

Число М7 – маска. Перевіряє чи є порушення нормалізаці вліво

310

0000 0000 0000 0000

REZ

Результат додавання А і В

311

0000 0000 0000 0000

MA

Мантиса А

312

0000 0000 0000 0000

MB

Мантиса В

313

0000 0000 0000 0000

PA

Порядок А

314

0000 0000 0000 0000

PB

Порядок В

315

0000 0000 0000 0000

PAM

Порядок А у доп.мод коді

316

0000 0000 0000 0000

PBM

Порядок В у доп.мод коді

317

0000 0000 0000 0000

SPP

Різниця порядків

318

0000 0000 0000 0000

M

Проміжне значення мантиси

319

0000 0000 0000 0000

MM

Остаточне Значення мантии

320

0000 0000 0000 0000

P

Остаточне значення порядку REZ

Код програми:

дреса

комірки пам’яті

Код інструкції

(двійковий)

Мнемонічний формат

інструкції

Коментар

0

0000 0001 0010 1100

LOAD

300

Виділення мантиси А зі знаком (МА)

1

0100 0001 0011 0000

AND

304

2

0001 0001 0011 0111

STORE

311

3

0000 0001 0010 1101

LOAD

301

Виділення мантиси В зі знаком (МВ)

4

0100 0001 0011 0000

AND

304

5

0001 0001 0011 1000

STORE

312

6

0000 0001 0010 1100

LOAD

300

Виділення порядку А зі знаком (РА)

7

0100 0001 0011 0001

AND

305

8

0001 0001 0011 1001

STORE

313

9

0000 0001 0010 1101

LOAD

301

Виділення порядку В зі знаком (РВ)

10

0100 0001 0011 0001

AND

305

11

0001 0001 0011 1010

STORE

314

12

0000 0001 0011 1001

LOAD

313

Перевірка знаку порядку А. Якщо «+»(Z=1) то перехід на 21 ні программа виконується дальше.

13

0100 0001 0010 1111

AND

303

14

1001 0000 0001 0101

JZ

21

15

0000 0001 0011 1001

LOAD

313

Переведення РА у доп.мод код.

Запис РАМ. Перехід на 23.

16

0111 0000 0000 0000

NOT

17

0101 0001 0010 1111

OR

303

18

0100 0001 0011 0001

AND

305

19

0001 0001 0011 1011

STORE

315

20

1110 0000 0001 0111

JMP

23

21

0000 0001 0011 1001

LOAD

313

Завантаження РА, запис РАМ.(РА=РАМ)

22

0001 0001 0011 1011

STORE

315

23

0000 0001 0010 1101

LOAD

301

Перевірка знаку порядку числа В. Якщо «+»(Z=1) – перехід на 29, «-» - програма виконується дальше.

24

0100 0001 0010 1111

AND

303

25

1001 0000 0001 1101

JZ

29

26

0000 0001 0011 1011

LOAD

315

Знаходження різниці порядків SPP=PA+(-PB). Перехід на 37

27

0010 0001 0011 1010

ADD

314

28

1110 0000 0010 0100

JMP

37

29

0000 0001 0011 1010

LOAD

314

Переведення РВ у доп.мод код.

Запис РВМ.

30

0111 0000 0000 0000

NOT

31

0010 0001 0011 0011

ADD

307

32

0101 0001 0010 1111

OR

303

33

0100 0001 0011 0001

AND

305

34

0001 0001 0011 1100

STORE

316

35

0000 0001 0011 1011

LOAD

315

SPP=PAM+PBM

36

0010 0001 0011 1100

ADD

316

37

0001 0001 0011 1101

STORE

317

Запис різниці порядків (SPP)

38

0000 0001 0011 1101

LOAD

317

Перевірка знаку SPP. Якщо «+»(Z=1)- перехід на 63, «-» - програма виконується дальше.

39

0100 0001 0010 1111

AND

303

40

1001 0000 0011 1111

JZ

63

41

0000 0001 0011 1010

LOAD

314

Запис проміжного порядку суми

42

0001 0001 0010 1101

STORE

301

43

0000 0001 0011 1101

LOAD

317

Встановлення кількості зсувів мантиси А (МА)

44

0100 0001 0011 0010

AND

306

45

0001 0001 0011 1101

STORE

317

Запис кількості зсувів МА

46

0000 0001 0011 0111

LOAD

311

Зсув вправо МА. Запис нової МА.

47

1111 1010 0000 0000

ROR

48

0100 0001 0011 0000

AND

304

49

0001 0001 0011 0111

STORE

311

50

0000 0001 0010 1100

LOAD

300

Визначення знаку МА. Якщо «+»(Z=1)- перехід на 56, «-» - програма виконується дальше.

51

0100 0001 0010 1110

AND

302

52

1001 0000 0011 1000

JZ

56

53

0000 0001 0011 0111

LOAD

311

Встановлення знаку МА

54

0101 0001 0010 1110

OR

302

55

0001 0001 0011 0111

STORE

311

56

0000 0001 0011 1101

LOAD

317

Зменшення лічильника зсувів

57

0011 0001 0011 0011

SUB

307

58

1000 0000 0010 1101

JNZ

45

Перевірка якщо Z=0 перехід на 45, якщо Z=1 програма виконується дальше.

59

1110 0000 0110 0001

JMP

97

Перех на

60

0000 0001 0011 1101

LOAD

317

Перевірка чи SPP=0 чи ні

61

0100 0001 0011 0001

AND

305

62

1001 0000 0110 0001

JZ

97

63

0000 0001 0011 1001

LOAD

313

Встановлення проміжного порядку(Р) суми

64

0001 0001 0100 0000

STORE

320

65

0000 0001 0011 1101

LOAD

317

Встановлення кількості зсувів мантиси В (МВ)

66

0100 0001 0011 0010

AND

306

67

0001 0001 0011 1101

STORE

317

68

0000 0001 0011 1000

LOAD

312

Цикл зсуву мантиси числа В. МВ

69

1111 1010 0000 0000

ROR

70

0100 0001 0011 0000

AND

304

71

0001 0001 0011 1000

STORE

312

72

0000 0001 0010 1101

LOAD

301

73

0100 0001 0010 1110

AND

302

74

1001 0000 0100 1110

JZ

78

75

0000 0001 0011 1000

LOAD

312

76

0101 0001 0010 1110

OR

302

77

0001 0001 0011 1000

STORE

312

78

0000 0001 0011 1101

LOAD

317

79

0011 0001 0011 0011

SUB

307

80

1000 0000 0100 0011

JNZ

67

81

0000 0001 0011 0111

LOAD

311

Визначення знаку МА. Якщо «+»(Z=1)- перехід на 89, «-» - програма виконується дальше.

82

0100 0001 0010 1110

AND

302

83

1001 0000 0101 1001

JZ

89

84

0000 0001 0011 0111

LOAD

311

Переведення РА у доп.мод код.

Запис РАМ.

85

0111 0000 0000 0000

NOT

86

0010 0001 0011 0100

ADD

308

87

0101 0001 0010 1110

OR

302

88

0001 0001 0011 0111

STORE

311

89

0000 0001 0011 1000

LOAD

312

Визначення знаку МА. Якщо «+»(Z=1)- перехід на 97, «-» - програма виконується дальше.

90

0100 0001 0010 1110

AND

302

91

1001 0000 0110 0001

JZ

97

92

0000 0001 0011 1000

LOAD

312

Переведення РВ у доп.мод код.

Запис РВМ.

93

0111 0000 0000 0000

NOT

94

0010 0001 0011 0100

ADD

308

95

0101 0001 0010 1110

OR

302

96

0001 0001 0011 1000

STORE

312

97

0000 0001 0011 0111

LOAD

311

Додавання мантис запис результату (М).

98

0010 0001 0011 1000

ADD

312

99

0001 0001 0011 1110

STORE

318

100

0100 0001 0010 1110

AND

302

Визначення знаку М

101

1001 0000 0110 1011

JZ

107

102

0000 0001 0011 1110

LOAD

318

Переведення М у доп.мод код.

Запис М.

103

0111 0000 0000 0000

NOT

104

0010 0001 0011 0100

ADD

308

105

0101 0001 0010 1110

OR

302

106

0001 0001 0011 1110

STORE

318

107

0000 0001 0011 1110

LOAD

318

Перевірка наявності порушення нормалізації вправо. Якщо відсутнє (Z=1)- перехід на 143, присутнє - програма виконується дальше.

108

0100 0001 0011 0011

AND

307

109

1001 0000 1000 1111

JZ

143

110

0000 0001 0011 1110

LOAD

318

Зсув мантиси вправо(виправлення порушення нормалізації вліво) Запис ММ.

111

1111 1010 0000 0000

ROR

112

0100 0001 0011 0000

AND

304

113

0001 0001 0011 1111

STORE

319

114

0000 0001 0011 1110

LOAD

318

Визначення знаку М. Якщо «+»(Z=1)- перехід на 120, «-» - програма виконується дальше.

115

0100 0001 0010 1110

AND

302

116

1001 0000 0111 1000

JZ

120

117

0000 0001 0011 1111

LOAD

319

Встановлення знаку «-» Числу ММ.

118

0101 0001 0010 1110

OR

302

119

0001 0001 0011 1111

STORE

319

120

0000 0001 0100 0000

LOAD

320

Визначення знаку Р. Якщо «+»(Z=1)- перехід на 139, «-» - програма виконується дальше.

121

0100 0001 0010 1111

AND

303

122

1001 0000 1000 1011

JZ

139

123

0000 0001 0100 0000

LOAD

320

Переведення Р у доп.мод код.

Запис Р.

124

0111 0000 0000 0000

NOT

125

0010 0001 0011 0011

ADD

307

126

0100 0001 0011 0001

AND

305

127

0101 0001 0010 1111

OR

303

128

0010 0001 0011 0011

ADD

307

129

0001 0001 0100 0000

STORE

320

130

0100 0001 0010 1111

AND

303

Визначення знаку Р. Якщо «+»(Z=1)- перехід на 138, «-» - програма виконується дальше.

131

1001 0000 1000 1010

JZ

138

132

0000 0001 0100 0000

LOAD

320

Переведення Р у прямий модиф. код.

Запис Р

133

0111 0000 0000 0000

NOT

134

0010 0001 0011 0011

ADD

307

135

0100 0001 0011 0001

AND

305

136

0101 0001 0010 1111

OR

303

137

0001 0001 0100 0000

STORE

320

138

1110 0000 1011 0111

JMP

183

Перехід на 183

139

0000 0001 0100 0000

LOAD

320

Збільшення порядку Р+1

140

0010 0001 0011 0011

ADD

307

141

0001 0001 0100 0000

STORE

320

142

1110 0000 1011 0111

JMP

183

Перехід на 183

143

0000 0001 0011 1110

LOAD

318

Організація циклу у якому виправляється порушення нормалізація вправо з одночасним зменшенням порядку (Р) суми.

144

0100 0001 0011 0101

AND

309

145

1000 0000 1011 0101

JNZ

181

146

0000 0001 0011 1110

LOAD

318

147

1111 0100 0000 0000

ASL

148

0001 0001 0011 1111

STORE

319

149

0000 0001 0011 1110

LOAD

318

150

0100 0001 0010 1110

AND

302

151

1001 0000 1001 1101

JZ

157

152

0000 0001 0011 1111

LOAD

319

153

0100 0001 0011 0000

AND

304

154

0101 0001 0010 1110

OR

302

155

0001 0001 0011 1110

STORE

318

156

1110 0000 1010 0000

JMP

160

157

0000 0001 0011 1111

LOAD

319

158

0100 0001 0011 0000

AND

304

159

0001 0001 0011 1110

STORE

318

160

0000 0001 0100 0000

LOAD

320

161

0100 0001 0010 1111

AND

303

162

1001 0000 1010 1001

JZ

169

163

0000 0001 0100 0000

LOAD

320

164

0111 0000 0000 0000

NOT

165

0010 0001 0011 0011

ADD

307

166

0100 0001 0011 0001

AND

305

167

0101 0001 0010 1111

OR

303

168

0001 0001 0100 0000

STORE

320

169

0000 0001 0100 0000

LOAD

320

170

0010 0001 0011 0001

ADD

305

171

0001 0001 0100 0000

STORE

320

172

0100 0001 0010 1111

AND

303

173

1001 0000 1011 0100

JZ

180

174

0000 0001 0100 0000

LOAD

320

175

0111 0000 0000 0000

NOT

176

0010 0001 0011 0011

ADD

307

177

0100 0001 0011 0001

AND

305

178

0101 0001 0010 1111

OR

303

179

0001 0001 0100 0000

STORE

320

180

1110 0000 1000 1111

JMP

143

181

0000 0001 0011 1110

LOAD

318

М=ММ

182

0001 0001 0011 1111

STORE

319

183

0000 0001 0011 1111

LOAD

319

Формування результату

184

0010 0001 0100 0000

ADD

320

185

0001 0001 0011 0110

STORE

310

186

0111 1100 0000 0000

HALT

Зупинка виконання програми

.

Висновок: на цій лабораторні роботі я ознайомився з поданням чисел у нормальній формі засвоїв порядок нормалізації чисел з рухомою комою, ознайомився з поняттям “характеристика” для чисел з рухомою комою, вивчив правила додавання (віднімання) двійкових чисел з рухомою комою, розробив алгоритми і програми додавання чисел в арифметиці з рухомою комою в інструкціях навчального комп'ютера - симулятора DeComp.