Al comienzo del programa, la pseudo-instrucción ADR R14, cnt1 de ARM carga una dirección ( cnt1 - final de esta parte del programa) en un registro ( R14 ). En la práctica, ADR se reemplaza por una instrucción ADD o SUB que involucra el contenido de la PC ( R15 ). El cálculo se basa en el desplazamiento entre la PC y la dirección en cuestión, teniendo en cuenta que el desplazamiento de la PC se debe a la operación de la tubería ARM. Es más fácil dejar que el ensamblador calcule las direcciones por ti. Si se cambia el código, las direcciones también, pero ADR se encargarán de esto cuando se vuelvan a ensamblar.
La instrucción B sumi es solo un salto incondicional a la dirección dada por sumi (inicio de la subrutina).
Al final del ciclo, se ejecuta la instrucción MOV PC,R14 , lo que hace que la PC se cargue con el contenido (una dirección) del registro R14 . Recuerde que esta última fue modificada previamente por la instrucción ADR . Entonces el programa continúa saltando a la dirección dada por la etiqueta cnt1 .
Cuando se programan las subrutinas en ensamblaje, generalmente se emplea una combinación de las instrucciones de salto B y BL ; esta última (rama y enlace) ya almacena la dirección de retorno en R14 (LR - registro de enlace).