首页 > 解决方案 > 如何在 ARM Assembly 中将大写字母转换为小写字母?

问题描述

我有以下程序:

 .data
 cc: .byte 0x42
     .byte 0x4f
     .byte 0x4e
     .byte 0x4a
     .byte 0x4f
     .byte 0x55
     .byte 0x52
     .byte 0x00
co: .asciz "au revoir..."

    .text
    .global main
main:

@ impression de la chaine de caractere d'adresse cc
     ldr r1, LD_cc
     bl EcrChaine

@ modification de la chaine d'adresse cc
    @To be completed

@ impression de la chaine modifiee
     ldr r1, LD_co
     bl EcrChaine

fin: B exit  @ terminaison immediate du processus (plus tard on saura faire mieux)

LD_cc: .word cc
LD_ca: .word ca
LD_co: .word co

cc 包含大写字母的字符串“BONJOUR”。在“待完成”部分,我必须使用按位或运算(ORR 命令)将该字符串转换为小写字母。我的理解是,由于字符串使用的是 ASCII 表,我所要做的就是为每个字符添加 32。相应的命令是 ORR R1, R1, #32,但是我正在尝试执行此操作,并且在运行程序时输出为空白。我尝试使用在线模拟器查看值的变化,但我可以看到只有第一个字母发生了变化。我必须使用循环吗?任何人都可以帮助我吗?

标签: assemblyarm

解决方案


只需添加要转换的单词 0x20。


推荐阅读