Jeśli chcesz wziąć udział w dyskusjach na forum - zaloguj się. Jeżeli nie masz loginu - poproś o członkostwo.
Vanilla 1.1.4 jest produktem Lussumo. Więcej informacji: Dokumentacja, Forum.
; Multiply two 16-bit values stored at addresses $0100 and $0102,
; and store the result at addresses $0104 and $0106
; Load the lower byte of the multiplicand into the accumulator
LDA $0100
; Load the upper byte of the multiplicand into the X register
LDA $0101, X
STA $0105, X
; Load the lower byte of the multiplier into the Y register
LDA $0102
STA $0106
; Clear the carry flag
CLC
; Loop to multiply the values bit by bit
mult_loop:
; Shift the accumulator left one bit
ASL A
; Shift the X register left one bit
ROL $0105, X
; Check if the least significant bit of the Y register is 0
BCC skip_add
; Add the accumulator to the X register
ADC $0105, X
; Add the carry flag to the Y register
ADC $0106
skip_add:
; Shift the Y register left one bit
ASL $0106
; Repeat the loop 6 times
BNE mult_loop
; The result is stored in the X and Y registers
STA $0104
STA $0105, X