Guest User

Untitled

a guest
Jan 21st, 2019
93
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1.     org $c000
  2.     REGBAS EQU $1000 * Стартовый адрес блока регистров
  3. TCNT  EQU $0E *Счетчик (16-бит)
  4. TOC1  EQU $16 *OC1 регистр (16-бит)
  5. TFLG1 EQU $23
  6. OC1F  EQU $80
  7. PPROG  EQU $103b
  8. *Начало лаб1
  9. a equ 255
  10. b equ 255
  11. c equ 5
  12. d equ 3
  13.  ldaa #a
  14.  ldab #a
  15.  mul * (a*a) -> a^2 == d
  16.  staa resa * save result high part in resa
  17.  stab resb * save result low part in resa
  18.  clra * clear a
  19.  ldaa #a
  20.  mul * (resb * a)->1. low and first part of middle of result == (a*a*a)
  21.  stab resQubeLow
  22.  staa resQubeMid
  23.  ldaa resa * load in A register high part of expression (a*a)
  24.  ldab #a * load in B register
  25.  mul * (resa * a) ->2. high and second part of middle of result ==
  26.  staa resQubeHigh * save high part of result
  27.  ldaa resQubeMid * load first part of middle of result
  28.  aba * adding first and second middle part
  29.  staa resQubeMid * complite Qube(a*a*a) expression
  30.  ldaa resQubeLow
  31.  ldab #b
  32.  aba
  33.  staa resQubeLow
  34.  ldaa resQubeMid
  35.  adca resBuf *resBuf equal Null
  36.  staa resQubeMid * Step 1. resQubeHigh + resQubeMid + resQubeLow equal (a^3 + b)
  37.  ldaa #d * load 2 expression (b - 2)
  38.  staa resBuf
  39.  ldaa #b
  40.  suba resBuf
  41.  staa resB_sub_2 * Step 2. resB_sub_2 equal paramTwo (a^3 + b)/param2 - (a+c)
  42.  clra
  43.  clrb
  44.  ldab #a
  45.  addd #c
  46.  std resA_add_C * Step 3. resA_add_C equal paramThree (a^3+b)/(b-2) - param3
  47.  clra
  48.  ldab resB_sub_2
  49.  xgdx
  50.  clra
  51.  ldab resQubeHigh
  52.  idiv
  53.  xgdx
  54.  stab resQubeHigh
  55.  xgdx
  56.  tba
  57.  ldab resQubeMid
  58.  std resDivision
  59.  clra
  60.  ldab resB_sub_2
  61.  xgdx
  62.  ldd resDivision
  63.  idiv
  64.  xgdx
  65.  stab resQubeMid
  66.  xgdx
  67.  tba
  68.  ldab resQubeLow
  69.  std resDivision
  70.  clra
  71.  ldab resB_sub_2
  72.  xgdx
  73.  ldd resDivision
  74.  idiv
  75.  xgdx
  76.  stab resQubeLow
  77.  ldaa resQubeMid
  78.  ldab resQubeLow
  79.  subd resA_add_C
  80.  staa resQubeMid
  81.  stab resQubeLow
  82. *Конец лаб1
  83. memory:  STD XW
  84.     LDY #$b600 *Очистка памяти(четных строк)
  85.     LDAA #%00000110
  86.     STAA PPROG
  87.     STAB 0,Y
  88.     LDAA #%00010111
  89.     STAA PPROG 
  90.     JSR DLY10
  91.     CLR PPROG
  92.    
  93.     LDY #$b610 *Очистка памяти(нечетных строк)
  94.     LDAA #%00000110
  95.     STAA PPROG
  96.     STAB 0,Y
  97.     LDAA #%00010111
  98.     STAA PPROG
  99.     JSR DLY10
  100.     CLR PPROG
  101. *Запись остатка
  102.     LDD XW
  103.     LDY #$b600 *Адрес программируемого байта
  104.     LDAA #%000100010 *Конфигурация регистра PPROG
  105.     STAA $103B *Программирования регистра PPROG
  106.     STD 0,Y *Запись байта по адресу программируемого байта
  107.     LDAA #%00000011
  108.     STAA $103B *Подача напряжения программирования
  109.     JSR DLY10 *Вызов процедуры задержки на 10 мс
  110.     CLR $103B * Выключение высокого напряжения программирования
  111. INITDELAY LDY #REGBAS Указатель на блок регистров
  112.     LDAA #$80
  113.     STAA TFLG1,Y
  114.     RTS
  115. DLY10 JSR INITDELAY *Вызов процедуры инициализации
  116.     LDD TCNT,Y
  117.     ADDD #20000
  118.     STD TOC1,Y
  119. LP1 BRCLR TFLG1,Y OC1F LP1
  120.     RTS
  121. XW FCC "00"
  122. resa zmb 1
  123. resb zmb 1
  124. resBuf zmb 1
  125.  
  126. resB_sub_2 zmb 2
  127. resA_add_C zmb 2
  128. resQubeLow zmb 1
  129. resQubeMid zmb 1
  130. resQubeHigh zmb 1
  131. resDivision zmb 2
Add Comment
Please, Sign In to add comment