CodeWarrior でアセンブリ コード プロジェクトをセットアップするときに、「絶対アセンブリ」と「再配置可能なアセンブラ」の選択肢があると言われました。コードをアセンブルして正しくステップスルーしようとしているだけなので、現時点ではHCS12マイクロコントローラを使用していません。「再配置可能」を選択したのは、コードが読みやすくなり、セクションに分割されると信じているためです。ただし、変数と配列を適切に設定する方法を理解するのに苦労しています。
変数には RAM 内のアドレスがあることを知っています。したがって、このアドレスを定義する必要があると思います。また、変数の大きさ、つまり 1 バイトか 2 バイトかなどを定義する必要があるとも言われました。
同じことが配列にも当てはまると思います。そのため、場所とサイズを定義する必要があります。また、配列に値を入力する必要があります。
以下のコードをアセンブルすると、R1 と R2 に設定した場所にメモリがないことがわかります。EQU ディレクティブを使用してプログラミングを開始したため、フォローしません。
いつ DC を使用するのかわかりません。またはDS。そして、それがEQUを使用することとどのように異なるか。それはすべて同じように見えますが、変数と配列の設定方法について一般的に混乱しています。
;************************PROGRAM HEADER******************
; PROJECT NAME:
; FILE NAME:
; DEVELOPER:
; DATE CREATED:
; PROGRAM PURPOSE:
; REVISIONS:
;********************************************************
;************************GLOBAL SYMBOLS******************
; External Symbol Definitions
; Internal Symbol Definitions
XDEF Entry, main
;********************************************************
;************************EQUATES (EQU)*******************
R1 EQU $1000
R2 EQU $1100
;********************************************************
;************************CODE SECTION********************
; Section Start
MyCode: SECTION
Entry:
main:
; Initialize Stack Pointer
LDS #$2000
; Initialize all I/O Devices
; Initialize Variable Data
CLRA
CLRB
LDAA #4
STAA R1
STAB R2
LDX #List1
; Start of Main Code
back LDAA R2 ;This is suppose to add up each
ADDB 0, X ;element in my array "List1". If
INX ;there is a carry it branches out
BCS CARRY ;to the carry loop, performs the
LDAA R1 ;carry operation and returns to
DECA ;original start of first loop. My
STAA R1 ;variable R1 is the counter which
BNE back ;is the size of my array "List1".
CARRY INCA
STAA R2
LDAA R1
DECA
STAA R1
BNE back
LDAA R2
;************************END OF CODE*********************
;************************SUBROUTINES & FUNCTIONS*********
;********************************************************
;************************CONSTANT DATA SECTION (ROM)*****
; Section Start
; Data Definitions
;********************************************************
;************************VARIABLE DATA SECTION (RAM)*****
; Section Start
MyData: SECTION
; Variable Data Storage Allocation
List1: DC.B $FF, $01, $FE, $02
;********************************************************