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

II. Обращение к памяти программ.



Читайте также:
  1. I. Апостол Павел пред своим обращением
  2. I. Этап «Военно-интеллектуальный - 1914». Посвящен памяти русских солдат участников Первой мировой войны 1914-1918 годов.
  3. II. Обращение
  4. Алгоритмы распределения памяти
  5. ВЕКСЛЕРА ПАМЯТИ ШКАЛА
  6. Виды памяти

1. Часто необходимо иметь в памяти программ таблицы готовых решений. Для возможности работы с такими таблицами, хранящимися в резидентной памяти программ (РПП) и внешней памяти программ (ВПП), имеются специальные команды обращения к памяти – MOVC. Поясним использование этих команд на следующем примере. Требуется составить подпрограмму вычисления синуса угла Х (00<X<890 с дискретностью 10). Наиболее быстрое вычисление функции можно получить путем выборки готового значения синуса из таблицы. Такая таблица для диапазона 00 - 890 займет 90 байтов с погрешностью 0,4%. Исходным параметром для подпрограммы служит значение угла Х, находящееся в аккумуляторе:

; Вычисления Sin(x) по таблице

; Вход: В (А) – X в пределах от 0 до 89 градусов

; Выход: (А) – дробная часть значения синуса

 

SINX: INC A; Инкремент аккумулятора

MOVC A,@A+PC; Загрузка значения синуса из таблицы

RET; Возврат

 

; Таблица значений синуса

SINUS: DB 0; SIN(0)=0

DB 00000100B; SIN(1)=0.017

DB 00001001B; SIN(2)=0.035

DB 11111111B; SIN(89)=0.999

Примечательно, что данная программа обходится без использования указателя данных DPTR. Инкремент А перед обращением к таблице необходим из-за наличия однобайтной команды возврата, расположенной между командой MOVC и началом таблицы значений синуса.

Вычислить произведение двух 4-х битных чисел, расположенных в младших тетрадах регистров R0 и R1. Для вычисления используется таблица произведений для всех комбинаций сомножителей (всего 256). Произведение двух младших тетрад имеет формат 1 байт.

 

; Вычисление Z=X*Y

; R0=0000.XXXX

; R1=0000.YYYY

; X и Y принимают значения 0 и 1

 

ORG 0C100H; Директива ассемблера, задающая

; начальный адрес программы

MOV DPTR, #MAS; Загрузка адреса массива

; в регистр-указатель данных

MOV A,R0; Пересылка множимого в аккумулятор

SWAP A; Обмен тетрад аккумулятора

ORL A,R1; Формирование в аккумуляторе адреса

; произведения

MOVC A,@A+DPTR; Загрузка в аккумулятор произведения

ORG 0C300H; Директива ассемблера, задающая

; начальный адрес таблицы

 

; Директивы ассемблера, формирующие таблицу произведений

MAS DB 0,0,0,0,0,0,0,0; Z=0*Y

DB 0,0,0,0,0,0,0,0

DB 0,1,2,…..,0FH; Z=1*Y (1*0,1*1,1*2,…,1*0FH)

DB 0,0FH,1EH,…,0E1; Z=0F*Y

; (0FH*0,0FH*1,0FH*2,…,0FH*0FH)

 


Дата добавления: 2015-07-11; просмотров: 238 | Нарушение авторских прав






mybiblioteka.su - 2015-2024 год. (0.008 сек.)