This page describes the 8051 registers, but the whole site is pretty good too.
http://www.8052.com/tutbregs.phtml#R%20Registers
The MUL?xxx macro usually has 3 paramaters, the third one is the result of multiplying the first two.
For instance, if you had the following variables ...
Code:
A VAR BYTE
B VAR BYTE
Y VAR BYTE
Z VAR WORD
THEN ...
Code:
this ASM macro is same as this PBP statement
--------------------- -------------------------
MUL?BBB _A, _B, _Y Y = A * B
MUL?BBW _A, _B, _Z Z = A * B
MUL?BWW _A, _Z, _Z Z = A * Z
And, you can see that often it's easier to just jump out of ASM and handle it in Basic.
------------------
If you do use the MUL? macros, there's something else you have to do to get them to work. Since, they are from the PBPPIC14.MAC file, they don't automaticaly get included with the project. So you have to Trick PBP into thinking it needs those macros.
This bit of code doesn't use any Program space since the ifdef keeps it from being compiled. But PBP sees the statements and includes any macros that are associated with them.
Code:
@ ifdef DoNotCompile ' Macro to include
R0.LowByte = R0.LowByte * R0.LowByte ' MUL?BBB
R0 = R0.LowByte * R0.LowByte ' MUL?BBW
R0 = R0.LowByte * R0 ' MUL?BWW
@ endif
But then, If you do it in Basic, you don't have to worry about it.
Merry X-Mas,
Darrel
Bookmarks