概要
vistaでquartusやってみた。
アセンブラ作ってみた。
参考にしたページ
アセンブラ仕様
| ニーモニック | 意味 | stackの状態 | code | 
|---|---|---|---|
| % | stack-1, stackの剰余を求める。 | 1個減る | f00 | 
| + | stack-1, stackの加算を求める。 | 1個減る | f000 | 
| / | stack-1, stackの除算を求める。 | 1個減る | f00 | 
| * | stack-1, stackの乗算を求める。 | 1個減る | f002 | 
| - | stack-1, stackの減算を求める。 | 1個減る | f001 | 
| = | stack-1, stackの等しいを求める。 | 1個減る | f00a | 
| > | stack-1, stackの大を求める。 | 1個減る | f00e | 
| < | stack-1, stackの小を求める。 | 1個減る | f00f | 
| push 1 | stackに整数1を積む。 | 1個増える | 1001 | 
| set i | 変数iにstackを入れる。 | 1個減る | 300i | 
| get i | stackに、変数iの値を入れる。 | 1個増える | 200i | 
| out | stackを数値で印字する。 | 1個減る | e000 | 
| jz i | stackが真ならiへ飛ぶ。 | 1個減る | 500i | 
| jnz i | stackが偽ならiへ飛ぶ。 | 1個減る | 600i | 
| jmp i | 無条件でiへ飛ぶ。 | 変化無し | 400i | 
ソース
push 'h'
out
push 'e'
out
push 'l'
out
push 'l'
out
push 'o'
out
push ' '
out
push 'w'
out
push 'o'
out
push 'r'    
out
push 'l'
out
push 'd'
out
push '!'
out
loop:
jmp loop
    
結果
mem[12'h000]=16'h1068 ; //             push 'h'
mem[12'h001]=16'he000 ; //             out
mem[12'h002]=16'h1065 ; //             push 'e'
mem[12'h003]=16'he000 ; //             out
mem[12'h004]=16'h106c ; //             push 'l'
mem[12'h005]=16'he000 ; //             out
mem[12'h006]=16'h106c ; //             push 'l'
mem[12'h007]=16'he000 ; //             out
mem[12'h008]=16'h106f ; //             push 'o'
mem[12'h009]=16'he000 ; //             out
mem[12'h00a]=16'h1NaN ; //             push ' '
mem[12'h00b]=16'he000 ; //             out
mem[12'h00c]=16'h1077 ; //             push 'w'
mem[12'h00d]=16'he000 ; //             out
mem[12'h00e]=16'h106f ; //             push 'o'
mem[12'h00f]=16'he000 ; //             out
mem[12'h010]=16'h1072 ; //             push 'r'    
mem[12'h011]=16'he000 ; //             out
mem[12'h012]=16'h106c ; //             push 'l'
mem[12'h013]=16'he000 ; //             out
mem[12'h014]=16'h1064 ; //             push 'd'
mem[12'h015]=16'he000 ; //             out
mem[12'h016]=16'h1021 ; //             push '!'
mem[12'h017]=16'he000 ; //             out
mem[12'h018]=16'h4018 ; //loop:  jmp loop
成果物
実機実行結果
以上。

