1. How do I make programs show numbers using different formats?
The Str function converts numbers to strings. This function allows field widths, left and
right justification and display of real numbers in exponential format. If leading zeroes are
required, Str can be used with a fieldwidth of one to ensure there are no leading or
trailing spaces, then the resulting string can have leading "0" chars attached to the start of the
string.
2. How do I get the Hi/Lo bytes or words from integers?
For most programming purposes this is not required, since it involves splitting integers into
two words or four bytes, and a knowledge of binary becomes important. If you need to do this, first
bear in mind that integers are stored in 4 bytes (-2,147,483,648 to +2,147,483,647), words are
stored in two bytes (0 to 65,535) and a single byte stores eight binary bits (0 to 255). Thus an
integer consists of two words (a high and a low word) and words consist of two bytes (a high and a
low byte). Words and bytes are obtained as follows:
Description |
Function name |
Details |
High Byte from a Word |
Hibyte |
Get the high byte from a word value. For example Hibyte(0xFF77) returns 0xFF. |
High Word from an Integer |
Hiword |
Get the high word from an integer value. For example Hiword(0x7FFF3333) returns 0x7FFF. |
Low Byte from a Word |
Lobyte |
Get the low byte from a word value. For example Lobyte(0xFF77) returns 0x77. |
Low Word from an Integer |
Loword |
Get the low word from an integer value. For example Loword(0x7FFF3333) returns 0x3333. |
To join two bytes to make a word value, the high byte is shifted to the left by 8 bits
(equivalent to multiplying by 0x100 or 256), and the low byte is then added. The following code can
be used:
WordValue <- (byteHi * 256) + byteLo
To join two words to make an integer value, the high word is shifted to the left by 16 bits
(equivalent to multiplying by 0x10000 or 65536), and the low word is then added. The following code
can be used:
IntegerValue <- (wordHi * 65536) + wordLo
Bear in mind that Ubercode uses signed integers. Therefore integers between 0x00000000 and
0x7FFFFFFF are greater than or equal to zero (0 to +2,147,483,647), and integers between 0x80000000
and 0xFFFFFFFF are negative values (-2,147,483,648 to -1).
|