Автор Тема: 16-bit умножение и деление  (Прочитано 697 раз)

Оффлайн BRE

  • Newbie
  • *
  • Сообщений: 16
  • Karma: +3/-0
    • Просмотр профиля
16-bit умножение и деление
« : Апрель 02, 2013, 01:30:13 pm »
;------------------------
; 16-bit Multiply routine
; ACC*AUX -> [ACC,EXT] (low,hi) 32-bit result
MULT LDA #0
STA EXT+1
LDY #$11
]LOOP LSR EXT+1
ROR
ROR ACC+1
ROR ACC
BCC MUL2
CLC
ADC AUX
PHA
LDA AUX+1
ADC EXT+1
STA EXT+1
PLA
MUL2 DEY
BNE ]LOOP
STA EXT
RTS

;------------------------
; Divide routine
; ACC/AUX -> ACC, remainder in EXT
DIV LDA #0
STA EXT+1
LDY #$10
]LOOP ASL ACC
ROL ACC+1
ROL
ROL EXT+1
PHA
CMP AUX
LDA EXT+1
SBC AUX+1
BCC DIV2
STA EXT+1
PLA
SBC AUX
PHA
INC ACC
DIV2 PLA
DEY
BNE ]LOOP
STA EXT
RTS