As an exercise, I've created a simple solution for this challenge, in x86 Assembly Language. I'm running this with FASM on Windows. Here's my source code:
format PE console entry start include 'WIN32A.inc' section '.text' code executable start: push char ; Start at 'A' call [printf] ; Print the current letter 4 times call [printf] call [printf] call [printf] inc [char] ; Increment the letter cmp [char], 'Z' ; Compare to 'Z' jle start ; char <= 'Z' --> goto start section 'r.data' data readable writeable char db 'A', 10, 0 ; Stores the current letter section '.idata' data readable import library msvcrt, 'msvcrt.dll' import msvcrt, printf, 'printf'
When I compile this, I get an executable larger than I expected. Here's a hexdump:
I notice there's a lot of empty space between the code section and the data and library import sections, as well as a message saying "This program cannot be run in DOS mode" embedded in the code. How can I assemble my source code to a small file, suitable for Code Golf?
As a side note, suggestions for better ways to print to
stdout without importing
msvcrt and calling
printf are welcome.