字符串到汇编中的整数

Changhun Lee

比如我想把字符串转成整数,当我在字符串中输入1234时,它会转成整数1234。但是,当我输入1234时,结果只有12出来,我不知道是什么问题。

%include "asm_io.inc"

segment .bss
string  resb    32


segment .text
global  main

main:

  enter 0,0     ; setup stack frame
  pusha

  mov   edx, 0
  mov   ecx, 0
  mov   ebx, 0

repeat: call    read_char

  sub   eax, 48
  mov   esi, eax
  mov   eax, ecx
  mov   ebx, 10
  mul   ebx
  mov   ecx, eax
  add   ecx, esi
  mov   byte [string+edx], al

  cmp   al, 0x0a
  jne   repeat
  mov   byte [string+edx-1], 0

  mov   eax, ecx
  call  print_int
  call  print_nl

  popa
  mov   eax, 0  ; return value
  leave         ; leave stack frame
  ret
帕维尔·尤卡西克

单单分析,不跑,看来你的逻辑是错误的。在第二次循环迭代中,您将eax等于 1,因此在将其乘以10( ebx) 后,您将产生等于 Enter 的 ascii 值 - 0x0a(10dec) 的结果。

您应该在阅读字符后立即移动检查输入值。所以试着让你的循环像这样

repeat: 
  call  read_char
  cmp   al, 0x0a
  je    exit_loop // exit the loop if enter
  //code as before
  jmp repeat //jump unconditionally to the beginning of the loop
exit_loop:
   mov   byte [string+edx-1], 0

我认为可能还有其他一些问题,因为我不知道哪里会edx增加。

但是正如我所写的那样 - 这只是通过分析没有实际运行的情况。你有程序和调试器。调试一下!单步执行代码,分析寄存器并按照 Michael Petch 的建议确认发生了什么。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在汇编中定义字符串常量的语法是什么?

来自分类Dev

字符串到整数。无效的int

来自分类Dev

从字符串C ++中取出整数

来自分类Dev

空合并字符串到整数

来自分类Dev

从QVariant到整数和字符串

来自分类Dev

从R中的整数拆分字符串

来自分类Dev

汇编语言编程8086中的字符串到整数的转换

来自分类Dev

如何在汇编中声明字符串变量?

来自分类Dev

替换汇编中的字符串

来自分类Dev

PHP字符串到整数异常

来自分类Dev

字符串数组到整数的集合?

来自分类Dev

将整数转换为字符串汇编8086 TASM

来自分类Dev

尽可能快地将整数转换为汇编语言(64位,NASM)中的字符串

来自分类Dev

如何在汇编中更新字符串的字符?

来自分类Dev

简短形式以获取汇编中的字符串长度

来自分类Dev

计算汇编字符串中的'0'

来自分类Dev

汇编:如何在.asciiz中存储字符串?

来自分类Dev

如何比较汇编中的字符串?

来自分类Dev

字符串到整数

来自分类Dev

字符串中的整数

来自分类Dev

MIPS字符串到整数的转换

来自分类Dev

反转汇编中的字符串(TASM)

来自分类Dev

如何在汇编中声明字符串变量?

来自分类Dev

整数元组到字符串元组

来自分类Dev

从字符串到整数函数

来自分类Dev

如何从汇编中的字符串计算字符和行?

来自分类Dev

C ++中的汇编字符串和等效代码

来自分类Dev

jooq 字符串到整数的转换

来自分类Dev

Java中的字符串到整数解决方案