Quiz 6.3: Difference between revisions

From Class Wiki
Jump to navigation Jump to search
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 you can still get it to make an assembly listing for you.
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.


You get the Assembly List file by going 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.
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 PAGE 1
../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>


You can see that my guess wasn't right. The second column of numbers is the location counter. :-)
The second column of numbers is the location counter.

Revision as of 18: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. Assembly-listing-option.png 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.