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