我有两个问题。
我正在使用Keil uVision(v.5.14.2.1)和Nordic Semiconductors nRF24LE1(8051 MCU)
问题1
我有两个源文件。 Main.asm和Functions.asm 我在Main.asm中创建了一个代码段,并希望将在Functions.asm中编写的代码放在同一个段中。有可能,我该怎么做?请参阅下面的示例,了解我如何尝试
MAIN.ASM
; Main.asm
extrn code (extFunc)
?PR?SEG?A segment code
?PR?SEG?B segment code
rseg ?PR?SEG?A
Main:
MOV A, P0
CPL A
MOV P0, A
SJMP Main
rseg ?PR?SEG?B
Something:
ACALL extFunc
Functions.asm
; Functions.asm
public extFunc
rseg ?PR?SEG?B
extFunc:
CLR A
RET
问题2
请参阅下面的代码示例以及评论
; Question 2
?PR?MYCODE segment code
?DA?MYDATA segment data
rseg ?DA?MYDATA
varA:
ds 1
rseg ?PR?MYCODE
Main:
MOV varA, #0x00 ; Line 1
MOV A, varA ; Line 2
MOV A, #varA ; Line 3
这是正确的吗?
第1行:设置varA(在内存中的位置)= 0x00?
第2行:A = varA = 0x00?
第3行:A = varA的地址?
如果第3行不正确。我如何获得varA的地址?
答案 0 :(得分:2)
从Ax51用户指南中找到问题1的答案:
段是代码块或数据存储器。段可以是可重定位的或绝对的。可重定位段具有名称,类型和其他属性。来自不同模块的具有相同名称的段被视为同一段的一部分,并称为部分段。 Lx51链接器/定位器将多个具有相同名称的部分段组合成一个段。绝对分段不能与其他分段组合。
问题2:第3行存储varA的地址