Skip to content

Instantly share code, notes, and snippets.

@kmjayadeep
Created December 1, 2016 16:52
Show Gist options
  • Save kmjayadeep/d2827bba5b7158de15da9b929e5ca232 to your computer and use it in GitHub Desktop.
Save kmjayadeep/d2827bba5b7158de15da9b929e5ca232 to your computer and use it in GitHub Desktop.
chi x*x+y*y-x*y 16bit in 8051
;inputs
mov dptr,#0
movx a,@dptr
mov r0,a
inc dptr
movx a,@dptr
mov r1,a
inc dptr
movx a,@dptr
mov r2,a
inc dptr
movx a,@dptr
mov r3,a
;x*x
mov 30h,r0
mov 31h,r1
mov 32h,r0
mov 33h,r1
call mul
;move x*x
mov 20h,#0
mov 21h,40h
mov 22h,41h
mov 23h,42h
mov 24h,43h
;y*y
mov 30h,r2
mov 31h,r3
mov 32h,r2
mov 33h,r3
call mul
;add to prev
mov a,24h
add a,43h
mov 24h,a
mov a,23h
addc a,42h
mov 23h,a
mov a,22h
addc a,41h
mov 22h,a
mov a,21h
addc a,40h
mov 21h,a
mov a,#0
addc a,20h
mov 20h,a
;x*y
mov 30h,r0
mov 31h,r1
mov 32h,r2
mov 33h,r3
call mul
;sub
clr c
mov a,24h
subb a,43h
mov 24h,a
mov a,23h
subb a,42h
mov 23h,a
mov a,22h
subb a,41h
mov 22h,a
mov a,21h
subb a,40h
mov 21h,a
mov a,#0
subb a,20h
mov 20h,a
endp:
sjmp endp
mul:
;clear
mov 40h,#0
mov 41h,#0
mov 42h,#0
mov 43h,#0
;last two bytes
mov a,31h
mov b,33h
mul ab
mov 43h,a
mov 42h,b
;first two bytes
mov a,30h
mov b,32h
mul ab
mov 41h,a
mov 40h,b
;x2*y1
mov a,31h
mov b,32h
mul ab
add a,42h
mov 42h,a
mov a,b
addc a,41h
mov 41h,a
;x1*y2
mov a,30h
mov b,33h
mul ab
add a,42h
mov 42h,a
mov a,b
addc a,41h
mov 41h,a
mov a,#0
addc a,40h
mov 40h,a
ret
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment