mov #0x0260,r5
mov #0x0270,r6
Loop:
cmp #0,@r5
jz End
mov @r5,@r6
incd r5
incd r6
jmp Loop
End:
mov #0x01,&0x22
mov #0x01,&0x21
This code demonstrates a simple implementation of 'strcpy' in msp430 assembly code. The first string is present in the location 0x0260. It is to be copied to another memory location starting from 0x0270. The RAM area of MSP430G2231 lies in the range 0x0200 to 0x027F.
Whats worth noticing is the ease with which some operations are defined which are otherwise very difficult in other assembly codes.
The program exits gracefully by lighting the red led, after successfully copying the string.
Notations
# - This symbol is used to indicate a pure number. The
number can be an integer, in binary or a
hexadecimal.
For example, "mov #0x0260,r5" will move the hex
number 0260 to register r5.
@ - It can happen that, the data stored in a register is
the address of another memory location. The actual
value inside this address can be accessed by using
the '@' symbol. When '@' is used, the value in a
register is interpreted to be the address of a memory
location, and the actual data present in this location
is fetched.
The line "cmp #0,@r5" compares the number 0 with
the data in the memory location pointed to by the
value of r5.
& - When the address of a location is to be used directly,
the '&' symbol is used. If not, the address is
interpreted as just a number, thereby generating errors.
Notable Feature
@ and again @
The line "mov @r5,@r6" is simple, sleek, easy-to-understand, self explanatory and normally illegal in other assembly languages.
Technically, the '@' operation is emulated for the destination part. The "mov @r5,@r6" line will be changed to "mov @r5,0x0(r6)" after running msp430-gcc.
Conclusion
The MSP-EXP430G2 Launchpad (TI) for the MSP430 family |
Coding in MSP430 family is fun!
No comments:
Post a Comment