Ход работы
І.СОСТАВИТЬ И НАРИСОВАТЬ БЛОК-СХЕМЫ АЛГОРИТМОВ СЛЕДУЮЩИХ ЗАДАЧ:
Вычислить сумму первых 100 чисел натурального ряда, начиная с 1.
(1+2+3+…+100)
Найти произведение первых 100 чисел натурального ряда (1*2*…*100)
Учет проданных билетов. Известно, что массив S[1:n] содержит информацию об 1-ом месте. S[1]=0, если место свободно, S[1]=1, если место с номером 1 продано.
а) Определить продано ли место с номером m?
б) Сколько мест продано?
в) Какое место свободно?
Отсортировать массив S[1:m] в порядке возрастания.
S[1]<=S[2]<=S[3]N=…<=S[m]/
ІІ. Разработать программы:
Начиная с адреса 8200 записать последовательно по порядку 64 шестнадцатеричных числа, начиная с 0.
С клавиатуры вводится однозначное число. Найти квадрат этого числа, применяя алгоритм, основанный на том, что квадрат числа можно определить сложением последовательных нечетных чисел.
число |
сумма |
Квадрат |
1 |
1 |
=1 |
2 |
1+3 |
=4 |
3 |
1+3+5 |
=9 |
4 |
1+3+5+7 |
=16 |
5 |
1+3+5+7+9 |
=23 |
ЛИТЕРАТУРА:
Описание «Микролаб».
Преснухин. Микропроцессоры.Т.3.
ВОПРОСЫ ДЛЯ САМОПОДГОТОВКИ:
по каким правилам производится запись 1 в разряды регистров признаков МП F?
Какие команды входят в группу условных переходов, и как они выполняются?
Как выполняются команды сравнения?
Назначение счетчика команд и регистра команд?
Команды перехода
Команды этой группы изменяют нормальное последовательное исполнение программы. Исполнение команд не влияет на состояние флагов.
Состояние флагов |
Переход |
Вызов |
Возврат |
Z=1 Z=0 Перенос есть Переноса нет Знак положительный Знак отрицательный Результат четный Результат нечетный Безусловное |
JZ CA JNZ C2 JC DA JNC D2 JP F2 JMP FA JPE EA JPO E2 JMP C3 |
CZ CC CNZ C4 CC DC CNC D4 CP F4 CM FC CPE EC CPO E4 CALL CD |
RZ C8 RNC C0 RC D8 RNC D0 RP F0 RM F8 RPE E8 RPO E0 RET C9 |
Имеется два типа команд перехода: безусловные и условные. Безусловные команды перехода осуществляют передачу управления, изменяя значение программного счетчика РС. Команды условного перехода сначала проверяют состояние одного из четырех флагов процессора, чтобы определить, выполнено ли указанное в команде условие. Имеются следующие условия перехода:
Условие |
Код |
NZ – не ноль (Z = 0) |
000 |
Z – ноль (Z = 1) |
001 |
NC – нет переноса (CY = 0) |
010 |
C – есть перенос (CY = 1) |
011 |
PO – нечетный результат (Р = 0) |
100 |
РЕ – четный результат (Р = 1) |
101 |
Р- плюс (S = 0) |
110 |
M – минус (S = 1) |
111 |
JMP [адр.] (ПЕРЕХОД)
(РС) (байт 3) (байт 2)
Управление передается команде, адрес которой указан во втором и третьем байтах команды перехода.
1 |
1 |
0 |
0 |
0 |
0 |
1 |
1 |
Младший байт адреса | |||||||
Старший байт адреса |
JMP [адр.] С3
Циклы: 3
Состояния: 10
Адресация: непосредственная
Флаги: нет
J (УСЛОВИЕ) [адр.] (УСЛОВНЫЙ ПЕРЕХОД)
Если (ССС), то (РС) (байт 3) (байт2)
Если указанное условие истинно, то управление передается команде, адрес которой указан во втором и третьем байтах команды перехода. Если условие ложное, то последовательный код программы не изменяется.
1 |
1 |
С |
С |
С |
0 |
1 |
0 | ||
Младший байт адреса | |||||||||
Старший байт адреса | |||||||||
JNZ |
[адр.] |
C2 | |||||||
JZ |
[адр.] |
CA | |||||||
JNC |
[адр.] |
D2 | |||||||
JC |
[адр.] |
DA | |||||||
JPO |
[адр.] |
E2 | |||||||
JPE |
[адр.] |
EA | |||||||
JP |
[адр.] |
F2 | |||||||
JM |
[адр.] |
FA |
Циклы: 3
Состояния: 10
Адресация: непосредственная
Флаги: нет
CALL [адр.] (ВЫЗОВ)
((SP) – 1) (PCH)
((SP) – 2) (PCL)
(SP) (SP) – 2
(PC) (байт 3) (байт 2)
Старшие 8 бит адреса следующей команды пересылаются в ячейку памяти, адрес которой на 1 меньше содержимого указателя СТЕКА SP.
Младшие 8 бит адреса следующей команды пересылаются в ячейку памяти, адрес которой на 2 меньше величины указателя СТЕКА SP. Содержимое указателя СТЕКА уменьшается на 2. Управление передается команде, адрес которой указан во втором и третьем байтах команды вызова.
1 |
1 |
0 |
0 |
1 |
1 |
0 |
1 |
Младший байт адреса | |||||||
Старший байт адреса |
CALL [адр.] CD
Циклы: 5
Состояния: 18
Адресация: непосредственная / косвенная регистровая
Флаги: нет
С (УСЛОВИЕ) (адр.) (УСЛОВНЫЙ ВЫЗОВ)
Если (ССС), то ((SP) – 1) (PCH),
((SP) – 2) (PCL),
(SP) (SP) – 2,
(PC) (байт 3) (байт 2)
Если указанное условие истинно, то выполняются действия, описанные в команде CALL, в противном случае последовательность исполнения команд не изменяется.
1 |
1 |
С |
С |
С |
1 |
0 |
0 | ||
Младший байт адреса | |||||||||
Старший байт адреса | |||||||||
CNZ |
(адр.) |
C4 | |||||||
CZ |
(адр.) |
CC | |||||||
CNC |
(адр.) |
D4 | |||||||
CC |
(адр.) |
DC | |||||||
CPO |
(адр.) |
E4 | |||||||
CPE |
(адр.) |
EC | |||||||
CP |
(адр.) |
F4 | |||||||
CM |
(адр.) |
FC |
Циклы: 5
Состояния: 18
Адресация: непосредственная / косвенная регистровая
Флаги: нет
RET (ВОЗВРАТ)
(PCL) ((SP))
(PCH) ((SP) + 1)
(SP) (SP) + 2
Содержимое ячейки памяти, адрес которой содержится в указателях СТЕКА SP, пересылается в 8 младших бит программного счетчика РС. Содержимое ячейки памяти, адрес которой на 1 больше содержимого указателя СТЕКА, пересылается в 8 старших бит программного счетчика. Содержимое указателя СТЕКА увеличивается на 2.
1 |
1 |
0 |
0 |
1 |
0 |
0 |
1 |
RET C9
Циклы: 3
Состояния: 10
Адресация: косвенная регистровая
Флаги: нет
R условие (УСЛОВНЫЙ ВОЗВРАТ)
если (ССС), то (PCL) ((SP)), (PCH) ((SP) + 1), (SP) ((SP) + 2)
Если указанное условие истинно, то выполняются действия, описанные в команде RET, в противном случае последовательность исполнения команд не нарушается.
1 |
1 |
С |
С |
С |
0 |
0 |
0 | |
RNZ |
C0 | |||||||
RZ |
C8 | |||||||
RNC |
D0 | |||||||
RC |
D8 | |||||||
RPO |
E0 | |||||||
RPE |
E8 | |||||||
RP |
F0 | |||||||
RM |
F8 |
Циклы: 3
Состояния: 12
Адресация: косвенная регистровая
Флаги: нет
RST n (РЕСТАРТ)
((SP) – 1) (PCH)
((SP) – 2) (PCL)
(SP) ((SP) – 2)
(PC) 8* (NNN)
Старшие 8 бит адреса следующей команды пересылаются в ячейку памяти, адрес которой на 1 меньше содержимого указателя СТЕКА. Младшие 8 бит адреса следующей команды пересылаются в ячейку памяти, адрес которой на 2 меньше содержимого указателя СТЕКА. Содержимое указателя СТЕКА уменьшается на 2. Управление передается команде, адрес которой равен коду NNN, умноженному на 8.
1 |
1 |
N |
N |
N |
1 |
1 |
1 | ||
RST |
0 |
C7 | |||||||
RST |
1 |
CF | |||||||
RST |
2 |
D7 | |||||||
RST |
3 |
DF | |||||||
RST |
4 |
E7 | |||||||
RST |
5 |
EF | |||||||
RST |
6 |
F7 | |||||||
RST |
7 |
FF |
Циклы: 3
Состояния: 12
Адресация: косвенная регистровая
Флаги: нет
15 |
14 |
13 |
12 |
11 |
10 |
9 |
8 |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
N |
N |
N |
0 |
0 |
0 |
Программный счетчик после рестарта.
PCHL (ЗАГРУЗКА СОДЕРЖИМОГО РЕГИСТРОВ Н и L В ПРОГРАММНЫЙ СЧЕТЧИК)
(PCH) (H)
(PCL) (L)
Содержимое регистра Н пересылается в 8 старших бит программного счетчика РС. Содержимое регистра L пересылается в 8 младших бит программного счетчика.
1 |
1 |
1 |
0 |
1 |
0 |
0 |
1 |
PCHL E9
Циклы: 1
Состояния: 6
Адресация: регистровая
Флаги: нет