Quiz 6.3: Difference between revisions
No edit summary |
No edit summary |
||
Line 1: | Line 1: | ||
Sections start their location counters at zero. The .bss directives don't advance the counter, because they go off to a different section. Assembly instructions take up bytes of memory according to what they are and their addressing mode. Whenever a .sect happens the location counter is reset to zero. There is more in section 2 of this [http://www.ti.com/lit/ug/slau131m/slau131m.pdf TI Manual on the Assembler]. This quiz is more tailored to understanding the Assembly List file, that has a field for the location counter. Code Composer Studio doesn't generate this by default anymore. It is good to look at though. I wasn't able to correctly get the location counter values correct without the compiler's help. Fortunately |
Sections start their location counters at zero. The .bss directives don't advance the counter, because they go off to a different section. Assembly instructions take up bytes of memory according to what they are and their addressing mode. Whenever a .sect happens the location counter is reset to zero. There is more in section 2 of this [http://www.ti.com/lit/ug/slau131m/slau131m.pdf TI Manual on the Assembler]. This quiz is more tailored to understanding the Assembly List file, that has a field for the location counter. Code Composer Studio doesn't generate this by default anymore. It is good to look at though. I wasn't able to correctly get the location counter values correct without the compiler's help, and I'm impressed if you got them. Fortunately we can still get it to make an assembly listing for us. |
||
To get the Assembly List file, go into the Build Settings->Build->Advanced Options->Assembler, and tick the Generate listing file box. |
|||
[[File:assembly-listing-option.png]] |
[[File:assembly-listing-option.png]] |
||
Here is the listing file I got using the MSP430G2553 processor. |
|||
<nowiki>MSP430 Assembler Unix v15.12.3 Tue Nov 1 17:48:13 2016 |
<nowiki>MSP430 Assembler Unix v15.12.3 Tue Nov 1 17:48:13 2016 |
||
Tools Copyright (c) 2003-2015 Texas Instruments Incorporated |
Tools Copyright (c) 2003-2015 Texas Instruments Incorporated |
||
../main.asm |
../main.asm |
||
PAGE 1 |
|||
1 .cdecls C,"msp430.h" ; include c header |
1 .cdecls C,"msp430.h" ; include c header |
||
Line 39: | Line 41: | ||
</nowiki> |
</nowiki> |
||
The second column of numbers is the location counter. |
Revision as of 17:02, 1 November 2016
Sections start their location counters at zero. The .bss directives don't advance the counter, because they go off to a different section. Assembly instructions take up bytes of memory according to what they are and their addressing mode. Whenever a .sect happens the location counter is reset to zero. There is more in section 2 of this TI Manual on the Assembler. This quiz is more tailored to understanding the Assembly List file, that has a field for the location counter. Code Composer Studio doesn't generate this by default anymore. It is good to look at though. I wasn't able to correctly get the location counter values correct without the compiler's help, and I'm impressed if you got them. Fortunately we can still get it to make an assembly listing for us.
To get the Assembly List file, go into the Build Settings->Build->Advanced Options->Assembler, and tick the Generate listing file box. Here is the listing file I got using the MSP430G2553 processor.
MSP430 Assembler Unix v15.12.3 Tue Nov 1 17:48:13 2016 Tools Copyright (c) 2003-2015 Texas Instruments Incorporated ../main.asm PAGE 1 1 .cdecls C,"msp430.h" ; include c header 2 000000 .bss cnt,2 ; WDT second counter 3 000002 .bss cat,4 4 000000 .text ; program section 5 000000 4031 start: mov.w #0x0400,SP ; set stack pointer 000002 0400 6 000004 40B2 mov.w #0x5a18,&WDTCTL ; set WD timer interval 000006 5A18 000008 0000! 7 00000a 40B2 mov.w #0x00fa,&cnt ; 1 sec WD counter 00000c 00FA 00000e 0000! 8 000010 43D2 mov.b #0x01,&IE1 ; enable WDT interrupt 000012 0000! 9 000014 D3D2 bis.b #0x01,&P1DIR ; P1.0 output 000016 0000! 10 000018 D032 bis.w #0x0018,SR ; enable interrupts 00001a 0018 11 000006 .bss dog,2 12 00001c E3D2 wdt_isr: xor.b #0x01,&P1OUT ; toggle P1.0 00001e 0000! 13 000020 1300 reti ; return from interrupt 14 000000 .sect ".int10" ; WDT vector section 15 000000 0000! .word wdt_isr ; Watchdog ISR 16 000000 .sect ".reset" ; PUC vector section 17 000000 0000! .word start ; RESET ISR 18 .end No Assembly Errors, No Assembly Warnings
The second column of numbers is the location counter.