Assembly 需要在我的汇编源代码文件中正确设置变量和数组的指导吗
我被告知,在CodeWarrior中设置我的汇编代码项目时,有“绝对汇编”和“可重新定位汇编程序”两种选择。我现在没有使用HCS12微控制器,因为我只是想让我的代码正确地组装并逐步通过。我之所以选择“可重定位”,是因为我相信它使我的代码更具可读性,并将其分解为多个部分。然而,我很难理解如何正确设置变量和数组 我知道一个变量在RAM中有一个地址。因此,我认为我需要定义这个地址。我还被告知,我需要定义变量的大小,换句话说,如果它是1字节还是2字节,依此类推 我认为这同样适用于数组。所以我需要定义位置和大小。我还需要用值填充数组 当我汇编下面的代码时,它告诉我在为R1和R2设置的位置没有内存。我没有这样做,因为我在开始编程时使用了EQU指令 我不明白什么时候该用DC。或DS。这与使用EQU有什么不同。看起来都一样,现在我只是对如何设置变量和数组感到困惑Assembly 需要在我的汇编源代码文件中正确设置变量和数组的指导吗,assembly,codewarrior,68hc12,Assembly,Codewarrior,68hc12,我被告知,在CodeWarrior中设置我的汇编代码项目时,有“绝对汇编”和“可重新定位汇编程序”两种选择。我现在没有使用HCS12微控制器,因为我只是想让我的代码正确地组装并逐步通过。我之所以选择“可重定位”,是因为我相信它使我的代码更具可读性,并将其分解为多个部分。然而,我很难理解如何正确设置变量和数组 我知道一个变量在RAM中有一个地址。因此,我认为我需要定义这个地址。我还被告知,我需要定义变量的大小,换句话说,如果它是1字节还是2字节,依此类推 我认为这同样适用于数组。所以我需要定义位置
;************************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
;********************************************************
我不熟悉您正在使用的汇编程序,但EQU只是给符号赋值。在汇编程序中,
DC
或DS
将显示定义存储,其中标签定义为存储区域的开始
DC.B
似乎会分配字节,因此如果希望将R1定义为包含值$1000的内存位置,我希望
R1: DC.W $1000
R2: DC.W $1100
在列表1之后输入:
应在逻辑上保留包含指定值的字或存储器。
当然,您需要删除您的
eq
定义,否则汇编程序将反对双重定义。对于代码被置乱,我深表歉意。我不知道如何正确插入代码。