CASL U - 練習問題5
 前へ 目次へ 次へ

【練習問題5】

1 次の演算を行うときに適している命令を解答群から選んで記号で答えよ。

@ 符号を無視しないで1234(16)と5678(16)を加算する。  
A 符号を無視して1200(16)を3ビット左シフトする。  
B 1111(16)と00FF(16)の論理積を求める。  
C ある値(x1,x2)の減算(x1 - x2)を行い、結果が負になるかどうかを調べたい。  
D 20000(10)と40000(10)を比較したい。  
 
解答群
  ア ADDA  イ ADDL  ウ SUBA  エ SUBL  オ AND
  カ OR  キ SLA  ク SLL  ケ CPA  コ CPL
 
   

ヒント:@符号ありの加算は算術加算。 A符号無しのシフトは論理シフト。 C符号ありの減算は算術減算。 D40000として比較したいので。算術比較では-32768〜32767、論理比較では0〜65535が扱える範囲である。


2 次のプログラムを完成しなさい。英字はすべて半角の大文字で入力すること。

(1) ATAI1-ATAI2 を計算し、結果をKOTAE番地に格納する。ATAI1, ATAI2はそれぞれ123(16), 456(16)とする。

REN51 @
LD GR0, ATAI1
SUBA GR0, ATAI2
ST GR0, KOTAE
A
ATAI1 B #0123
C DC #0456
KOTAE D 1
E
 
   

ヒント:@プログラムの始まりを定義するアセンブラ命令。 AOSに戻る機械語命令。 B定数定義のアセンブラ命令。 Cラベル名。プログラム中で使われているラベル名をよく見てみよう。 D答え記憶用の領域を確保する。領域確保のアセンブラ命令。 Eプログラムの終わりを定義するアセンブラ命令。



(2) D1+D2+D3 を計算し、結果をKOTAE番地に格納する。D1, D2, D3はそれぞれ123(16), 456(16), 789(16)とする。

REN52 START
LD @, D1
ADDA GR0, A
B GR0, D3
ST GR0, C
RET
D1 DC #0123
D2 DC #0456
D3 DC #0789
KOTAE DS 1
END
 
   

ヒント:@どのGRを使って計算しているかよく見てみよう。 Aオペランドのアドレスを各部分。定数定義しているラベル名をよく見てみよう。 BST命令はメモリに記憶させる命令。どこへ記憶させるのか。



(3) D1+D2+D3 を計算し、結果をKOTAE番地に格納する。D1, D2, D3はそれぞれ123(16), 456(16), 789(16)とする。また、ラベル名D2, D3は使わずに指標レジスタを使うこと。

REN53 START
LD GR1, =1
LD GR0, D1
ADDA GR0, D1, @
ADDA A, =1
ADDA GR0, D1, B
ST C, KOTAE
RET
D1 DC #0123
DC #0456
DC #0789
KOTAE DS 1
END
 
   

ヒント:@2つ目のデータはD1番地の次である。指標レジスタを答える。 A何かと1を加算している。次の行でさらにGR0に(D1番地+B)番地の内容を加算している。 B指標レジスタを答える。 C何をKOTAE番地に記憶させるのか。



(4) ATAIの2倍と4倍を計算し、結果をANS1, ANS2番地に格納する。ATAIは 3 とする。

REN54 START
LD GR0, ATAI
SLA GR0, @
A GR0, ANS1
B GR0, 1
ST GR0, C
RET
ATAI DC 3
ANS1 DS 1
ANS2 DS 1
END
 
   

ヒント:@値を1ビット左シフトすると元の値の2倍となる。 AGR0は直前の行で2倍の計算がされている。 B2倍された値をさらに2倍すると4倍になる。 CGR0をどこに記憶させるのか。

    (正解の"○"の個数を数えます。)


 (2)と(3)は同じ計算問題である。プログラム的には、指標レジスタを使うか、使わないか、の差である。データ個数の少ない値(ここでは3つ)の計算なので指標レジスタを使った方が面倒になるが、データ個数が多くなると指標レジスタ及び繰り返しの処理ですっきりしたプログラムが可能となる。
 このアセンブラ言語には乗算(×)と除算(÷)の命令がないが、(4)のシフト演算などの演算でプログラムすることができる。この問題(4)では2倍と4倍という限定されたものであるが、n×mの処理も可能である。


 前へ 目次へ 次へ
 CASL U Copyright © 2003  Hiroshi Masuda

 

 

inserted by FC2 system