연습으로, x86 Assembly Language 에서이 과제에 대한 간단한 솔루션을 만들었습니다 . Windows에서 FASM으로 이것을 실행하고 있습니다. 내 소스 코드는 다음과 같습니다.
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'
이것을 컴파일하면 예상보다 큰 실행 파일이 생성됩니다. 다음은 16 진수 덤프입니다.
코드 섹션과 데이터 및 라이브러리 가져 오기 섹션 사이에 빈 공간이 많고 코드에 "이 프로그램을 DOS 모드에서 실행할 수 없습니다"라는 메시지가 표시됩니다. 코드 골프에 적합한 작은 파일로 소스 코드를 어셈블하려면 어떻게해야합니까?
부수적으로, stdout
가져 오기 msvcrt
및 호출 하지 않고 인쇄하는 더 좋은 방법에 대한 제안을 printf
환영합니다.