- •Лабораторный практикум
- •Тема: Система команд процессоров и методы адресации
- •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)
C) Передача параметров через стек.
В данном случае значения, передаваемые подпрограмме, вызывающей программой последовательно записываются в стек. При этом вызывающая программа резервирует в стеке одну ячейку для возврата результата, записывая в эту ячейку произвольное значение. В подпрограмме доступ к параметрам осуществляется с использованием адресации относительно верхушки стека. После возврата из подпрограммы вызывающая программа извлекает из стека переданные параметры (в данном случае они не изменяются и не нужны) и результат путем выполнения стандартных операций чтения верхушки стека.
-
адрес
код
мнемокод
комментарий
00
40
in 0
; ввод z
01
0a
mov b,a
;
02
41
in 1
; ввод n
03
19 29
stor b,z
; запомнить z
05
31 01
mvi b,1
;
07
19 2b
stor b,I
; i:=1
09
31 00
mvi b,0
;
0b
19 2a
stor b,Y
; Y:=0
0d
20
cycl: push a
; сохранить счетчик цикла
0e
20
push a
; зарезервировать ячейку стека для z**i
0f
10 2b
load a,I
11
20
push a
; записать в стек текущее значение i
12
10 29
load a,z
14
20
push a
; записать в стек значение z
15
c0 2c
call power
; вызов п/п вычисления степени
17
28
pop a
; извлечь z из стека
18
28
pop a
; извлечь i из стека
19
29
pop b
; извлечь z**i из стека и записать в rB
1a
59 2a
adm b,Y
; Y:=Y+Z**I
1c
19 2a
stor b,Y
; запомнить новое значение Y
1e
60 01
adi a,1
; I:=I+1;
20
18 2b
stor a,I
; запомнить новое значение I
22
28
pop a
; восстановить счетчик цикла из стека
23
e0 0d
loop a,cycl
; замкнуть цикл
25
10 2a
load a,Y
; в rA - Y
27
4a
out 2
; вывести результат в канал 2
28
f8
stop
29
00
Z: .ds 1
2a
00
Y: .ds 1
2b
00
I: .ds 1
; подпрограмма вычисления степени числа
; вход: I - показатель степени; Z - число,возводимое в степень.
; выход: Y - Z**i
; параметры передаются и возвращаются через стек ;
; состояние стека при входе в подпрограмму:
; |
|
(sp) - вершина стека |
; |
ret address |
(sp+1) |
; |
значение z |
(sp+2) параметр Z |
; |
значение I |
(sp+3) параметр I |
; |
яч. для рез-та |
(sp+4) параметр Y |
; |
счетчик цикла |
(sp+5) - дно стека |
;
-
2c
31 01
power: mvi b,1
; p:=1 - результат изначально равен 1
2e
14 83
load a,3(sp)
; в rA - показатель степени- счетчик цикла
30
20
intcyc: push a
; сохранить счетчик цикла
31
8c 83
mum a,3(sp)
; p:=p*z
33
28
pop a
; восстановить из стека счетчик цикла
34
e0 30
loop a,intcyc
; замкнуть цикл
36
1d 84
stor b,4(sp)
; запомнить y:=z**i
38
c8
ret
; возврат в вызывающую программу