Donc j'apprends l'assemblage et j'ai écrit un programme pour additionner les valeurs que je définis dans 'data_type'.Assembly Beginner: Définir une variable égale au nombre de valeurs dans DCD?
Atm Je dois définir manuellement une variable 'num' égale à la quantité de valeurs dans 'data_type' pour que la boucle les résume toutes.
Je me demandais s'il y avait une meilleure façon de faire cela?
Ou s'il y a un moyen de déclarer dynamiquement la variable 'num' pour supposer la quantité de valeurs dans 'type_données'?
Merci d'avance!
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
Vous n'êtes pas sûr de votre assembleur, mais: 1) que se passerait-il si 'data_values' n'est pas aligné? Si cela fonctionne de la même manière que les autres assembleurs, ce symbole 'data_values' aura la valeur d'adresse non alignée, tandis que le' DCD' va définir les données alignées, donc votre code fera un accès non aligné aux mauvais octets de données. Je crois que vous devriez échanger ces deux, aligner d'abord, puis définir l'étiquette symbolique. 2) que se passe-t-il après 'BNE'? Ou est-ce que vous exécutez simplement ceci dans le débogueur jusqu'à ce point, ne le laissant jamais sortir de votre code défini? – Ped7g
D'accord, je vais les échanger maintenant. Utilisation des outils Keil Je suis juste en train de lancer BNE dans un débogueur car c'est juste un exercice d'apprentissage, avez-vous des recommandations pour réaliser ce que j'ai demandé ci-dessus? – ohkneel