サイト The Ancient Bits adventure に掲載されている Hello world プログラム hellopdp.s:
.TITLE Say hello on console
.IDENT "V00.00"
.GLOBAL start
.GLOBAL _putconch
STACK = 0x1000
.text
start:
mov $STACK, sp
mov $hellom, r1
mov $helloc, r2
10$: movb (r1), r0
jsr pc, _putconch
dec r2
beq 99$
inc r1
jmp 10$
99$: nop
halt
.data
hellom: .ascii "Hello world!"
helloc = . - hellom
.end
とバイトをコンソールに印刷するプログラム
.TITLE putconch: send a byte to the system console
.IDENT "V01.00"
.GLOBAL _putconch
XCSR = 0177564
XBUF = 0177566
TXRDY = 0x0080
NRETRY = 5000
.text
_putconch:
mov r1,-(sp)
mov r2,-(sp)
mov $NRETRY, r1
10$:
mov XCSR,r2
bit r2, $TXRDY
bne 20$
dec r1
bne 10$
mov $2,r0
jmp 999$
20$: movb r0,XBUF
mov $NRETRY, r1
30$: mov XCSR,r2
bit r2, $TXRDY
bne 40$
dec r1
bne 30$
mov $2, r0
jmp 999$
40$: mov $0, r0
999$:
mov (sp)+, r2
mov (sp)+, r1
rts pc
.end _putconch
をアセンブルして実行イメージを作成する.
まず, クロスアセンブラを使用して hellopdp.s と putconch.s をアセンブルする.
$ pdp11-aout-as putconch.s -o putconch.o
$ pdp11-aout-as hellopdp.s -o hellopdp.o
これができたら, a.out 実行イメージをリンクして LDA ファイルを作成する.
$ pdp11-aout-ld -T ldaout.cmd hellopdp.o putconch.o -o hellopdp.out
$ bin2load -a -f hellopdp.out -o hellopdp.lda
SimH での実行には, できあがった LDA ファイル "hellopdp.lda" を使う.
$ simh-pdp11
PDP-11 simulator V3.9-0
sim> load hellopdp.lda
sim> g
Hello world!
HALT instruction, PC: 001040 (MOV R1,-(SP))
sim> q
Goodbye
【このカテゴリーの最新記事】
-
no image
-
no image
-
no image
-
no image
-
no image