【问题标题】:Displaying binary number in asm在 asm 中显示二进制数
【发布时间】:2013-12-11 06:10:21
【问题描述】:

我正在尝试执行“与”操作,但最终得到了错误的显示结果。 我的编码看起来不错,但我只是不知道为什么它无法以二进制显示我想要的结果。

这是我的操作代码:

mov ah, 09h
    lea dx,sAnd
    int 21h

    mov ah, 09h
    lea dx, sInputX
    int 21h

    mov ah,0ah          
    lea dx,x
    int 21h

    jmp VerifyX

    mov ah, 09h
    lea dx, sInputY
    int 21h

    mov ah,0ah          
    lea dx,y
    int 21h

    jmp Operation1

Operation1:
    mov Al, x
    and Al, y
    mov result, Al
    jmp CONVERSION

CONVERSION:
    mov ah, 09h
    lea dx, result
    int 21h

【问题讨论】:

    标签: assembly binary x86 x86-16


    【解决方案1】:

    您正在从标准输入读取字符串。所以你在xy 中的值是字符串而不是数字,除非你要转换它们,这里没有显示。

    现在假设用户输入9 作为第一个字符串,3 作为第二个字符串。

    你将拥有的是:

    x = 39h   ; '9'
    y = 33h   ; '3'
    
    39h AND 33h = 31h ; '1'
    

    在这种情况下这是正确的,但是,这仅适用于单个数字值,因为只有低半字节会改变,而低字节保持不变。如果您想输入更长的数字(即 67 和 23),它将不再起作用。所以你应该在做and操作之前将数字转换为二进制值,并且结果必须转换回数字字符串。

    另外,您将输出存储在result 中,然后在int 21h 上使用09h 进行输出,但此函数需要一个以$ 结尾的字符串。所以如果你没有把它作为第二个字符,你可能会在屏幕上看到垃圾,这取决于 result 包含的内容。

    【讨论】:

      猜你喜欢
      • 2022-06-28
      • 1970-01-01
      • 2010-10-16
      • 2018-04-26
      • 2013-12-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多