Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Архитектура ЭВМ, разработанная Джоном фон Нейманом




 

1. Машина имеет память, которая хранит программу, данные и результаты промежуточных вычислений.

2. Программа вводится в машину, так же, как и данные (а не коммутируется проводами).

3. Адресный принцип. В команде указываются не сами числа, над которыми выполняются арифметические действия, а адреса – номера ячеек памяти, где эти числа находятся.

4. Автоматизм. После ввода программа работает автоматически. Каждая команда содержит явное или неявное указание об адресе команды, которая будет выполняться следующей.

5. Переадресация. Адреса ячеек памяти, указанные в команде, можно вычислять и преобразовывать как числа. ЭВМ может сама готовить команды, которые выполняет. ЭВМ напоминает движение танка, который прокладывает перед собой рельсы (на внутренней стороне гусениц) и едет по ним.

Разработка этих принципов позволила значительно упростить и удешевить компьютеры, а также достичь большой гибкости в их работе. В дальнейшем эти принципы нашли применение в разработке компиляторов, операционных систем и программировании на языках высокого уровня.

 

Задание:

Написать программу, с помощью которой в регистрах микропроцессора, начиная с указанного, сформировать 6 чисел, расположенные в табл.1.1 последовательно, начиная с ячейки, находящейся под номером варианта. Затем найти сумму этих чисел, используя цикл.

 

Таблица 1.1 – Варианты заданий к л.р. №1

№ вар.                    
Нач. регистр R1 R2 R3 R4 R5 R6 R7 R8 R9 R10
Числа                    
№ вар.                    
Нач. регистр R11 R12 R13 R14 R15 R16 R17 R18 R19 R20
Числа                    
№ вар.                    
Нач. регистр R1 R2 R3 R4 R5 R6 R7 R8 R9 R10
Числа                    

 

Допускается только одна команда занесения числа в регистр (команда с непосредственным операндом типа ldi регистр, константа). Остальные команды могут быть: mov регистр, регистр; inc регистр; add регистр, регистр; sub регистр, регистр.

 


Таблица 1.1 – Команды и их кодирование

Мнемоника Description Код Описание
ADD Rd, Rr Add 0000 11rd dddd rrrr Сложение: Rd = Rd + Rr
SUB Rd, Rr Subtract 0001 10rd dddd rrrr Вычитание: Rd = Rd – Rr
INC Rd Increment 1001 010d dddd 0011 Rd ++
MOV Rd, Rr Move 0010 11rd dddd rrrr Содержимое Rr копируется в Rd
LDI Rd, K Load Immediate 1110 KKKK dddd KKKK Загрузка непосредственной константы в регистр R(d+16)
LDS Rd, k Load direct from SRAM 1001 000d dddd 0000 kkkk kkkk kkkk kkkk Загрузка регистра из ячейки памяти с адресом k
STS k, Rd Store direct to SRAM 1001 001d dddd 0000 kkkk kkkk kkkk kkkk Сохранение регистра в ячейку памяти с адресом k
LD Rd, Z Load indirect 1000 000d dddd 0000 Загрузка регистра из ячейки памяти с адресом, хранящимся в регистре Z
BRLT k Branch if Less Than zero 1111 00kk kkkk k100 Переход, если при вычитании первый операнд был меньше второго: PC = PC + k + 1, где k – в доп. коде

 

Пример:

 

Пусть необходимо в регистрах, начиная с R3 сформировать такие числа: 8, 1, 4, 12, 6, 3.

Напишем программу:

ldi r16,1;r16=1

mov r4,r16;r4=1

mov r3,r4;r3=1

inc r3;r3=2

inc r3;r3=3

mov r8,r3;r8=3

inc r3;r3=4

mov r5,r3;r5=4

add r3,r3;r3=8

mov r6,r3;r6=8

add r6,r5;r6=C

mov r7,r8;r7=3

add r7,r7;r7=6

 

sub r0,r0;r0=0 – Очистка суммы

sub r1,r1;r0=0 – Очистка счетчика итераций

ldi r17,6;r17=6 – Количество итераций

ldi z31,0;Загрузка адреса начальной

ldi z30,3;ячейки памяти в регистр Z

loop:

ld r10,z;Загрузка элемента массива из ячейки с адресом z во;временный регистр

add r0,r10; s = s + m[i] – накопление суммы

inc zl;Увеличение Z на 1

inc r1; i++

mov r16,r1;

sub r16,r17; r1<r3?

brlt loop; переход, если меньше на метку loop

 

Для удобства программирования следует представить программу в виде таблицы:

 

Таблица 1.2 – Команды программы и их коды

 

Команды Комментарий Двоичный код команд Шестн. код
ldi r16,1 mov r4,R16 mov r3,r4 inc r3 inc r3 mov r8,r3 inc r3 mov r5,r3 add r3,r3 mov r6,r3 add r6,r5 mov r7,r8 add r7,r7   sub r0,r0 sub r1,r1 ldi r17,6 ldi r31,0 ldi r30,3 loop: ld r10,z add r0,r10 inc r30 inc r1 mov r16,r1 sub r16,r17 brlt loop ;r16=1 ;r4=1 ;r3=1 ;r3=2 ;r3=3 ;r8=3 ;r3=4 ;r5=4 ;r3=8 ;r6=8 ;r6=C ;r7=3 ;r7=6   ;s=0 ;ii=0 ;n=6 ;z=0x0000 ;i=z=0x0003   ;r10= m[i] ;s=s+m[i] ;z++ ;ii++ ;r16=ii ;ii<n? ;переход,если;меньше на loop 1110 0000 0000 0001 0010 1110 0100 0000 0010 1100 0011 0100 1001 0100 0011 0011 1001 0100 0011 0011 0010 1100 1000 0011 1001 0100 0011 0011 0010 1100 0101 0011 0000 1100 0011 0011 0010 1100 0110 0011 0000 1100 0110 0101 0010 1100 0111 1000 0000 1100 0111 0111   0001 1000 0000 0000 0001 1000 0001 0001 1110 0000 0001 0110 1110 0000 1111 0000 1110 0000 1110 0011   1000 0000 1010 0000 0000 1100 0000 1010 1001 0101 1110 0011 1001 0100 0001 0011 0010 1101 0000 0001 0001 1011 0000 0001 1111 0011 1100 1100 (на 7 команд назад) E0 01 2E 40 2C 34 94 33 94 33 2C 83 94 33 2C 53 0C 33 2C 63 0C 65 2C 78 0C 77   18 00 18 11 E0 16 E0 F0 E0 E3   80 A0 0C 0A 95 E3 94 13 2D 01 1B 01 F3 CC

 

Для загрузки и исполнения программы откройте программу VMLAB. Если программа не установлена, то установите ее на диск D: в папку VMLAB. Инсталляция находится на “D:\Комплект_по_МП-технике\К лаб работе №1”. Кроме того, в вашу личную папку сбросьте папку проекта с именем My_z3.

После запуска программы VMLAB откройте проект с которым будем работать: Project – Open Project – E:\ES07a\Петров\My_z3\vmlab.

Закройте в программе все окна кроме Registers и Program Memory.

Если эти окна тоже оказались закрыты, то откройте их через меню View.

Затем выполните операцию Project – Re-build all. В окне Program Memory появятся коды и текст загруженной программы на языке ассемблера.

Чтобы выполнить первую команду этой программы, нажмите F6. При этом вы увидите, как в окне Program Memory выделенная строка переместилась на следующую команду, а в окне Registers изменилось содержимое регистров в соответствии с выполненным действием. Прошагайте несколько команд, отслеживая их воздействие на регистры, чтобы научиться работать в VMLAB. Закройте проект Project – Close Project.

Для загрузки в программу проекта полученных вами кодов команд, откройте файл E:\ES07a\Петров\My_z3\main..hex в блокноте. Вы увидите следующий текст:

:0800000013C0FECFFDCFFCCFC1

:10000800FBCFFACFF9CFF8CFF7CFF6CFF5CFF4CFB4

:10001800F3CFF2CFF1CFF0CFEFCFEECFEDCF00009F

:1000280001e0402E342c33943394832C3394532CCE

:10003800330C632c650c782c770c0018111816E01C

:10004800f0E0E3E0A0800A0CE3951394012D011BBE

:10005800CCF30000000061F0A591B59105901590BE

где после кода 0000 (отмечен голубым цветом), находится код первой команды программы e001, только байты e0 и 01 переставлены местами. Это выполнено по причине существования правила: “Число в памяти расположено так, что младший байт хранится по младшему адресу ”. В конце каждой строки находится два служебных символа, которые к программе не относятся (отмечены желтым цветом). Найдите в этом тексте коды остальных команд из программы табл.1.2. Разобравшись с размещением кодов программы приведенного выше примера, впишите на эти места коды вашей программы. При вставке кодов замещайте ими существующие символы так, чтобы служебные байты, отмеченные желтым цветом, не изменяли своего положения. Закройте файл с сохранением и заново откройте проект в VMLAB. Выполните вашу программу и проконтролируйте правильность результатов на каждом шаге, в том числе правильность найденной в цикле суммы регистров.

Отчет должен содержать задание, схему расположения регистров, использующихся в программе, значения, полученные в регистрах в результате выполнения программы, таблицу 1.2 с кодами вашей программы и содержимое файла main.hex.

Контрольные вопросы:

1. Где хранится программа на ПК и на МК Atmega?

2. В каком виде хранится программа?

3. Где хранятся данные на ПК и на МК Atmega?

4. В каком виде хранятся данные?

5. Какие этапы обработки проходит программа от рукописного текста до выполнения?

6. Как обычно получают коды команд программы?

7. В чем состоит адресный принцип построения архитектуры компьютера?

8. В чем состоит принцип автоматизма?

9. Приведите примеры применения переадресации.

10. Написать программу из 3-7 операторов языка Ассемблера по заданию преподавателя.

11. Закодировать команду из таблицы 1.1 по заданию преподавателя.

 

 

Лабораторная работа №2 – Работа в CodeVision AVR. Разработка и выполнение простейшей программы

 




Поделиться с друзьями:


Дата добавления: 2014-12-23; Просмотров: 764; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.023 сек.