Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ;programme multiplying 2-byte numbers without signs
- ; numbers are stored in internal data memory
- ; result is stored in registers R7..R4 (R4-LSB)
- N1 equ 28h
- N2 equ 30h
- mov N1,#low(2000)
- mov N1+1,#high(2000)
- mov N2,#low(3000)
- mov N2+1,#high(3000)
- mov a,N1 ;A <-LSB(numb1)
- mov b,N2 ;B <-LSB(numb2)
- mul ab ;BA := product
- ;storing results
- mov r4,a
- mov r5,b
- mov a,N1+1 ;A <-MSB(numb2)
- mov b,N2+1 ;B <-MSB(numb2)
- mul ab ;BA := product
- ;storing results
- mov r6,a
- mov r7,b
- mov a,N1 ;A <-lSB(numb2)
- mov b,N2+1 ;B <-MSB(numb2)
- mul ab ;BA := product
- ;adding results to r7..r5
- add a,r5
- mov r5,a
- mov a,b
- addc a,r6
- mov r6,a
- clr a
- addc a,r7 ;updating R7 with possible overflow
- mov r7,a
- mov a,N1+1 ;A <-MSB(numb2)
- mov b,N2 ;B <-LSB(numb2)
- mul ab ;BA := product
- ;adding results to r7..r5
- add a,r5
- mov r5,a
- mov a,b
- addc a,r6
- mov r6,a
- clr a
- addc a,r7 ;updating R7 with possible overflow
- mov r7,a
- sjmp $
- end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement