【问题标题】:How to get integer input with assembly如何使用汇编获取整数输入
【发布时间】:2011-07-31 22:39:12
【问题描述】:

我正在学习汇编,我发现了如何获取用户输入

mov al, 3    ; system call number (sys_read)
xor bl, bl   ; file descriptor 0 (stdin)
mov rcx, buf ; buffer to store input
mov dl, 4    ; Lenght of buffer
int 0x80     ; interrupt

但这实际上得到了一个字符串,对吗? 我的问题是如何获得整数值... 所以如果我输入 100 我如何得到值 64h 以便我可以加、减等 而不是每个字节都是数字的 ascii 表示形式的字符串 然后我如何将 64h 之类的值输出到屏幕上,使其显示为 100? 我不需要代码只是一些指导

谢谢!

【问题讨论】:

标签: assembly


【解决方案1】:

一旦有了 ASCII 表示,您就可以逐位构建结果,使用数字按顺序编码的事实。在伪代码中,从左到右读取(即从最高位开始):

  • result初始化为0
  • 对于每个数字c, result *= 10; result += (c - '0');
  • result 保存字符串的数值

【讨论】:

  • +1 相同的方法适用于其他碱基(尽管c - '0' 部分对于碱基> 10 变得更加复杂)
【解决方案2】:

查看二进制编码的十进制 BCD。它可以更有效地做到这一点

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-10
    • 1970-01-01
    • 1970-01-01
    • 2017-04-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多