出力を画面周辺機器R16K1S60にASCIIで書き込みます。ザパウダートーイsave2012356
。(情報についてはヘッダーのリンクを参照してください)
プログラムのバイトサイズは、アセンブリではなく、コンパイルされた結果(Cells Used * 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ビットの場合)、72バイトで、pyth回答よりも小さくなります