打印编号到屏幕组件

时间:2014-12-26 03:31:19

标签: assembly nasm

我想在屏幕上的一个寄存器中打印一个数字。此外,我想将其保存为字符串(字节)。所以如果我有一个像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

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

1 个答案:

答案 0 :(得分:1)

我不知道如何打印ASCII以及如何分隔每个地方。所以我只想展示如何将EAX的值转换为十进制ASCII并将其存储到DS:EBX的地址。对于最大值为0FFFFFFFF的32位值,我们需要一个10十进制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