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

5. Вводные программы

5.1. Программа 1

Программа позволяет загрузить в регистры В и С данные 010 и 001. Текст программы представлен в Таблице 1.

Таблица 1

Адреса

Команды

Мнемоника команд

Комментарии

L=000

041

LXIH

; Загрузка начального адреса памяти

001

200

В2

; мл.байт адреса

002

000

В3

; ст.байт адреса

003

001

LXIB

; Запись исходных данных в регистры В и С

004

001

В2

; B2 --> (C)

005

010

В3

; B3 --> (B)

006

160

МОV М,В

; Запоминание (В)

007

043

INX H

; Формирование следующего адреса памяти

010

161

МОV М,С

; Запоминание (С)

011

166

HLT

; Останов

Выполнение команды по адресу 006 осуществляется за 2 такта: первый такт – считывание команды (на световых индикаторах Шина адреса и Шина данных отображается адрес 006 и данные160), второй такт – запись в ячейку М, т.е. по адресу в регистрах HL= 000 200 данных из регистра В (на световых индикаторах Шина адреса и Шина данных отображается адрес 200 и данные 010). Аналогично происходит выполнение команды МОV М,С по адресу 010.

Результат выполнения программы: по адресу 000 200 записано число 010, по адресу 000 201 записано число 001.

5.2. Программа 2

Программа позволяет занести в стек (выбранный участок памяти ОЗУ) содержимое регистров В и С, в которых записаны данные 010 и 001 соответственно. Текст программы представлен в Таблице 2.

Таблица 2

Адреса

Команды

Мнемоника

Комментарии команд

L=000

061

LXI SP

; Установка указателя стека:

001

202

В2

; мл. байт адреса

002

000

В3

; ст. байт адреса

003

001

LXI B

; Запись исходных данных в регистры В и С:

04

001

В2

; B2 --> (C)

005

010

В3

; B3 --> (B)

006

305

PUSH B

; Запоминание содержимого регистров В и С стеке

007

166

HLT

; Останов

Результат выполнения программы: в ячейку памяти с адресом L = 200 записано число 001 – содержимое регистра С, в ячейку памяти с адресом L = 201 записано число 010 – содержимое регистра В. Таким образом при записи в стек содержимого регистровой пары ВС сначала в стек было записано содержимое регистра В, затем содержимое регистра С. Так как в стек было записано 2 байта, содержимое указателя стека уменьшилось на два.

При выполнении команды PUSH RP несколько раз содержимое указателя стека уменьшается, это значит, что стек «растет» в сторону уменьшения адресов памяти.

5.3. Программа 3

Программа позволяет извлечь (вызвать) данные, предварительно записанные в стек, изменить их на единицу (используя операцию инкремента-декремента) и занести скорректированные данные снова в стек. Текст программы представлен в Таблице 3.

Таблица 3

Адреса

Команды

Мнемоника

Комментарии команд

L=000

061

LXI SP

; Загрузка начального адреса в указатель стека

001

200

В2

; мл.байт адреса

002

000

В3

; ст.байт адреса

003

301

РОР В

; Извлечение данных из стека и загрузка их в регистровую пару В и С

004

004

INR B

; Увеличение на 1 содержимого регистра В

005

015

DCR C

; Уменьшение на 1 содержимого регистра С

006

305

PUSH B

; Запоминание содержимого регистров В и С в стеке

007

166

HLT

; Останов

Перед началом выполнения программы в ячейки памяти с адресами H=000 L=200 и H=000 L=201 были записаны числа 001 и 010 соответственно. В результате по адресу 000 200 записано число 000, по адресу 000 201 записано число 011. Содержимое стека было записано в регистровую пару ВС, т.е. в регистр В записано число 010, в регистр С – 001, затем содержимое регистра В было инкрементировано, содержимое регистра С – декрементировано, после этого содержимое регистровой пары было записано обратно в стек, т.е. по тем же адресам, откуда данные были первоначально извлечены.

При выполнении команды PUSH RP загружаются ячейки с адресами (УС-1) и (УС-2), т.е. УС содержит. При выполнении команды POP RP информация извлекается из ячеек памяти с адресами УС и (УС+1), т.к. УС содержит адрес ячейки памяти, следующей за первой ячейкой для записи, т.е. указывает на вторую записанную ячейку.

При включении ЭВМ указатель стека показывает на произвольную неизвестную ячейку памяти, именно поэтому для работы со стеком надо инициализировать УС командой LXI SP.