Главная страница Комод Кухня Компьютерный стол Плетеная мебель Японский стиль Литература
Главная  Кремниевые микросхемы 

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 [ 52 ] 53 54 55 56 57 58 59 60

BRANCH ON NOT ZERO (ПЕРЕХОД ПО HE НУЛЮ). Эти команды записывают в счетчик команд определенные значения либо безусловно, либо при условии наличия нулевого или ненулевого значения соответственно в зависимости от того, установлен флаг нуля или нет.

Мнемокоды и символическое представление операций для этих команд выглядит следующим образом:

Команда Мнемокод

BRANCH UNCONDITIONAL BR

BRANCH ON ZERO BRZ

BRANCH ON NOT ZERO BRNZ

Символическое описание

Если флаг нуля установлен РС-> * * * * Если флаг нуля не установлен РС-> * * * *

Здесь

адрес, указанный после кода операции, а

PC - обозначение счетчика команд.

Посмотрим, можно ли воплотить приведенную на рис. 11 2 схему алгоритма сложения первых 200 чисел в програм.му. При одинарной точности арифметических вычислений это было бы сделать трудно, так как ответ (20100io) больше максимального двоичного числа без знака, которое можно разместить в 8-разрядном регистре. Поскольку эта программа интересует нас только в качестве примера того, как можно перейти от схемы алгоритма к распечатке (листингу - listing) машинных команд в шестнадцатеричном коде, чтобы затем проанализировать, как эти команды реализуются в микро-ЭВМ, сохраним этот простой пример выполнения программы арифметического сложения, но складывать будем не все 200 чисел, а только первые 20. В этом случае полученный ответ уместится в 8-разрядном регистре как число без знака (число без знака означает, что можно не заботиться об использовании седьмого двоичного разряда для указания на то, положительное или отрицательное число получено в результате, т. е, содержимое


С Stop )

Рис. 11.3. Схема алгоритма сложения первых двадцати чисел



седьмого разряда может служить частью модуля числа). Схема алгоритма сложения первых 20 целых чисел приведена на рис. 11.3.

Представленная списком команд, подобных тем, которые использовались в гл. 3 при описании образной модели стеллажной микро-ЭВМ, программа будет иметь следующий вид:

Адрес Команда

000 LOAD

001 ADD без переноса

002 STORE

003 LOAD

004 INC аккумулятор

005 STORE

006 СОМР аккумулятора

007 INC аккумулятор

008 ADD без переноса

009 BRANCH ON NOT

ZERO

010 STOP

100 Эта ячейка загружена числом 21

101 Эта ячейка загружена начальным значением N(N - 0)

102 Эта ячейка загружена начальным значением S(S = 0)

Аргумент

101 102 102 101

100 ООО

Комментарий

Вычислить N Новое S = S-f N Запомнить новое S Вычислить N Новое N = N-H Запомнить новое N

Дополнительный код нового N

21 - новое N Цикл до выполнения условия

Команды о печати результата решения задачи нет. После прохождения программы ответом будет содержимое ячейки 102 (рис. 11.4).

Эта программа на языке ассемблера выглядела бы следующим образом-

Метка START

Мнемокод

Api умеит

ST 4

BP NZ,

START

Адреса ячеек 100, 101 и 102 имеют отношение только к модели воображаемой стеллажьой микро-ЭВМ. Что же касается любого реального микропроцессора, то для его программирования пользуются символическими адре-




oas\agr] 0021 003 \ oat j oos \ oos \ 007] m \ m \ ow Рис. 11.4. Модель памяти в виде стеллажа

сами. Вместо конкретных чисел принято указывать название символических адресов, поэтому окончательная

Метка .Мнемокод ялпйс Комнетарий

Вычислить N Новое S = S + N Запомнить новое S Вычислить N Новое N=N+1 Запомнить новое N

Дополнительный код N

21 - новое N Возврат к началу (STAR Г) Стоп

Как перевести программу на языке ассемблера в программу в шестнадцатеричных кодах?

Для этого прежде всего потребуется список шестнадцатеричных кодов операций воображаемого микропроцессора:

Л1немокод КОД операции

LDA AD

ADD 6D

STA 8D

BR NZ 28

.Мнемокод

Символический

адрес

LDA,

NUM STORE

ADD,

SUM STORE

STA,

SU.M STORE

LDA,

NUM STORE

STA,

NUVl STORE

COMP

ADD,

KEY STORE

BR NZ,

START

Это трехбайтные команды, где ** ** - адрес в памяти, откуда выбираются или где хранятся данные.



1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 [ 52 ] 53 54 55 56 57 58 59 60

© 2007 EPM-IBF.RU
Копирование материалов разрешено в случае наличия письменного разрешения