####Полное условие находится ниже примеров использования
python solver.py 3
Variant #3; Input Numbers: (2297, 20869)
Task #3
X1 = A = 2297
X2 = C = 20869
X3 = A + C = 2297 + 20869 = 23166
X4 = A + C + C = 2297 + 20869 + 20869 = 44035
X5 = C - A = 20869 - 2297 = 18572
X6 = 65536 - X4 = 65536 - 44035 = 21501
X7 = -X1 = -2297
X8 = -X2 = -20869
X9 = -X3 = -23166
X10 = -X4 = -44035
X11 = -X5 = -18572
X12 = -X6 = -21501
Task #4; Task #5
B1(2) = X1(10) = 2297(10) = 1000 1111 1001(2)
B2(2) = X2(10) = 20869(10) = 101 0001 1000 0101(2)
B3(2) = X3(10) = 23166(10) = 101 1010 0111 1110(2)
B4(2) = X4(10) = 44035(10) = 1010 1100 0000 0011(2)
B5(2) = X5(10) = 18572(10) = 100 1000 1000 1100(2)
B6(2) = X6(10) = 21501(10) = 101 0011 1111 1101(2)
B7(2) = -B1(2) = 1111 0111 0000 0111(2)
B8(2) = -B2(2) = 1010 1110 0111 1011(2)
B9(2) = -B3(2) = 1010 0101 1000 0010(2)
B10(2) = -B4(2) = 0101 0011 1111 1101(2)
B11(2) = -B5(2) = 1011 0111 0111 0100(2)
B12(2) = -B6(2) = 1010 1100 0000 0011(2)
Task #6
ОДЗ = [2^15; 2^15 - 1] = [32768; 32767]
Task #7
B1(2) -> Y1(10) = 2297(10) = X1(10)
B2(2) -> Y2(10) = 20869(10) = X2(10)
B3(2) -> Y3(10) = 23166(10) = X3(10)
B4(2) -> Y4(10) = -21501(10) ≠ X4(10) ≠ 44035(10)
B5(2) -> Y5(10) = 18572(10) = X5(10)
B6(2) -> Y6(10) = 21501(10) = X6(10)
B7(2) -> Y7(10) = -2297(10) = X7(10)
B8(2) -> Y8(10) = -20869(10) = X8(10)
B9(2) -> Y9(10) = -23166(10) = X9(10)
B10(2) -> Y10(10) = 21501(10) ≠ X10(10) ≠ -44035(10)
B11(2) -> Y11(10) = -18572(10) = X11(10)
B12(2) -> Y12(10) = -21501(10) = X12(10)
Task #8
Expression #1
B1(2) 0000 1000 1111 1001(2) X1(10) 2297(10)
+ B2(2) 0101 0001 1000 0101(2) + X2(10) 20869(10)
------ ---------------------- ----------
0101 1010 0111 1110(2) = 23166(10) = 23166(10)
SF = 0 ZF = 0 PF = 1 AF = 0 CF = 0 OF = 0
Expression #2
B2(2) 0101 0001 1000 0101(2) X2(10) 20869(10)
+ B3(2) 0101 1010 0111 1110(2) + X3(10) 23166(10)
------ ---------------------- ----------
1010 1100 0000 0011(2) = -21501(10) ≠ 44035(10)
SF = 1 ZF = 0 PF = 1 AF = 1 CF = 0 OF = 1
Expression #3
B2(2) 0101 0001 1000 0101(2) X2(10) 20869(10)
+ B7(2) 1111 0111 0000 0111(2) + X7(10) -2297(10)
------ ---------------------- ----------
(1) 0100 1000 1000 1100(2) = 18572(10) = 18572(10)
SF = 0 ZF = 0 PF = 0 AF = 0 CF = 1 OF = 0
Expression #4
B7(2) 1111 0111 0000 0111(2) X7(10) -2297(10)
+ B8(2) 1010 1110 0111 1011(2) + X8(10) -20869(10)
------ ---------------------- ----------
(1) 1010 0101 1000 0010(2) = -23166(10) = -23166(10)
SF = 1 ZF = 0 PF = 1 AF = 1 CF = 1 OF = 0
Expression #5
B8(2) 1010 1110 0111 1011(2) X8(10) -20869(10)
+ B9(2) 1010 0101 1000 0010(2) + X9(10) -23166(10)
------ ---------------------- ----------
(1) 0101 0011 1111 1101(2) = 21501(10) ≠ -44035(10)
SF = 0 ZF = 0 PF = 0 AF = 0 CF = 1 OF = 1
Expression #6
B1(2) 0000 1000 1111 1001(2) X1(10) 2297(10)
+ B8(2) 1010 1110 0111 1011(2) + X8(10) -20869(10)
------ ---------------------- ----------
1011 0111 0111 0100(2) = -18572(10) = -18572(10)
SF = 1 ZF = 0 PF = 1 AF = 1 CF = 0 OF = 0
Expression #7
B11(2) 1011 0111 0111 0100(2) X11(10) -18572(10)
+ B3(2) 0101 1010 0111 1110(2) + X3(10) 23166(10)
------ ---------------------- ----------
(1) 0001 0001 1111 0010(2) = 4594(10) = 4594(10)
SF = 0 ZF = 0 PF = 0 AF = 1 CF = 1 OF = 0
-
Переписать в отчёт (рукой, а не копированием в электронном виде) формулировку заданий 4–10! Это требуется для того, чтобы корректно и в полном объёме выполнить все необходимые пункты задания. Данную лабораторную надо выполнять как вычислительная машина, которая действует строго по инструкции.
-
Определить свои числа А и С исходя из варианта. Вариант выбирается как сумма последнего числа в номере группы и номера в списке группы согласно ISU.
-
По заданному варианту исходных данных получить набор десятичных чисел: X1 = A, X2 = C, X3 = A+C, X4 = A+C+C, X5 = C-A, X6 = 65536-X4, X7 = -X1, X8 = -X2, X9 = -X3, X10 = -X4, X11 = -X5, X12 = -X6.
Пример:
A = 2187 C = 30327 X1 = 2187 X2 = 30327 X3 = A + C = 2187 + 30327 = 32514 X7 = -X1 = -2187 X8 = -X2 = -30327 X9 = -X3 = -32514
-
Выполнить перевод десятичных чисел X1,…,X6 в двоичную систему счисления, получив их двоичные эквиваленты B1,…,B6 соответственно. Не использовать при этом никакой формат представления данных, не использовать никакую разрядную сетку.
Пример:
X1(10) → B1(2) = 1000 1000 1011 X2(10) → B2(2) = 111 0110 0111 0111 X3(10) → B3(2) = 111 1111 0000 0010
-
Используя 16-разрядный двоичный формат со знаком и полученные в предыдущем пункте задания двоичные числа B1,…,B6 (т.е. при необходимости дополнить числа B1…B6 ведущими нулями и однозначно интерпретировать эти числа в 16-разрядном двоичном формате со знаком), вычислить двоичные числа B7,…,B12: B7 = -B1, B8 = -B2, B9 = -B3, B10 = -B4, B11 = -B5, B12 = -B6. Отрицательные числа представлять в дополнительном коде.
Пример:
B7(2) = -B1(2) = 1111 0111 0111 0101 B8(2) = -B2(2) = 1000 1001 1000 1001 B9(2) = -B3(2) = 1000 0000 1111 1110
-
Найти область допустимых значений для данного двоичного формата.
-
Выполнить обратный перевод всех двоичных чисел B1…B12 (используя 16-разрядный двоичный формат со знаком) в десятичные и прокомментировать полученные результаты.
Пример:
B1(2) → Y1(10) = 2187(10) = X1(10) Результат обратного перевода из двоичного числа в десятичное равен исходному десятичному числу B2(2) → Y2(10) = 30327(10) = X2(10) Результат обратного перевода из двоичного числа в десятичное равен исходному десятичному числу B3(2) → Y3(10) = 32514(10) = X3(10) Результат обратного перевода из двоичного числа в десятичное равен исходному десятичному числу B7(2) → Y7(10) = -2187(10) = X7(10) Результат обратного перевода из двоичного числа в десятичное равен исходному десятичному числу B8(2) → Y8(10) = -30327(10) = X8(10) Результат обратного перевода из двоичного числа в десятичное равен исходному десятичному числу B9(2) → Y9(10) = -32514(10) = X9(10) Результат обратного перевода из двоичного числа в десятичное равен исходному десятичному числу
-
Выполнить следующие сложения двоичных чисел: B1+B2, B2+B3, B2+B7, B7+B8, B8+B9, B1+B8, B11+B3 (итого, 7 операций сложения). Для представления слагаемых и результатов сложения использовать 16-разрядный двоичный формат со знаком. Результаты сложения перевести в десятичную систему счисления, сравнить с соответствующими десятичными числами (т.е. сравнить с суммой слагаемых, представленных в десятичной системе: B1 + B2 vs X1 + X2).
Примеры:
B1(2) 0000 1000 1000 1011 X1(10) 2187 + B2(2) 0111 0110 0111 0111 + X2(10) 30327 ---------------------------------- = -------------- 0111 1111 0000 0010(2) = 32514(10) 32514(10) CF = 0 PF = 1 AF = 1 ZF = 0 SF = 0 OF = 0 При сложении двух положительных слагаемых получено положительное число. Результат выполнения операции верный и корректный, совпадает с суммой десятичных эквивалентов.
B1(2) 0000 1000 1000 1011 X1(10) 2187 + B8(2) 1000 1001 1000 1001 + X8(10) -30327 ---------------------------------- = --------------- 1001 0010 0001 0100(2) = -28140(10) -28140(10) CF = 0 PF = 1 AF = 1 ZF = 0 SF = 1 OF = 0 При сложении положительного и отрицательного слагаемых получено отрицательное число. Результат выполнения операции верный и корректный, совпадает с суммой десятичных эквивалентов.
-
В отчёте (письменно, а не устно при ответе) дать подробные комментарии полученным результатам (к каждому результату сложения), как показано в таблице 2.6 книги «Введение в микроЭВМ». Расставить 6 флагов состояния.
-
При выставлении вспомогательного флага переноса (межтетрадный перенос – AF=Auxiliary Carry Flag) учитывать перенос не между 7-м и 8-м битами, а между 3-м и 4-м битами результата. При выставлении флага чётности PF учитывать только младший байт.
-
Проверить, что все пункты задания выполнены и выполнены верно.