एक अभ्यास के रूप में, मैंने इस चुनौती के लिए, x86 विधानसभा भाषा में एक सरल समाधान बनाया है । मैं इसे विंडोज पर 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'
जब मैं इसे संकलित करता हूं, मुझे उम्मीद से अधिक एक निष्पादन योग्य मिलता है। यहाँ एक हेक्सडम्प है:
मुझे लगता है कि कोड अनुभाग और डेटा और लाइब्रेरी आयात अनुभागों के बीच बहुत सी खाली जगह है, साथ ही एक संदेश "कोड में एम्बेडेड इस प्रोग्राम को डॉस मोड में नहीं चलाया जा सकता है"। मैं अपने स्रोत कोड को एक छोटी फ़ाइल में कैसे इकट्ठा कर सकता हूं, जो कोड गोल्फ के लिए उपयुक्त है?
एक साइड नोट के रूप में, stdout
आयात msvcrt
और कॉलिंग के बिना प्रिंट करने के बेहतर तरीकों के सुझावों printf
का स्वागत है।