ในการออกกำลังกายฉันได้สร้างวิธีแก้ปัญหาง่ายๆสำหรับความท้าทายนี้ในภาษาแอสเซมบลี x86 ฉันกำลังใช้งาน FASM บน Windows นี่คือรหัสที่มาของฉัน:
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'
เมื่อฉันรวบรวมสิ่งนี้ฉันจะได้รับโปรแกรมที่ใหญ่กว่าที่ฉันคาดไว้ นี่คือ hexdump:
ฉันสังเกตเห็นว่ามีช่องว่างจำนวนมากระหว่างส่วนของรหัสและส่วนการนำเข้าข้อมูลและไลบรารีรวมถึงข้อความว่า "โปรแกรมนี้ไม่สามารถทำงานในโหมด DOS" ที่ฝังอยู่ในรหัส ฉันจะรวบรวมซอร์สโค้ดของฉันเป็นไฟล์ขนาดเล็กได้อย่างไรเหมาะสำหรับ Code Golf?
ในฐานะที่เป็นบันทึกย่อด้านคำแนะนำสำหรับวิธีที่ดีกว่าในการพิมพ์stdout
โดยไม่ต้องนำเข้าmsvcrt
และการโทรprintf
ยินดีต้อนรับ