Also lerne ich Assembly und ich habe ein Programm geschrieben, um Werte zu summieren, die ich in 'data_type' definiere.Assembly Anfänger: Legen Sie eine Variable gleich der Anzahl der Werte in DCD?
Atm Ich muss die Variable 'num' manuell auf die Anzahl der Werte in 'data_type' setzen, um sicherzustellen, dass die Schleife sie alle summiert.
Ich fragte mich, ob es eine bessere Möglichkeit gibt, dies zu tun?
Oder gibt es eine Möglichkeit, die Variable 'num' dynamisch zu deklarieren, um die Anzahl der Werte in 'data_type' zu übernehmen?
Vielen Dank im Voraus!
AREA Sum loop, CODE, READONLY
ENTRY
num EQU 5
Reset_Handler
LDR r1, =data_values
MOV r5,#num
loop
LDR r2,[r1],#4
ADD r3,r3,r2
SUBS r5,r5,#1
BNE loop
data_values
ALIGN 4
DCD 1, 1, 1, 1, 1 ; example values
END
Nicht sicher über Ihren Assembler, aber: 1) Was würde passieren, wenn 'data_values' nicht ausgerichtet ist? Wenn es auf ähnliche Weise wie andere Assembler funktioniert, hat das Symbol "data_values" den nicht ausgerichteten Adresswert, während das "DCD" Daten auf der ausgerichteten Adresse definiert, so dass Ihr Code unausgerichteten Zugriff auf falsche Datenbytes ausführt. Ich glaube, du solltest diese beiden tauschen, zuerst ausrichten und dann das symbolische Etikett definieren. 2) Was passiert nach 'BNE'? Oder führen Sie das im Debugger bis zu diesem Punkt aus und lassen Sie es niemals außerhalb des definierten Codes laufen? – Ped7g
Okay danke, werde sie jetzt tauschen. Keil-Werkzeuge verwenden. Ich führe es nur mit einem Debugger zu BNE, da es nur eine Lernübung ist, haben Sie irgendwelche Empfehlungen, wie Sie das erreichen können, wonach ich gefragt habe? – ohkneel