- •Лабораторный практикум
- •Тема: Система команд процессоров и методы адресации
- •A) Абсолютная адресация
- •Б) относительная адресация
- •В) вариант программы с использованием только регистров и стековой памяти
- •Тема: Команды сравнения и переходов
- •Первый вариант:
- •Второй вариант:
- •Третий вариант:
- •Варианты заданий к лабораторной работе
- •Тема: Организация подпрограмм и внутренние механизмы передачи параметров
- •А) Передача параметров через регистры
- •B) Пример передачи параметров через общую область памяти.
- •C) Передача параметров через стек.
- •D) Передача параметров через таблицу адресов
- •Варианты заданий для лабораторной работы
- •Тема: Организация прерываний
- •Тема: Введение в архитектуру ibm pc
- •Тема: Трансляция, компоновка и отладка программ
- •Тема: Режимы адресации
- •Тема: Программирование ветвлений и циклов
- •Тема: Арифметические операции целочисленной обработки информации
- •Тема: Программирование операций ввода-вывода
- •Приложение 1 Функциональная модель микроЭвм-2
- •Приложение 2.
- •2.1.1. Представление чисел и перевод из одного счисления в другое.
- •2.1.2. Сложение положительных чисел
- •2.1.3. Сложение и вычитание чисел со знаком
- •2.2.1. Преобразование двоичных чисел в десятичные
- •2.2.2. Преобразование десятичных чисел в двоичные
- •2.3. Двоично-десятичная система счисления
- •2.4. Восьмеричная система счисления
- •2.5. Шестнадцатеричная система счисления
- •Приложение 3 Программная модель микропроцессора Intel (Pentium III)
- •Приложение 4 Система команд микропроцессора Intel 8086
- •Приложение 5 Коды ascii (диапазон 0-127)
D) Передача параметров через таблицу адресов
Доступ к параметрам обеспечивается через таблицу адресов параметров, адрес которой передается в регистре A. Перед началом работы программы производится заполнение списка адресов параметров путем засылки адреса переменной в таблицу.
-
адрес
код
мнемокод
комментарий
00
30 2a
mvi a,Z
; подготовить
02
18 2d
stor a,TABPAR
;
04
30 2b
mvi a,Y
; таблицу
06
18 2e
stor a,TABPAR1
;
08
30 2c
mvi a,I
; адресов
0a
18 2f
stor a,TABPAR2
; параметров
0c
40
in 0
; ввод z
0d
0a
mov b,a
;
0e
41
in 1
; ввод n
0f
19 2a
stor b,z
; запомнить z
11
31 01
mvi b,1
;
13
19 2c
stor b,I
; i:=1
15
31 00
mvi b,0
; y:=0
17
20
cycl: push a
; сохранить счетчик цикла
18
30 2d
mvi a,TABPAR
; в rA - адрес таблицы адресов параметров
1a
c0 30
call power
; вызов п/п вычисления степени
1c
59 2b
adm b,Y
; Y:=Y+ZI
1e
10 2c
load a,I
; \
20
60 01
adi a,1
; > I:=I+1;
22
18 2c
stor a,I
; /
24
28
pop a
; восстановить счетчик цикла
25
e0 17
loop a,cycl
; замкнуть цикл
27
09
mov a,b
; в rA - Y
28
4a
out 2
; вывести результат в канал 2
29
f8
stop
2a
00
Z: .ds 1
2b
00
Y: .ds 1
2c
00
I: .ds 1
2d
00
TABPAR: .ds 1
2e
00
TABPAR1:.ds 1
2f
00
TABPAR2:.ds 1
; подпрограмма вычисления степени числа
; вход: i - показатель степени; z - число,возводимое в степень.
; выход: y - zi
; параметры выбираются через таблицу адресов параметров, адрес которой
; передается через регистр A
-
30
21
power: push b
; сохранить в стеке текущее значение Y
31
31 01
mvi b,1
; p:=1 - результат изначально равен 1
33
20
push a
; сохранить адрес таблицы адресов параметров
34
14 02
load a,2(a)
; в rA - адрес третьего параметра
36
14 00
load a,0(a)
; в rA - показатель степени- счетчик цикла
38
20
intcyc: push a
; сохранить счетчик цикла
39
14 82
load a,2(sp)
; в rA - адрес таблицы адресов
3b
14 00
load a,0(a)
; в rA - aдрес первого параметра
3d
8c 00
mum a,0(a)
; p:=p*z
3f
28
pop a
; восстановить из стека счетчик цикла
40
e0 38
loop a,intcyc
; замкнуть цикл
42
28
pop a
; восстановить адрес таблицы адресов параметров
43
14 01
load a,1(a)
; загрузить адрес второго параметра
45
1d 00
stor b,0(a)
; запомнить y:=zi
47
29
pop b
; восстановить из стека текущее значение суммы
48
c8
ret
; возврат в вызывающую программу