• ベストアンサー

CASLIIの命令文の問題

pipipi523の回答

  • ベストアンサー
  • pipipi523
  • ベストアンサー率40% (148/365)
回答No.2

完全に間違いというわけではありませんが、 何のためにマスクするのかを考えてみてください この場合はおそらく下二桁を取り出したいのでしょう それならば、 XXXXとANDして00XXに出来る値がマスク値です 0001、0010、1000、0101(1285) に、 0000、0000、0011、0100(0034) をANDしても0085にはなりませんよね

g_jellyfish
質問者

お礼

なるほど 00FFつまり 0000、0000、1111、1111がマスク値となるのですね。 有難う御座いました。

関連するQ&A

  • CASLIIの問題なんですが

    CASLIIの問題なんですが DAT番地より格納された5個のデータの0以上の数の個数をGR2に数えるプログラムを作成せよ。 という問題が解けません>< どなたかご教授お願いします。

  • CASLIIの解説

    以下のような問題があり、解答がありますが理解できません。 すみませんが、どなたか解説をお願いします。 ---------------------------------------------------------- ■問題  10進数の「5×20」の結果を求め、その結果をメモリに格納するプログラムを作成せよ。ただし、「5×20」の数を他の数に置き換えた時も掛け算が行えるプログラムにすること。 ■解答  SAMPLE START LAD GR1,0 LAD GR2,1 LD GR3,=5 LOOP LD GR4,C20 AND GR4,GR2 JZE NEXT ADDA GR1,GR3 NEXT SLA GR3,1 SLL GR2,1 JNZ LOOP ST GR1,ANS RET C20 DC 20 ANS DS 1 END

  • CASLの問題が分かりません。

    資格の勉強のためCASLIIを勉強しているのですが、問題がわからなく質問します。 ●10進数1000を16ビットの2進数で表現した時、その値の中に1が何個含まれているかを求め、その結果をメモリに格納するプログラムを作成せよ。 SAMPL  START ; 1が立っている数 LAD GR1,0 LAD GR2,1 LOOP LD GR3,C1000 AND GR3,GR2 ;1が立っているか調べる JZE NEXT ;1が立っていない場合ジャンプ LAD GR1,1,GR1 ;1を加算 NEXT SLL GR2,1 ;1ビットを左にずらす JNZ LOOP ;繰り返し ST GR1,ANS RET C1000 DC 1000 ANS DS 1 END このプログラムでAND GR3,GR2 の部分からよくわからなく、コメントの「1が立っているか調べる」とありますが、1が立っているとはどういう意味なんでしょうか?それ以降から理解できなく、解説をお願いします。

  • マイクロコンピューター制御の問題です

    「CASL2のプログラムを作成せよ」とのことで、次の問題が出されました。 問1.GR1の中身の値(正の整数)とGR2の中身の値(正の整数)の最大公約数をGR3 に入れて返すようなサブルーチンGCDを作れ。再帰を利用すること。   (ヒント)   最大公約数を求めるには、ユークリッドの互除法というアルゴリズムがある。C 言語で記述すると、再帰を使って以下のように書ける。  int gcd (int x,int y){ if (y==0)return x; return gcd(y,x%y); } 問2.IN命令により入力された10進数の数値を、16進数に変換して、OUT命令により 表示するプログラムをかけ。 以上の二つです。 手前勝手な事情ですが、明日8/9の午後4時までに、解答の方をよろしくお願いします。

  • CASLIIの問題が分かりません。

    資格の勉強のためCASLIIの参考書を買い問題を解いてるのですが分からないので質問します。 4桁の16進文字列を入力し、それを数値に変換してメモリ上に格納するプログラム。 SAMPL16 START LD GR1,0BUF LD GR0,=1000 CALL REVESUB OUT OBUF,LEN LET OBUF DS 4 LEN DC 1 ANS DS 1 END REVESUB START PUSH 0,GR1 PUSH 0,GR2 PUSH 0,GR3 PUSH 0,GR4 LAD GR0,0 LAD GR2,0 LOOP SLL GR0,4 ;ここまでの結果を4ビット左シフト LD GR3,0,GR1 ;1文字取り出し CPL GR3,='A' JMI NEXT ADDL GR3,=9 NEXT AND GR3,C000F ADDL GR0,GR3 LAD GR1,1,GR1 LAD GR2,1,GR2 CPL GR2,=4 JMI LOOP POP GR4 POP GR3 POP GR2 POP GR1 RET C000F DC #000F END SLL GR0,4 で4ビットシフトする意味がわかりません。あとLD GR3,0,GR1で1文字だけ取り出せるのですか?取り出すのは下位からですか?

  • for文を使って。

    プログラミングを勉強している初心者ですが、以下の問題につまずいてしまいました。 「10000以下の任意の数を入力して、10000からその数を引くことのできる回数を調べるプログラムを作成せよ。」 for文とデクリメント演算子を使ってつくろうとしているのですが…。 詳しいアドバイスお願いします!!

  • 問題がとけません

    以下の問題がわかりません。 教えていただけますでしょうか? 以下の仕様を満たすプログラムを作成せよ。 キーボードから2整数を読み込み,読み込んだ順に標準出力にそれらの値の10進数表現をスペース文字で区切って1行に書き出し,改行する。読み込んだ一番目の整数の値が1000でなければ,次の2整数を読み込み同様に書き出す。一番目の整数の値が1000のときプログラムの実行を終了する。 ヒント------------------------------------------------- stdio.hをインクルードする。 読み込んだ値を保持するための2つの整変数を宣言して定義する。 2つの整数を読み込んで,その値を書き出すことを繰り返す部分は,次のdo-whileループで実現する。 do { (1) //2整数の読み込み //2整数の書き出し } while(条件); (2) プログラムの実行は上から順に行われるが,(2)で条件が真であれば(1)に戻り,そこから再び下方に順番に実行される。条件が真でなければ,(2)の次の行から下に順番に実行される。したがって,(2)の条件が満たされているかぎり,(1)と(2)の間を繰り返し実行することになる。このdo-whileループは,必ず1回は実行される点で,whileループと異なる。 行中に//があると,そこから行末まではコメントとみなされ書かれている内容は無視される。また,任意の位置に書かれた,一対の/*と*/の間もコメントとみなされる。 この課題の繰り返しの条件は,読み込んだ一番目の整数が1000でないこと。 iを整変数として, i != 1 という論理式の値は,iが1のとき偽,iが1でないとき真である。 2種類ある等値演算子の1つであるこの"!="という2項演算子(演算子の両側に1項ずつの2項を使う演算子)による演算結果は,両側の2つのオペランド(演算子が働きかけるもの)の値が「等しくない」とき真,それ以外のとき偽である。もう一つの等値演算子は"=="で,演算結果は2項が「等しい」とき真,それ以外のとき偽となる。 

  • CASLII4桁の16進文字列を数値に変換するプログラム

    問 4桁の16進文字列を入力し、それを数値に変換してメモリ上に格納するプログラムを作成せよ。 PROGRAM START IN IBUF,LEN LAD GR1,0 LAD GR2,0 LOOP SLL GR1,4 LD GR3,IBUF,GR2 CPL GR3,='A' JMI NEXT ADDL GR3,=9←←← NEXT AND GR3,C000F ADDL GR1,GR3 LAD GR2,1,GR2 CPL GR2,=4 JMI LOOP ST GR1,ANS RET IBUF DS 4 LEN DS 1 C000F DC #000F ANS DS 1 END 上記の←←←の行は入力文字がA~Fの場合の数値の調整の為にあるらしいのですが、なぜ9を加算しているのか分かりません。ご理解のある方はお手数ですが教えて頂けないでしょうか。よろしくお願い致します。

  • sambaのパーミッション設定について

    自宅サーバーでsambaを用いてファイルサーバーを運用しているのですが、sambaのパーミッションについて疑問があります。 疑問(1) : create mask/directory mask パラメータについて マニュアルに、 『作成時に付与されるパーミッションは、 DOS の属性を UNIX のパーミッションに変換することにより生成され、このパラメータとビット単位の AND 演算が行なわれる。 ここで設定されないビットは、 ファイル作成時のパーミッションから削除される。』(一部略) とありますが、 『このパラメータとビット単位の AND 演算が行なわれる』の『AND演算』とはどのような演算を指すのでしょうか。 具体的に教えていただきたいと思っております。 疑問点(2) : force create mode / force directory mode パラメータについて これもマニュアルに、 『Samba によって作成されたファイルのパーミッションに 必ず設定される UNIX のパーミッションビットを指定する。 これは、ファイルの作成時やパーミッションの変更時に、 パーミッションビットに対して、このパラメータの値でビット単位の OR 演算を行なうことで実現される。このパラメータの値がビット単位の OR 演算に用いられるのは、 create mask パラメータの適用後である。』(一部略) とあります。 こちらは『OR演算』とありますが、この『OR演算』についても具体的に教えていただきたいと思います。 初歩的ですが、よろしくお願いいたします。 マニュアル : http://www.samba.gr.jp/project/translation/current/htmldocs/smb.conf.5.html

  • アセンブラの問題です。(テーブル)

        mov cx、4     xor bx,bx countb:mov di,mask     and di,ax     add bx,[nbit+bi]     shr ax,4     loop countb      mask: db 0x00,0x01,0x01,0x02,0x01,0x02,0x02,0x03・・・0x04 というプログラムがありました。これは1ワード内にonとなっているビット数を求める問題らしいのですが、テーブルという物を使っているようです。 このテーブルという物がよくわかりません。さらにこのプログラムではmov di maskで何をやっているのだか。さらにその後のandやaddも何をしているのかよくわかりません。さらに、この問題とは関係がないのですが、アドレスベクターテーブルという物もよくわかりません。これはswitch文の説明の後にあったのですけど。 どうか御教授ください。