- •Лабораторный практикум
- •Тема: Система команд процессоров и методы адресации
- •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)
Тема: Организация подпрограмм и внутренние механизмы передачи параметров
Цель лабораторной работы:
Целью данной лабораторной работы является изучение особенностей выполнения команд передачи управления подпрограмме и возврата из подпрограммы, а так же знакомство с различными методами передачи параметров.
Задание к лабораторной работе:
- изучить соответствующий теоретический материал, используя конспекты и литературу;
- на примере функциональной модели ЭВМ-2 (приложение 2) ознакомиться с командами передачи управления подпрограмме и возврата из подпрограммы;
- для предложенного варианта задания реализовать четыре варианта программ, обеспечивающих передачу параметров различными способами;
- оформить отчет по лабораторной работе.
Для выполнения данного лабораторного практикума необходимо дополнить свои знания изучением следующих команд.
Переход к подпрограмме CALL A или CALL D(B). Адрес следующей за CALL командой заносится в вершину стека, в программный счетчик заносится адрес подпрограммы.
Возврат из подпрограммы: RET. Из вершины стека извлекается адрес возврата и записывается в программный счетчик.
Пример реализации программ по лабораторной работе
Ниже рассматривается четыре варианта программ с различными способами передачи параметров: через регистры общего назначения, через память, через стек и с использованием списка адресов параметров
А) Передача параметров через регистры
В нижеприведенном примере проиллюстрирован прием передачи параметров через регистры общего назначения процессора. Подпрограмма power обеспечивает вычисление целой степени некоторого числа. Подпрограмма имеет три параметра - два входных и один выходной. Входными параметрами являются показатель степени и число, возводимое в степень. Выходным параметром является результат возведения числа в степень. Параметры передаются подпрограмме в регистрах A и B. Результат работы подпрограммы возвращается в регистре B.
-
адрес
код
мнемокод
комментарий
00
40
in 0
; ввод z
01
0a
mov b,a
;
02
41
in 1
; ввод n
03
19 25
stor b,z
; запомнить z
05
31 00
mvi b,0
; обнулить b
07
19 26
stor b,Y
; Y:=0
09
31 01
mvi b,1
;
0b
19 27
stor b,I
; i:=1
0d
20
cycl: push a
; сохранить счетчик цикла
0e
10 27
load a,I
; в rA - I
10
11 25
load b,Z
; в rB - Z
12
c0 28
call power
; вызов п/п вычисления степени, рез-т возвр. ч/з rB
14
59 26
adm b,Y
; Y:=Y+ZI
16
19 26
stor b,Y
; запомнить новое Y
18
11 27
load b,I
; \
1a
61 01
adi b,1
; I:=I+1;
1c
19 27
stor b,I
; /
1e
28
pop a
; восстановить счетчик цикла
1f
e0 0d
loop a,cycl
; замкнуть цикл
21
10 26
load a,Y
; в rA - Y
23
4a
out 2
; вывести результат в канал 2
24
f8
stop
25
00
Z: .ds 1
26
00
Y: .ds 1
27
00
I: .ds 1
; подпрограмма вычисления степени числа
; вход: (rA) - показатель степени; (rB) - основание ;
; выход: (rB) - zi
28
19 33
power: stor b,zp
; запомнить исх. число во временной переменной
2a
31 01
mvi b,1
; p:=1 - результат изначально равен 1
2c
20
intcyc: push a
; сохранить счетчик цикла
2d
88 33
mum a,zp
; p:=p*z
2f
28
pop a
; восстановить из стека счетчик цикла
30
e0 2c
loop a,intcyc
; замкнуть цикл
32
c8
ret
; возврат в вызывающую программу
33
00
zp: .ds 1
; ячейка для временного хранения z