• 締切済み

アセンブラについて質問です

EX03Q START LD GR3,X LD GR1,ONE ADDA GR1,GR1 ADDA GR3,GR1 ST GR1,HOGE SUBA GR1,GR1 ST GR1,HENA ST GR3,FUGA RET X DC 119 ONE DC 2 HOGE DC 123 FUGA DS 1 HENA DS 1 END (1)プログラムの実行終了直後の記号番地HOGEの内容を10進符号付き整数で表すとどうなるのか (2)EX03Qの実行終了直後の記号番地Xの内容を10進符号付き整数で表すとどうなるのか (3)EX03Qの実行終了直後の記号番地FUGAの内容を10進符号付き整数で表すとどうなるのか (4)EX03Qの実行終了直後の記号番地HENAの内容を10進符号付き整数で表すとどうなるのか です。 どうかよろしくお願いいたしますm(_ _)m

みんなの回答

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.1

自分が COMET II になったつもりで手を動かせば必ず分かるはず. というより, アセンブラを理解したいなら手を動かせ.

関連するQ&A

  • CASLIIのADDAとADDLの演算

    次の問題があっているのかわかりません。 次のCASLIIプログラムの実行後のレジスタ(GR1,FR)とメモリ(AA,BB,CC番地) の内容を16進表示および符号付き10進表示せよ。 PGM START LD GR1,AA ADDA GR1,BB ST GR1,CC RET AA DC 32767 BB DC 1 CC DS 1 END 32767をGR1に入れて、1加算する。 だからGR1 = 32768 と思ったのですが、先生の書いた答えは -32768 でした。 PGM START LD GR1,AA ADDL GR1,BB ST GR1,CC RET AA DC #7FFF BB DC 1 CC DS 1 END #7FFFに1加算するので GR1=#8000 だと思います。 また自分で書いた板書に Arithmetic[ -32768, 32767](#8000,#7FFF) Logical[0,65535](#0000,#FFFF) とありました。 板書をとったのがだいぶ前なのでこれの意味をよく覚えていないのですが、 ADDA命令のときに扱える値の範囲は-32768,~32767 ADDL命令のときに扱える値の範囲は0~65535 ということなのでしょうか。 その場合、先ほどの問題のADDAの問題で 32767 + 1 をしたら範囲を超えてしまいます。 このような場合どうなるのでしょうか? ADDLの場合も範囲を超えてしまったらどうなるのですか? よろしくお願いします。

  • COMETII上で動作するアセンブラ言語によるプログラム

    このまえ投稿したのですがやり方が悪く削除されてしまいました。 答えてくださった方々、申し訳ありません。 学校で下に示すプログラムを1行づつ解析し行っている処理を見出せというものでした。 EX307 START LD GR0,A LEA GR1,0 LOOP SUB GR0,B JMI ENDDV LEA GR1,1,GRI JMP LOOP ENDDV ADD GR0,B ST GR1,ANS ST GR0,B EXIT A DC 50 B DC 8 ANS DC 1 REM DC 1 END 2行目のAの50をロードしてGR0に入るって言うのがわかりましたが、LEAやらSUB、最初のEX307の意味もわかりません。 よろしくお願いします。

  • CASL(CASL2)でこんな問題があります。ぜひ教えてください。

    ・以下のプログラムを実行したときに,ANS0番地からANS6番地までの各番地に格納される値を16桁の2進数で答えよ。本プログラムのNUM番地からの7語には,それぞれ数値として格納されているものとする。 LAD GR1,O LOOP CPA GR1,LEN    JZE FIN LD GR2,NUM,GR1 LD GR0,CHAR,GR2 ST GR0,ANS0,GR1 LAD GR1,1,GR1 JUMP LOOP FIN RET NUM DC 1,3,5,6,4,2,0 LEN DC 7 CHAR DC'ABCDEFGHIJ' ANS0 DS1 ANS1 DS1 ANS2 DS1 ANS3 DS1 ANS4 DS1 ANS5 DS1 ANS6 DS1 END ・以下のプログラムを実行したときに,ANS番地に格納される値を,4桁の16進数で答えよ。本プログラムはNUM番地からの3語には,222が文字列として格納されているものにする。 START LAD GR0,0 LAD GR1,0 LOOP CPA GR1,CNT JZE NEXT LD GR2,NUM,GR1 AND GR2,COOOF ADDA GR0,GR2 LAD GR1,1,GR1 JUMP LOOP NEXT LD GR3,GR0 SLA GR3,7 ST GR3,WK1 SRA GR3,3 ST GR3,WK2 SRA GR3,1 ST GR3,WK3 SRA GR3,1 ST GR3,WK4 LD GR3,WK1 SUBA GR3,WK2 SUBA GR3,WK3 SUBA GR3,WK4 ST GR3,ANS RET NUM DC '222' CNT DC 3 C000F DC #000F WK1 DS 1 WK2 DS 1 WK3 DS 1 WK4 DS 1 ANS DS 1 END ・以下のプログラムを実行すると,ANS番地からの5語に,以下のような ビットパターンが格納される。 ANS+0番地 1000000000000000 ANS+1番地 0000000010000000 ANS+2番地 0000000000001000 ANS+3番地 0000000000000010 ANS+4番地 0000000000000001 このとき,(1)~(6)の空欄に適切な命令コードやオペランドを入れて, プログラムを完成させよ。 START   LAD  GRO,1   LAD  GR1,1 ((1)) GR2,LEN LOOP SUBA  GR2,=1   ((2)) FIN    ST  ((3))    SLL  ((4))       SLA  GR1,1    JUMP LOOP FIN  RET ANS  ((5))5 LEN  ((6))5    END ・20文字以内の文字列Sを入力し,Sの末尾にある文字※の個数だけ 文字#をSの先頭に追加し,かつSの末尾にある文字※を削除した文字列 Rを出力する。 入力する文字S CASLII※※※※ 出力する文字R ####CASLII こんな質問で非常にもし分けないのですが… 自分なりに色々考えましたが,どうもうまく行きません。 ご指導よろしくお願いします。 わかる範囲で構いませんのでロジックと解説をお願いします。

  • CASLIIで質問です

    32 ビット符号なし 2 進整数と 15 ビット符号なし 2 進整数の乗算を行う副プログラム MULT32の一部です。 質問したいのは、↓のプログラムの中に出てくる「LD GR6,GR1」 という命令です。解説を見てみると意味は乗数をGR6に設定し、GR1は作業用に設定と書いてありました。 しかし、GR1はこのプログラム全体を見ても初登場ですし、GR6にはどのような内容を格納しているのかわかりません。また、なぜ初登場の領域に対して解放という言葉を使っているのでしょうか。 MULT32 START RPUSH LD GR5,0,GR2 ST GR5,H LD GR5,1,GR2 ST GR5,L LD GR5,=0 ST GR5,0,GR2 ST GR5,1,GR2 LAD GR3,15 LAD GR4,1 LD GR6,GR1     ←ここです。 LP LAD GR3,-1,GR3 LAD GR4,1,GR4 SLL GR6,1 JZE FIN

  • アセンブラ言語

    平成17年度 春期 基本情報技術者の問題について質問ですが http://www.rs.kagu.sut.ac.jp/~infoserv/j-siken/H17a2/pm13.html 以下のようにエラーが出てどこがいけないのか分かりません。 どこがいけないのか教えてくれませんか? 0000 NREAD START 0002 RPUSH 0004 IN INBUF,LENG 0006 1020 0151 LD GR2,LENG 0008 6300 0288 JZE ERR 000A 6100 0288 JMI ERR 000C 1210 0051 LAD GR1,INBUF 000E 2621 ADDL GR2,GR1 000F 1230 0000 LAD GR3,0 0011 1250 0001 LAD GR5,1 0013 1260 0000 LAD GR6,0 0015 0000 0000 LOOP CPL GR1,GR2 ラベルの重複 0016 6300 0043 JZE CNV 0018 1041 0000 LD GR4,0,GR1 001A 4140 0296 CPL GR4,=' ' 001C 6300 003B JZE NEXT 001E 1433 LD GR3,GR3 001F 6200 002D JNZ NUMCHK 0021 1230 0001 LAD GR3,1 0023 4140 0297 CPL GR4,='-' 0025 6200 002D JNZ NUMCHK 0027 1145 0152 ST GR4,NUMSTR,GR5 0029 1255 0001 LAD GR5,1,GR5 002B 6400 003B JUMP NEXT 002D 4140 0298 NUMCHK CPL GR4,='9' 002F 6500 0288 JPL ERR 0031 4140 0299 CPL GR4,='0' 0033 6100 0288 JMI ERR 0035 1145 0152 ST GR4,NUMSTR,GR5 0037 1255 0001 LAD GR5,1,GR5 0039 1266 0001 LAD GR6,1,GR6 003B 1211 0001 NEXT LAD GR1,1,GR1 003D 6400 026A JUMP LOOP 003F 0000 0000 ERR LAD GR0,-32768 ラベルの重複 0041 6400 0293 JUMP EXIT 0043 1466 CNV LD GR6,GR6 0044 6300 0288 JZE ERR 0046 1255 FFFF LAD GR5,-1,GR5 0048 1150 0152 ST GR5,NUMSTR 004A 1210 0152 LAD GR1,NUMSTR 004C 8000 0255 CALL DTOB 004E EXIT RPOP ラベルの重複 0050 8100 RET 0051 0000 INBUF DS 256 0151 0000 LENG DS 1 0152 0000 NUMSTR DS 257 0253 END 0255 DTOB START 0257 RPUSH 0259 1021 0000 LD GR2,0,GR1 025B 2621 ADDL GR2,GR1 025C 1200 0000 LAD GR0,0 025E 1230 0000 LAD GR3,0 0260 1041 0001 LD GR4,1,GR1 0262 4140 0297 CPL GR4,='-' 0264 6200 026A JNZ LOOP 0266 1230 0001 LAD GR3,1 0268 1211 0001 LAD GR1,1,GR1 026A 1211 0001 LOOP LAD GR1,1,GR1 026C 4512 CPL GR1,GR2 026D 6500 028C JPL FIN 026F 1041 0000 LD GR4,0,GR1 0271 2340 0299 SUBL GR4,='0' 0273 5200 0001 SLL GR0,1 0275 6100 0288 JMI ERR 0277 1450 LD GR5,GR0 0278 5200 0001 SLL GR0,1 027A 6100 0288 JMI ERR 027C 5200 0001 SLL GR0,1 027E 6100 0288 JMI ERR 0280 2605 ADDL GR0,GR5 0281 6100 0288 JMI ERR 0283 2604 ADDL GR0,GR4 0284 6100 0288 JMI ERR 0286 6400 026A JUMP LOOP 0288 1200 8000 ERR LAD GR0,-32768 028A 6400 0293 JUMP EXIT 028C 1433 FIN LD GR3,GR3 028D 6300 0293 JZE EXIT 028F 3200 029A XOR GR0,=#FFFF 0291 2000 029B ADDA GR0,=1 0293 EXIT RPOP 0295 8100 RET 0296 0020 DC ' ' 0297 002D DC '-' 0298 0039 DC '9' 0299 0030 DC '0' 029A FFFF DC #FFFF 029B 0001 DC 1 029C END

  • CASL2の問題について教えて下さい。

    CASL2を勉強したばかりで、いろいろ調べても分からず、下記の問題が解けなくて困っています。 どなたかお分かりの方いらっしゃいましたら教えて下さい。 よろしくお願いいたします。 下記のプログラムを実行すると、ANS番地からの6語に、以下のようなビットパターンが格納される。 ANS番地+0番地 0111111111111111 ANS番地+1番地 1111101111111111 ANS番地+2番地 1111111110111111 ANS番地+3番地 1111111111110111 ANS番地+4番地 1111111111111101 ANS番地+5番地 1111111111111110 このとき、(1)~(6)の空欄に適切な命令コードやオペランドを入れて、プログラムを完成させよ。 START LAD GR0,1 LAD GR1,1 LD GR2,LEN LOOP SUBA GR2,=1 JMI FIN LD (1) (2) GR3,WK ST (3) SLL GR0,0,GR1 LAD (4) JUMP LOOP FIN RET ANS DS 6 LEN DC (5) WK DC (6) END

  • CASL どうかアドバイスくださいm(_ _"m)ペコリ

    2000÷127を計算して ANSWER=15 AMARI=95 としてアウトしたいんです(×_×;) ↑の文字「ANSWER=」等も出したいんです☆ 以下、自分で考えてみました☆ 合ってるかわからないですけど 何かアドバイスお願いします☆ 間違ってたら間違いを教えてくださいm(_ _"m)ペコリ お願いしますm(_ _"m)ペコリ      START     LAD "GR1,0"     LAD "GR7,0"     LD "GR7,C2000" EX1 SUBA "GR7,C127"      ADDA "GR1,C1"      CPA "GR7,C127"      JMI EX      JUMP EX1 EX   CALL SUB1      OUT "BUFFER,LENGTH"      LAD "GR1,0,GR7"      LAD "GR3,AMARI"      CALL SUB2      OUT "AMARI,LENGTH"      RET C1   DC 1      DC 127      DC 2000 AMARI DC AMARI='      END SUB1 START      LAD "GR3,BUFFER"      CALL SUB2      RET BTD10 DC 10 BUFFER DC ANSWER=' LENGTH DC 10 BTDOR DC #0030      END SUB2 START      LAD "GR3,9,GR3" BTDL1 LAD "GR2,0" BTDL2 CPL "GR1,BTD10"      JMI BTDL3      SUBA "GR1,BTD10"      LAD "GR2,1GR2"      JUMP BTDL2 BTDL3 OR "GR1,BTDOR"      ST "GR1,0,GR3"      LAD "GR3,-1,GR3"      LD "GR1,GR2"      JNZ BTDL1      RET      END

  • CASLIIの問題

    次のプログラムに、 指定された整数値配列の中から最大値を調べるサブルーチンMAXを作成する、 指定された整数値配列の中から最小値を調べるサブルーチンMAXを作成する、 指定された整数値配列を昇順にソートするサブルーチンSORTを作成する、 指定された整数値配列の平均値(整数値)を調べるサブルーチンAVEを作成する、 これらについて教えてください。 PGM START LAD GR1, DATA LD GR2, =10 CALL SUM ST GR0, RESULT RET DATA DC 1,9,3,7,5,10,2,8,4,6 RESULT DS 1 END SUM START PUSH 0, GR1 PUSH 0, GR7 LD GR0, =0 LD GR7, =0 MAIN CPA GR7, GR2 JZE QUIT ADDA GR0, 0, GR1 LAD GR1, 1, GR1 LAD GR7, 1, GR7 JUMP MAIN QUIT POP GR7 POP GR1 RET END GR1はデータの先頭番地、SUMをコールするとGR1が1ずつ加算されてデータが参照できる。 GR2はデータの個数、ラベルMAINで個数を比較している。 などのことはわかるのですが、 プログラムを作るとなるとまったくわかりません。 どなたか教えていただけませんか?? お願いします!!

  • CASLの言語で聞きたいです!

    CASL2000のデータ加算のプログラムで MAIN START ENTRY ENTRY LD GR0,A LD GR1,B ADDA GR0,GR1 ST GR0,ANS RET MARK DC #1234 A DC #7FFF B DC #0001 ANS DS 1 END の#1234,#7FFF,#0007さらに、ANSの意味がよくわかりません。 だれか教えてください!参考書読んでも何書いてあるのかよくわからないんです。 あまりにも初心者すぎて。。。 お願いします!それと初心者にもよくわかる参考書があれば教えてください!

  • プログラムの算術演算で教えて下さい。

    お世話になっております。 とある試験問題のアセンブラ言語について、算術演算が理解できず困っておりますので投稿させて頂きました。 この問題を解決できないと、先に進めない状態となっており、困っております。 【前提】 実機を使用してアセンブルしながら値の確認を行っているのですが、下記の問題において、アドレス8008でGR2の値が下記の様に表示されています。 【GR2】 アドレス:#8012 算術:-32750 論理:32786 1000 0000 0001 0010 また、問題集の解説には下記の様に記載されています(一部抜粋)。 「1回目のGR2は#8012、GR3は#8016です。CPA命令は算術10進数で比較しますから、変換するとGR2が-32750、GR3が-32746です。GR2やGR3に設定したのはラベルのアドレスでしたね。」 【ご質問】 GR2の値が、なぜ「-32750」になるのか?を教えて下さい。 また、これは"8012を指しているのでしょうか?それとも内容の「20」を指しているのでしょうか? 今、私が理解できるのは、 ・実機検証画面の2進数「1000 0000 0001 0010」は、16進数の「8012」を示している ・アドレス8008行によって#8011番地にONEが加算、つまり#8011+1=#8012番地を対象とする ところまでは理解できるのですが、その先どう計算したら良いのかがわかりません。 現在数百ページある書籍の内70ページ程を読み進めたところですが、全体的に算術演算がよく理解できていない様に感じてはいます。 が、書籍を読んでもいまいち理解が難しいため、お伺いします。 【書籍内問題】 (1)下記プログラムを実行した結果、ANS番地に格納される値を10進数で答えなさい。 (2)下記プログラムは誤りがあります。誤っている箇所を修正しなさい。 ■アセンブルリスト  ※-------------------------------- ご覧のブラウザ環境によってスペース等の表示が変わる可能性がありますので、 区切りで「/」を入れております。 見やすくしただけで、問題自体に「/」はございません。 ※-------------------------------- ADDR: メモリ内容  /プログラム  : /REI7004 / START 8000: 1210/0000 /LAD /GR1,0 8002: 1220/8011 /LAD /GR2,DATA 8004: 1230/8016 /LAD /GR3,ENDDATA 8006: 2012/0000 /LOOP /ADDA /GR1,0,GR2 8008: 2020/8010 /ADDA /GR2,ONE 800A: 4423/ /CPA /GR2,GR3 800B: 6100/8006 /JMI /LOOP 800D: 1110/8016 /ST /GR1,ANS 800F: 8100/ /RET 8010: 0001/ ONE /DC /1 8011: 000A/ DATA /DC /10 8012: 0014/ DC /20 8013: 001E/ DC /30 8014: 0028/ DC /40 8015: 0032/ DC /50 8016: ENDDATA /DS /0 8016: 7FFF/ ANS /DS /1 : END 以上となります。 ド素人の質問で申し訳ありませんが、ご回答頂ける方がいましたらよろしくお願いします。

専門家に質問してみよう