AREA CODESERMENT,CODE,READONLY
ENTRY
START
ldr r0, =str // 加载字符串的地址到r0
ldr r1, =key // 加载键的地址到r1
ldr r2, =order // 加载结果地址到r2
bl search_key // 调用搜索函数
end_program
b end_program // 无限循环,防止离开程序
search_key
mov r3, #0 // 初始化索引为0
search_loop
ldrb r4, [r0, r3] // 从字符串中读取一个字节到r4
cmp r4, #0 // 检查是否到达字符串末尾
beq not_found // 如果到达末尾,跳转到未找到处理
ldrb r5, [r1] // 从键中读取当前字符到r5
cmp r4, r5 // 比较字符
bne next_char // 如果不相等,跳到下一字符
// 字符匹配,更新索引,准备检查下一个字符
add r3, r3, #1 // 增加字符串索引
add r1, r1, #1 // 增加键索引
cmp r5, #0 // 检查键是否到达末尾
bne search_loop // 如果没有结束,继续循环
found
str r3, [r2] // 如果找到了,存储索引到结果地址
bx lr // 返回
not_found
mov r3, #-1 // 如果未找到,设置索引为-1
str r3, [r2] // 存储未找到的结果到地址
bx lr // 返回
AREA datasegent, DATA, READWRITE
str DCB "string 123456-St-abcd Stringabc.", 0 // 要搜索的字符串
key DCB "String", 0 // 要查找的键
order DCD 0 // 存储结果的空间
END
22222222222
于 2024-11-14 20:53:19 首次发布
68

被折叠的 条评论
为什么被折叠?



