- •Лабораторный практикум
- •Тема: Система команд процессоров и методы адресации
- •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)
Первый вариант:
Вычисление выражения
по структурной схеме цикла с предусловием (while-цикл)
адрес |
код |
мнемокод |
комментарий |
|
|
|
|
00 |
31 01 |
mvi b,1 |
;загрузим 1 в регистр rB |
02 |
19 26 |
stor b,F |
; f:=1 (f- текущее значение факториала ) |
04 |
19 27 |
stor b,Y |
; Y:=1 |
06 |
40 |
in 0 |
; ввод N в rA |
07 |
b0 00 |
cmi a,0 |
; сравнить (rA) с 0 (n=0 ?) |
09 |
ba 22 |
jz exit |
; перейти по символическому адресу exit при (rA)=0 |
0b |
38 |
xchg |
; (rA)(rB) : в rA - 1(i:=1); в rB - N |
0c |
19 28 |
stor b,N |
; запомнить N по символическому адресу N |
0e |
11 28 |
cycl: load b,N |
; загрузить в N |
10 |
a9 |
cmr a,b |
; сравнить rA и rB (i<=n?) |
11 |
bb 22 |
jp exit |
; переход по признаку P (i>n) |
13 |
11 26 |
load b,F |
; в rB - (i-1)! |
15 |
20 |
push a |
; (rA) (sp) (coхранить i в стеке ) |
16 |
80 |
mur a,a |
; (rB)*(rA)->(rA,rB) i!:=i*(i-1)! |
17 |
19 26 |
stor b,F |
; запомнить i! по символическому адресу F |
19 |
59 27 |
adm b,Y |
; f+Y |
1b |
19 27 |
stor b,Y |
; Y:=Y+F |
1d |
28 |
pop a |
; (sp)(rA) восстановить в rA I |
1e |
60 01 |
adi a,1 |
; (rA)+1 -> (rA) : i:=i+1 |
20 |
b8 0e |
jmp cycl |
; переход на проверку условия окончания цикла |
22 |
10 27 |
exit: load a,Y |
; (rA)<- результат вычисления выражения |
24 |
49 |
out 1 |
; вывод результата в порт 1 |
25 |
f8 |
stop |
; стоп |
26 |
00 |
F: .ds 1 |
; ячейка под текущее значение факториала |
27 |
00 |
Y: .ds 1 |
; ячейка под результат |
28 |
00 |
N: .ds 1 |
; ячейка для хранения N |
Для N=2, Y=4.
Второй вариант:
Вычисление выражения
по структурной схеме цикла с пoстусловием (repeat...until - цикл)
адрес |
код |
мнемокод |
комментарий |
|
|
|
|
00 |
31 01 |
mvi b,1 |
|
02 |
19 24 |
stor b,F |
; f:=1 (f- текущее значение факториала ) |
04 |
19 25 |
stor b,Y |
; Y:=1 |
06 |
40 |
in 0 |
; ввод N в rA |
07 |
b0 00 |
cmi a,0 |
; сравнить (rA) с 0 (n=0 ?) |
09 |
ba 20 |
jz exit |
; перейти по символическому адресу exit при (rA)=0 |
0b |
38 |
xchg |
; (rA)(rB) : в rA - 1(i:=1); в rB - N |
0c |
19 26 |
stor b,N |
; запомнить N по символическому адресу N |
0e |
11 24 |
cycl: load b,F |
; в rB - (i-1)! |
10 |
20 |
push a |
; (rA)(sp) (coхранить i в стеке ) |
11 |
80 |
mur a,a |
; (rB)*(rA)->(rA,rB) i!:=i*(i-1)! |
12 |
19 24 |
stor b,F |
; запомнить i! по символическому адресу F |
14 |
59 25 |
adm b,Y |
; f+Y |
16 |
19 25 |
stor b,Y |
; Y:=Y+F |
18 |
28 |
pop a |
; (sp)(rA) восстановить в rA i |
19 |
60 01 |
adi a,1 |
; (rA)+1 -> (rA) : i:=i+1 |
1b |
11 26 |
load b,N |
; (rB) <- N |
1d |
a9 |
cmr a,b |
; сравнить (rA) c (rB) :(i>n?) |
1e |
bf 0e |
jnp cycl |
; переход на начало цикла,если признак N (i<=n) |
20 |
10 25 |
exit: load a,Y |
; (rA)<- результат вычисления выражения |
22 |
49 |
out 1 |
; вывод результата в порт 1 |
23 |
f8 |
stop |
; стоп |
24 |
00 |
F: .ds 1 |
; ячейка под текущее значение факториала |
25 |
00 |
Y: .ds 1 |
; ячейка под результат |
26 |
00 |
N: .ds 1 |
; ячейка для хранения N |
Пример для N=3, Y=0ah.