Lorsque nous avons un code comme ceci:MSP430 SWAP octets ensemble d'explication
main: MOV #SFE(CSTACK), SP ; set up stack
;;; some instructions .......
; load the starting address of the array1 into the register R4
MOV.W #arr1, R4
; load the starting address of the array1 into the register R5
MOV.W #arr2, R5
; Sum arr1 and display
CLR R7 ; Holds the sum
MOV #8, R10 ; number of elements in arr1
lnext1: ADD @R4+, R7 ; get next element
DEC R10
JNZ lnext1
MOV.B R7, P1OUT ; display sum of arr1
SWPB R7
MOV.B R7, P2OUT
Quelle est la raison/sens derrière R7 faire SWPB dans cet exemple? Je lis les docs et comprends qu'il échange des octets bas/haut de gamme; Dans certains documents, il est dit qu'il multiplie par 256. Est-ce la seule raison ou est-ce que je manque quelque chose de plus profond ici? Le code censé ajouter les éléments d'un registre.
Je ne vous écris pas MIPS, mais si 'R7' est titulaire d'un faible octet et octet haut représentant deux chiffres, et que vous voulez à la sortie du faible octet à' P1OUT », puis la sortie de l'octet haut à« P2OUT », vous auriez besoin d'un« SWPB »entre la sortie de l'octet haut (puisque« MOV.B »déplace l'octet faible) avant votre« MOV.B R7 , Appel P2OUT. –