Arm VERSION 1.2 Manual de usuario Pagina 49

  • Descarga
  • Añadir a mis manuales
  • Imprimir
  • Pagina
    / 360
  • Tabla de contenidos
  • MARCADORES
  • Valorado. / 5. Basado en revisión del cliente
Vista de pagina 48
Writing ARM and Thumb Assembly Language
ARM DUI 0068B Copyright © 2000, 2001 ARM Limited. All rights reserved. 2-37
An LDR Rd, =label example: string copying
Example 2-10 shows an ARM code routine that overwrites one string with another
string. It uses the
LDR
pseudo-instruction to load the addresses of the two strings from a
data section. The following are particularly significant:
DCB
The
DCB
directive defines one or more bytes of store. In addition to integer
values,
DCB
accepts quoted strings. Each character of the string is placed
in a consecutive byte. Refer to DCB on page 7-18 for more information.
LDR/STR
The
LDR
and
STR
instructions use post-indexed addressing to update their
address registers. For example, the instruction:
LDRB r2,[r1],#1
loads r2 with the contents of the address pointed to by r1 and then
increments r1 by 1.
Example 2-10 String copy
AREA StrCopy, CODE, READONLY
ENTRY ; Mark first instruction to execute
start LDR r1, =srcstr ; Pointer to first string
LDR r0, =dststr ; Pointer to second string
BL strcopy ; Call subroutine to do copy
stop MOV r0, #0x18 ; angel_SWIreason_ReportException
LDR r1, =0x20026 ; ADP_Stopped_ApplicationExit
SWI 0x123456 ; ARM semihosting SWI
strcopy
LDRB r2, [r1],#1 ; Load byte and update address
STRB r2, [r0],#1 ; Store byte and update address
CMP r2, #0 ; Check for zero terminator
BNE strcopy ; Keep going if not
MOV pc,lr ; Return
AREA Strings, DATA, READWRITE
srcstr DCB "First string - source",0
dststr DCB "Second string - destination",0
END
Vista de pagina 48
1 2 ... 44 45 46 47 48 49 50 51 52 53 54 ... 359 360

Comentarios a estos manuales

Sin comentarios