首页 > 解决方案 > 如何从 asciz 字符串 ARM 程序集中删除空格(没有外部库)

问题描述

我正在尝试使用汇编为我的树莓派 4 制作一个简单的命令行界面,

我可以接收输入并输出到屏幕还可以问题是当我将输入大小设为 20 但只输入 10 时,我会随机添加到屏幕上

这是代码

.data
output: .byte 0
.text
.global _start

_start:
    mov R2,#20 @size of input
    bl read @call read subroutine
    ldr R1,=output @get what was typed
    mov R2,#20 @size of output
    bl write @call write subroutine
    b finish @finish
finish:
    mov R7,#1 @ syscall for exit
    SWI 0 @software interrupt

write:
    MOV R7,#4 @ syscall for output
    MOV R0,#1 @use stdout
    SWI 0

    BX lr

read:
    LDR R1, =output

    MOV R7,#3 @ syscall for input
    MOV R0,#0 @use stdin
    SWI 0
    BX lr

我得到的输出是

你好(我输入的文字)

你好(正在输出的文本)

\n\o\o\o\oaeabi\o\o\o\o\o (随机的东西)

这是来自 putty 的图片(看不到 \o 和 \n)在 ssh 上运行的代码的图像

这是来自cmd的图片 再次相同,但在 cmd

是否有可能删除用户没有使用上面输入的所有字符作为示例我希望字符串只包含 hello 并删除其他所有内容

一些系统信息:

cpu:broadcomm cortex a72 架构:64位处理器核心/线程:4 / 4 0s:32位raspbian buster arm v8

标签: assemblyarmwhitespace

解决方案


推荐阅读