Студопедия

Главная страница Случайная страница

Разделы сайта

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






Подпрограмму через общие регистры






Ячейка памяти Команда на машин ном язык Команда в символической форме Комментарий
.........
    LDR 0 Загрузка первого аргумента в регистр D
       
       
  0D MOV 0 to D  
    LDR 0 Загрузка второго аргумента в регистр Е
       
       
  MOV 0 to E  
  7F JMS Переход на подпрограмму в ячейке 9000
       
002А      
002В Точка возврата из подпрограммы.
.........

 

Предполага­ется, что аргументы находились в ячейках памяти 8000 и 8050. Глав­ная программа загружает их в общие регистры D и Е, после чего пере­дает управление на подпрограмму в ячейке 9000 с помощью команды «переход на подпрограмму».

Если нужные подпрограмме аргументы находятся в последователь­ных ячейках памяти, в главной программе перед переходом на под­программу можно загрузить в регистры Н и L (или в любую другую пару общих регистров) адрес первого аргумента. Ответственность за выборку аргументов возлагается при этом на подпрограмму. Достоинство этого способа в том, что не нужно загружать сразу все аргументы в регистры — программа будет выбирать из их памяти по мере необходи­мости. Такой подход, очевидно, предпочтительнее, когда число аргу­ментов превышает число свободных общих регистров. Кроме того, этот подход решает проблему обратной передачи результатов. Например, достаточно под результаты зарезервировать часть списка аргументов.

В рассмотренном случае главная программа загружала в регистры Н и L адрес первого аргумента и тем самым передавала в подпрограмму список аргументов. Возможен вариант, когда главная программа передает в подпрограмму не список самих аргументов, а список адресов аргументов. В этом случае в регистры Н и L загружается адрес первого адреса в списке адресов аргументов. Таким образом, чтобы получить аргумент, подпрограмма должна сначала получить адрес из списка адресов, а уже затем сам аргумент. Этот способ обладает тем преимуществом, что аргументы не обязательно должны располагаться в последовательных ячейках памяти, а могут быть разбросаны про­извольным образом.

 

 

Сложение с п -кратной точностью

 

Большинство современных микрокомпьютеров работает со словами длиной 8 бит. Очевидно, что для многих задач такая точность недостаточна, и, следовательно, нужны средства для представления чисел с более высокой точностью. Очевидный спо­соб — это представлять одно число двумя или большим количеством слов. Такие числа можно хранить в последовательных ячейках памя­ти или в последовательных общих регистрах. Будем называть их чис­лами n - кратной точности. Проблема тогда сведется к выполнению ариф­метических действий над числами n -кратной точности с помощью команд, работающих с данными размером в одно слово. Наличие команд «сложения/вычитания с переносом» значительно упрощает ре­ализацию сложения и вычитания над числами n-кратной точности.

Процедуру сложения чисел без знаков с двойной точностью можно реализовать, например, следующим образом. Младшие слова двух чисел складываются без начального переноса, при этом получается младшее слово суммы и итоговый перенос из старшего разряда. Старшие слова двух чисел складываются вместе с входным переносом, ко­торый равен итоговому переносу, полученному при сложении млад­ших слов. Окончательный результат, т. е. сумма, — это число с двой­ной точностью и итоговый перенос. В виде блок-схемы эта процедура представлена на рис. 18.

В табл. 6 показана подпрограмма, реализующая эту процедуру. Исходные числа с двойной точностью обозначены через X и Y, а сум­ма — через S. Предполагается, что общие регистры 1 и 2 содержат соот­ветственно старшую и младшую части X (обозначенные как Хн и XL), а регистры 3 и 4 — старшую и младшую части Y (обозначенные как yh и yl). Старшая и младшая части суммы должны быть поме­щены в регистры 5 и 6 соответственно.

Таблица 5.6






© 2023 :: MyLektsii.ru :: Мои Лекции
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
Копирование текстов разрешено только с указанием индексируемой ссылки на источник.