打印编号,以筛组件(print number to screen assembly)

2019-10-21 11:52发布

我想在寄存器中的屏幕打印数量。 此外,我想将其保存为的字符(字节)的字符串。 所以,如果我有一个数字,如150,我想将其保存在某个地址

'1', '5', '0'

mov ebx, dword ptr[ebp+8]
; eax contains value
; ebx contains address to store characters

; here is where conversion would take place

因为它是在寄存器中,你必须将其转换为十进制值,然后每一个地方分开?

Answer 1:

我'不知道如何打印ASCII的,以及如何每一个地方分开。 所以我只喜欢展示如何EAX的价值进制ASCII的,并将其存储到DS的地址转换:EBX。 为了获得最大的0FFFFFFFFH的32位值,我们需要为十位十进制ASCII的(4294967295)的地方。 再举例来说,如果该值是十进制150,那么我们得到的ASCII提出的“0000000150”的一些“0”开头。

      mov     cl, 0Ah             ; counter for ten decimal ASCII's
      mov     edi, 1000000000
P1:   xor     edx, edx
      div     edi
      add     al, 30h             ; convert to ASCII
      mov     esi, edx            ; save remainder
      mov     [ebx], al           ; store ASCII to the address of DS:EBX
      inc     ebx
      mov     eax, edi
      mov     edi, 0Ah
      xor     edx, edx
      div     edi
      mov     edi, eax
      mov     eax, esi
      dec     cl
      jnz P1


文章来源: print number to screen assembly
标签: assembly nasm