
Written an assembly code to calculate a square root of a number, and simulated on Motorola 68HC12 microcontroller simulator.
Org $0800
TopOfProgram:
lds #$0a00
ldx #16
ldy #OutputTable
ldd #0
std TestValue
MainLoop:
jsr Sqrt
std 2,y+
ldd TestValue
addd #4096
std TestValue
dbne x,MainLoop
BreakPoint: bra *
TestValue: dc.w 0
***************************************************
Sqrt:
pshy
std Input
ldd #$8000
std Result
std Size
Loop:
ldd Result
tfr d,y
emul
Diamond:
cpy Input
blo NextSize
bne LowerResult
cpd #0
beq NextSize
LowerResult:
ldd Result
subd Size
std Result
NextSize:
lsr Size
ror Size+1
UpdateResult:
ldd Result
addd Size
std Result
LastDiamond:
ldd Size
bne Loop
ReturnResult:
ldd Result
puly
rts
***************************************************
ORG $0900
OutputTable: dc.w 0,0,0,0,0,0,0,0
dc.w 0,0,0,0,0,0,0,0
***************************************************
Input: dc.w 0
Result: dc.w 0
size: dc.w 0
***************************************************
댓글 없음:
댓글 쓰기