アセンブラについての質問です。
MAIN START
LD GR1,A ; GR1=2 LD GR2,B ; GR2=3 LD GR3,C ; GR3=6 LD GR4,D ; GR4=1 ADDA GR1,GR2 ; GR1=GR1+GR2 ADDA GR3,GR4 ; GR1=GR1+GR3 ADDA GR1,GR3 ; GR ST GR1,X ; X=GR1 RET ;
A DC 2 ;
B DC 3 ;
C DC 6 ;
D DC 2 ;
X DS 1 ; 変数 X
END
のコードを短縮したいのですが、
ADDA r1、r2(汎用レジスタ(r1)に、汎用レジスタ(r2)を算術加算する1語長の命令がある)から
ADDA r1,adr[,x](汎用レジスタ(r1)に、有効アドレス(adr)を算術加算する2語長の命令)に変えたいのですがどのようにすればいいのかわからないです。
LD、ADDAの命令の意味は理解していますか?
はい
LD=レジスタデータを読み込む
ADDA命令=算術可算
で実効アドレスに記憶されている内容とGR0の内容を加算してGR0に格納する
これであっていますか?
このプログラムの中での各命令の意味を理解しているのであれば、どのあたりで引っかかっているのか、よくわかりません。
このプログラムを短縮する所でわからなかくなっています。
いやそれは質問に書いてるのでわかりますが。
どこまでどう考えているのかわからないという意味です。それとも考えずに聞いていますか?
すみません、とりあえず
MAIN START
LD GR1,A ; GR1=2
LD GR3,C ; GR3=6
ADDA GR1,B ; GR1=GR1+GR2
ADDA GR3,D ; GR1=GR1+GR3
ADDA GR1,GR3 ; GR
ST GR1,X ; X=GR1
RET ;
A DC 2 ;
B DC 3 ;
C DC 6 ;
D DC 2 ;
X DS 1 ; 変数 X
END
でLD GR4とLD GR2は短縮できると考えています。
可算部分で短縮方法がわからないです。
それで出来てると思いますが。
あなたの回答
tips
プレビュー