Скачиваний:
27
Добавлен:
15.09.2014
Размер:
26.62 Кб
Скачать

SEG0 EQU $B800 адрес 1го сегмета

SEG1 EQU $B801 2й

SEG2 EQU $B802 3й

SEG3 EQU $B803 4й

PORTINF EQU $1030 Флаг ADCTL

PORT1 EQU $1031 adr1

PORT2 EQU $1032 adr2

PORT3 EQU $1033 adr3

BEG_ADR EQU $7000 начало ОЗУ

END_ADR EQU $B3FF конец ОЗУ

CUR_ADR FDB #$0000 текущий адрес

X1 FCB #$00 хранение х1

X2 FCB #$00 -//- х2

X3 FCB #$00 -//- х3

XKUB FDB #$0000 х3 ^ 3

XKV FDB #$0000 x1 ^ 2

Y_INT FDB #$0000 целая часть

Y_DEC FDB #$0000 дробная

MAXVAL FDB #$FFFF макс. значение

ORG $2000

LDAA PORTINF Текущие настройки порта Е

ANDAA $CF MULT=0, SCAN=0

ORAA $10 MULT=1

STAA PORTINF Установка флага

BEGIN:

LDD BEG_ADR В регистр D начальный адрес

L1: STD CUR_ADR сохранить тек. адрес

CPD END_ADD если адрес конечный

BHI BEGIN обновляем адрес

JSR GETVALUE получить значения

JSR SAVEMEM сохранить в памяти

JSR SAVEDIOD вывести на сегменты

LDD CUR_ADR D=тек. адрес

JMP L1

GETVALUE:

LDAA PORTINF Тек. настройки порта

ANDAA 128 проверка бита SPIF

BEQ GETVALUE если ноль, ждем…

LDAA PORT1 А из 1го порта

STAA X1 сохранить

LDAA PORT2 А из 2го порта

STAA X2 сохранить

LDAA PORT3 А из третьего порта

STAA X3 сохранить

GETY:

INCA A+1

DECA A-1

BEQ ERRVAL

LDAB X3 B=A

PSHB В в стек

MUL D=A*B (x3*x3)

PULB В из стека

MUL D=A*B (x3*x3*x3)

STD XKUB сохранить D

LDAA X1 А=Х1

LDAB X1 В=Х1

MUL D=A*B

STD XKV сохранить D

ADDD X2 D=D+x2

LDX XKUB IX=x1^2

IDIV D/IX

STX Y_INT сохранить IX (целая часть)

STD Y_DEC сохранить D (дробная часть)

RTS

SAVEMEM:

LDX Y_INT IX = целая часть

LDD Y_DEC D = дробная

STX CUR_ADR сохранить в ОЗУ IX

INC CUR_ADR адрес+2

INC CUR_ADR

STD CUR_ADR сохранить в ОЗУ D

INC CUR_ADR адрес+2

INC CUR_ADR

RTS

SAVEDIOD:

LDD Y_INT D=целая часть (а младший, в-старший)

STA SEG0 А на 1й сегмент

STB SEG1 В на 2й

LDD Y_DEC D=дробная часть

STA SEG2 А на 3й сегмент

STB SEG3 В на 4й

RTS

Соседние файлы в папке КР по АВМИC