【问题标题】:Assembly x86 read a string character by character汇编 x86 逐字符读取字符串
【发布时间】:2014-04-13 22:03:01
【问题描述】:

我得到一串数字作为输入,我想逐个字符地读取它,以便将每个数字转换为整数。

示例输入:54321

我需要将其转换为数值54321进行一些操作。

这是我用来阅读的功能

STRING                      DB      20,0 
                            RESB    20

   ;;;;;;;;;   Code here   ;;;;;;;;;

    MOV                     DX,STRING
    MOV                     AH,0Ah
    INT                                     21h

至少如果你能告诉我 8086 的逻辑或功能对这样做很有用。 谢谢

【问题讨论】:

    标签: assembly nasm x86-16


    【解决方案1】:

    字符串只是一个数组。例如,第一个字母在“edx”中,第二个字母在“edx+1”中,第三个字母在“edx+2”中,依此类推..

    您可以通过以下计算将字符转换回整数:

    'chardigit' - 48 = integerdigit

    这是可能的,因为 ascii '0' 是 48。这是一个示例:

    "123"
    
    '1' (or 49 in dec) - 48 = 1
    '2' (or 50 in dec) - 48 = 2
    '3' (or 51 in dec) - 48 = 3
    

    我希望这是可以理解的。

    【讨论】:

    • 使用这个dos调用(INT 21H,帖子中没有显示21H),STRING+1将包含输入的字符数(不包括回车键),输入的数据将从STRING+2。
    • 是的,我编辑了 21 小时 :) 所以在这种情况下,我必须检查我的号码,从 STRING+2STRING+22,因为 STRING 的大小是 20?如果我的号码是1234 in STRING+2,我会找到 1 或 4?
    • 这些十进制值使用以十为底的数字系统。
    • @obiWanKeNerd 你会找到 1 并且是 string+2 - string+22 是你的字符串
    猜你喜欢
    • 2010-11-08
    • 1970-01-01
    • 1970-01-01
    • 2014-11-22
    • 2012-04-06
    • 2017-04-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多