DZone Snippets is a public source code repository. Easily build up your personal collection of code snippets, categorize them with tags / keywords, and share them with the world
Writeln In Assembler
NASM code for writing the integer in eax to stdout.
segment .bss writeTemp resb 10 segment .text _writeln: MOV ebx, eax ; Number is already in eax MOV ecx, 10 XOR edi, edi L0: CMP eax, 0 JE L1 ADD edi, 1 XOR edx, edx IDIV ecx JMP L0 L1: ADD edi, writeTemp ; Length of the number is in edi MOV esi, edi MOV byte [edi], 10 ; Add a newline SUB edi, 1 XOR eax, eax L2: CMP ebx, 0 JE L3 MOV eax, ebx XOR edx, edx IDIV ecx ADD dl, 48 MOV [edi], dl SUB edi, 1 MOV ebx, eax JMP L2 ; Number has been written to writeTemp from tail to head L3: MOV eax, 4 MOV ebx, 1 MOV ecx, writeTemp MOV edx, esi SUB edx, writeTemp ADD edx, 1 INT 80h