assembly - 如何将字符串的地址更改为字符串的第n个字符
问题描述
我是一个初学者,用 64 位编写一个程序,该程序应该询问用户一个 8 个字符长的字符串,并根据用户输入的 n(小于或等于8)。结果不是我所期待的。
我正在尝试将字符串的地址更改为指向字符串中稍后出现 n 个字符的字符。我已经尝试过使用 rep movsb,但失败了。我可以使用循环和跳跃,但我不想。我相信我正在尝试的方式应该足够好。另外,在这个程序中使用 nasm。
section .bss
num: resw 2 ;Reserved for the number of char to be cut off
section .data
str: db "",0x00
strLen: db 8 ; Length of string is 8
section .text
global main
主要的:
;; Read user input
mov rax,0
mov rdi,0
mov rsi,str
mov rdx,strLen
syscall
;; Get input for int
mov rax,0
mov rdi,0
mov rsi,num
syscall
;; Change the char to number
mov r10,[num]
sub r10,48
mov [num],r10
;; Edit the string address
mov rax,[num]
lea r10,[str+rax]
mov [str],r10
;; Show the edited string
mov rax,1
mov rdi,1
mov rsi,str
syscall
;; Exit section.
mov rax,60 ;calls sys_exit
xor rdi,rdi ;0 for no errors
syscall ;system call
实际结果:
输入字符串:
集会
输入要截断的字符数:
3
这是输入的
集会
这是编辑的文本
▒J@
预期的:
集会
3
集会
嵌入
解决方案
推荐阅读
- c++ - 如何在没有明显模式的情况下记忆或制作递归函数?
- ios - 离机时SKTileMapNode消失,不再出现
- mocha.js - 错误:当使用 Contract.connect(Signer) 调用 getter 时,使用 Mocha、Chai、Waffle 测试在 Hardhat 上调用恢复异常
- java - 在 RecycleView、Java Android 中引用另一个 Object 列表
- php - 无法使用 jquery 将类添加到 .done() 内的元素
- vue.js - Vuetify:防止组合框上的筹码溢出
- python - ImportError:无法从“mplfinance”导入名称“candlestick_ohlc”-NG.L Stock Candlestick Chart.py
- c++ - 向量将派生的智能指针推回基本抽象类的智能指针向量中
- installation - 应用程序在使用 Inno Setup-made 更新更新文件后看到旧版本的文件
- javascript - 在 Javascript 函数中减少后 for 循环的莫名行为