用ASCII将输出写入R16K1S60的屏幕外围设备。在粉玩具保存上运行2012356
。(有关信息,请参见标题中的链接)
程序的字节大小是编译结果(使用的单元数* 2),而不是程序集。
您知道徽标占用的空间比字节码更多时,您做得很好。
a:
mov ex, ip
mov ax, .string
mov sp, ip
mov dx, 0x1000
send sp, dx
.loop:
mov bx, [ax]
cmp bx, ip
je .end
cmp bx, ip
je .newline
shr bx, cx, 8
and cx, 0x00FF
.inner:
send sp, cx
sub bx, ex
jnz .inner
.reentry:
add ax, ex
jmp .loop
.newline:
add dx, 0x0020
send sp, dx
jmp .reentry
.string:
dw 0x0120
dw 0x135F
dw 0x000C
dw 0x012F
dw 0x1320
dw 0x015C
dw 0x000C
dw 0x152D
dw 0x000C
dw 0x017C
dw 0x1320
dw 0x017C
dw 0x000C
dw 0x152D
dw 0x000C
dw 0x017C
dw 0x1320
dw 0x017C
dw 0x000C
dw 0x152D
dw 0x000C
dw 0x015C
dw 0x0A5F
dw 0x0420
dw 0x055F
dw 0x012F
dw 0x000C
dw 0x0B20
dw 0x017C
dw 0x0220
dw 0x012F
dw 0x000C
dw 0x0B20
dw 0x017C
dw 0x0120
dw 0x012F
dw 0x000C
dw 0x0B20
dw 0x017C
dw 0x012F
dw 0x0009
.end:
hlt
说明
上面的汇编代码实现了一种简单的压缩算法,其中单词0x000C是换行符,而0x0009是停止执行的命令。
其他单词则简单地编码,如下所示:0xTTCC
ASM使用所有可用的寄存器,包括一些不常用的寄存器:
实际上,只有AX,BX,CX和DX用于重要数据。EX和SP用于存储一些经常使用的常量。
这有点简单,获胜的机会很小,但是写起来很有趣!
查看旧版本的修订历史记录(就ASM而言,它也是如此)
funfact:如果以字为单位(对于R16K1S60为16位),它将小于pyth答案,为72个字节