- ベストアンサー
Z80プログラムなんですが・・・。
Z80関係のレポートで困っています。 レジスタ退避・復帰の時にEX、EXX命令を使う事が好ましくない 理由を挙げなければならないんです。 全然分かりませんので、詳しい方のお知恵を拝借できませんでしょうか? どうか宜しくお願いいたしますm(_ _)m
- gardens
- お礼率14% (5/35)
- その他(プログラミング・開発)
- 回答数3
- ありがとう数1
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
たしか裏レジスタとの切り替え命令だったかな? であれば、主な理由としてはレジスタの待避がEX、EXXじゃまずいのは、再帰や内部で更に別のルーチンを呼ぶことがある場合、レジスタ内容の保証が出来ないことでしょう。 スタックであればオーバーフローするまで何度でも待避、復帰できますが、裏レジスタとの交換だと一階層しか潜れません。 通常、コンパイルやアセンブルが出来る言語の場合、ソースを分割しての作成が出来るので、設計の段階では機能(関数やルーチン)などは入力と出力しか定義しません(特にチーム開発時とか。一人でやってても3ヶ月前の自分の書いたコードは別の人が書いたコードと思えといった言葉もあります)。 そのような場合、ルーチンコール中で二度以上レジスタ交換してしまうと内容が破壊されてまともにプログラムが動かなくなるからでしょう。
その他の回答 (2)
- terra5
- ベストアンサー率34% (574/1662)
EX AF,AF' EXX が対象でしょうか。 一度しか使えないことが最大の問題でしょう. プログラムを組んだことがあれば、一度しか使えないことが大きな制約になることがわかると思いますが。 EX (SP),HLみたいのは別口で問題無しと考えてます。 使えるレジスタに制限がありますが、スタックとのやりとりですから。
- kabasan
- ベストアンサー率44% (264/588)
仕事で使ってると基本忘れますね~ 「見た目」の問題ではないでしょうか? pushとpopは一組で使いますよね、文字も違うので待避した、復帰したがわかりやすいと思います。 exは何度も使用していると、表レジスタなのか裏レジスタなのかわからなくなってきます。必ず2個一組で使うと決めていても、うっかりミスでバグとなったとき、ある行のexが待避なのか復帰なのか前後のプログラムを見ないとわかりません。 プログラムの透過性が良いとか表現しますが、見た目でわかりやすい、バグを発見しやすいプログラムのためには好ましくないと言いたいのだと思います。 おまけですが、 単にほんの一瞬待避したいだけならpushよりもexの方が高速なので性格的につい使ってしまいます。(笑)
関連するQ&A
- Z80に関しての宿題なのですが、
Z80に関しての宿題なのですが、 「コール命令を使った電子オルガン」 キーを入力したら対応する音が鳴るようにプログラミングする。(入力を 常に監視し、FFHでなかったらサウンド出力をする。)プログラムは4400H番地から書く。 キー入力:CALL 2018Hと呼ぶとAレジスタに押されたキーの内容が入ってくる。 押されないとFFHが入っている。(いずれかのキーが押されるとAレジスタには00Hから17Hまでの対応する値が格納される。) サウンド出力:Aレジスタに00Hから17Hを入力してCALL 201BHと呼ぶと対応する音が鳴る。 (1)キー入力を行った.Aレジスタにキーの内容が入る。 (2)AレジスタがFFHの場合は(1)に戻る。そうでないときは(3)へ行く。 (3)Aレジスタの内容により、サウンド出力を行った。 (4)(1)に戻る。 ニーモニック CALL , 2018H SUB FFH JP Z , (4400H) ・・・・(ゼロフラグZが1の時、4400番地にジャンプする。) ADD FFH CALL , 201BH JP 4400H ↑のようにすればよいのですが、なぜなのかいまいちわかりません。異なるコードで実装せよ。とのことなので理解したいです。おしえてください。
- ベストアンサー
- その他([技術者向] コンピューター)
- PIC16F193X割り込み時の退避・復帰処理方法
ICマイコンでの割り込み処理について、16F193Xの型番では割り込み発生時における退避・復帰が自動的に行われると認識しているのですが、下記型番では以前の様に wレジスタ、status,PCLATh等のレジスタを退避・復帰をプログラムで保存しておく必要がなくなったということでしょうか? 使う割り込みはタイマー割り込み(timer0)とし、割り込処理中の割り込みは禁止とした場合 因みに割り込みは以下の様に発生させ ////////////////////////// org 0 goto start org 4 goto INTLAP ////////////////////////// INTLAP BCF INTCON,2 INCF TES_CNT,1 RETFIE 割り込み処理中にTES_CONのレジスタ内容をPORTAの出力pinをオシロスコープで観察できる簡単なプログラムで走らせると動作していることが確認できましたが、退避・復帰が行われているかは不明です。 他に自動退避・復帰を確実に実行するためのプログラム等の操作を怠っていないでしょうか? 初心者で認識が誤っていないのか判断が出来ません。 対象型番 PIC16F1933 ? PIC16F1934? PIC16F1936 ? PIC16F1937? PIC16F1938 ? IC16F1939 PIC16F193X/LF193Xデータシート記述より(P71,72) 〇「このデータシートに記載されているデバイスRETFIE 命令では、割り込み前に実行していたアドレスをスタックから取得し、シャドウ レジスタから保存した内容を回復し、GIE ビットをセットすることによって、ISR から通常動作に復帰します。」 内容保存機能 〇「割り込み動作に遷移する際、復帰時の PC アドレス値がスタックに保存されます。また、次に示すレジスタ値も自動的にシャドウ レジスタに保存されます。 ・W レジスタ ・ ステータス レジスタ (TO および PD を除く) ・BSR レジスタ ・FSR レジスタ ・ PCLATH レジスタ 割り込みサービス ルーチンから通常動作に戻るとき、自動的にこれらのレジスタ値が回復されます。 とあります。
- 締切済み
- その他(ソフトウェア)
- Z33のロアボールジョイントブーツを探してます。
Z33のロアボールジョイントブーツを探してます。 車検時に破損で交換とのことでしたが純正品だとゴムのみの部品が無く大野ゴムで扱ってると聞きました。 調べましたがどの品番か分りません Z33 H15年式 UA-Z33 VQ35 です。 どなたかご存知の方いましたら至急お知恵お貸しください><
- 締切済み
- 国産車
- PIC/SWAP命令でWregをrestore?
先日こちらで「SWAPF命令」についてご教示いただきました。ありがとうございました。 その後、いつも学習させてもらっている下記のページにある「割り込み例」の記述で、わからないところがあって、再度お世話になります。超初学者の質問です、どうぞよろしくお願いいたします。 -----ここから引用(ただし各行先頭の番号と:は行数指示のため追加)---------------- 01:【例】WレジスタとSTATUSレジスタの待避と復旧 02: 03:(0004)番地 04: GOTO PUSH ;割込みジャンプ 05: | 06: | 07:PUSH MOVWF W_TEMP ;Wレジスタ待避 08: SWAPF STATUS,W ;STATUS取り出し 09: MOVWF ST_TEMP ;STATUS待避 10: | 11: |(割込み処理) 12: | 13: SWAPF ST_TEMP,W ;STATUSを戻す 14: MOVWF STATUS ; 15: SWAPF W_TEMP,F ;Wレジスタを戻す 16: SWAPF W_TEMP,W 17: RETFIE ;割込み許可リターン -----ここまで引用---------------- (http://www.picfun.com/pic08.html) 基礎知識の確認事項: PIC特有の問題として、 1:PICにはステータスレジスタを直接退避する命令が無く、一旦WREGにステータスレジスタの値を転送してからメモリに退避する必要が有る。 2:MOV命令でステータスレジスタをWREGに転送すると、ステータスレジスタの値が変化してしまう。 3:これらの理由でステータスをWREGに転送する際は、ステータスが変化しないSWAPF命令を使用する。 4:ところがSWAPF命令を使うと、移動しようとするデータの上位4ビットと下位4ビットが入れ替わってしまういわば「副作用」が現れる。 4:それで復帰する時にもSWAPF命令を使用して上下4ビットを元へ戻す。 (前回ご教示いただいたことをまとめると上記のようになりますね。) 質問1: 引用した記述で7行目の「PUSH」は単にラベルとして使用しているだけで、命令としてはPICには無いものですね?PUSH~POPは単語の意味として、AVRに限らず使用できる一般的な意味のある単語なのでしょうか? (補足) AVR命令セットのPDFがアップされています。 http://www.atmel.com/images/doc0856.pdf こちらの13ページををみますと、表の下から2~1段目にPUSH~POPがあります。 しかしPICではPUSH~POPが命令セットに見あたりません。 それでPUSH~POPがAVR専用の命令語だとわかりました。 でも引用したページでは「POP」を使っています。 質問2: 引用した記述の7行目でMOVWF命令を使ってWレジスタをsaveしています。 ところが15行目、16行目では1回ずつSWAPFを使い、合計2回のSWAPFを使っています。7行目でWレジスタをW_TEMPにsaveするときはSWAPFを使わないのに、どうしてrestoreするときはSWAPFを2回も使用するのでしょうか? (補足) 「合計2回のSWAPFを使う部分の機能」が上位~下位反転してしまったピットを戻す機能であることはわかります。 しかし、それであれば7行目でWレジスタをW_TEMPにsaveするときはSWAPFを使えば良いように考えたのですが、、、 それでrestoreするときにSWAPFを再び使用したら良いのでは?と、、、 基礎知識の確認事項2で「MOV命令でステータスレジスタをWREGに転送すると、ステータスレジスタの値が変化してしまう。」としました。 7行目で移動するのは割り込み直前の「Wreg」で「status register」ではないのに、それでも移動すると値が変化してしまうということでしょうか? 初学者の質問で馬鹿らしいかもしれません。 ご解答が面倒で無い方がいらしたら、どうぞご教示よろしくお願いいたします。
- ベストアンサー
- その他([技術者向] コンピューター)
- CASIO Z600 室内の写りが荒い
前まではCASIOのEX-Z350かなんかを使っていて、使いやすく写りも綺麗で非常に満足して使っていましたが無くしてしまい、新しくCASIOのEX-Z600を買いました。1年前くらい。 ところが最近室内での撮影がするようになってきて、室内でフラッシュをたかないと画質が非常に荒くなってしまいます。故障かと思いリペアセンターに出しましたがCCDの感度が上がっているので荒くなってしまうとの事で故障ではないという返答でした。 350のときはそんな事(室内、フラッシュなし)は全然気にせずに撮って普通に満足できる画質でしたが、600の場合はかなり荒い画質(室内フラッシュなしでの撮影のみ)でとても写真と呼べるものではありません。 こんな写りだったら使い捨てカメラの方が全然使えます。 新しい機種に変えて画質が悪くなるというのはありえるんでしょうか? またおなじ機種を使っている方いましたら同じような症状はありますでしょうか?
- ベストアンサー
- デジタルカメラ・フィルムカメラ
- HTMLにプログラムを埋めこむ方法
WEBでいろいろなプログラムを動かす場合にHTMLに埋めこみます ーー例えばJAVAを埋めこむ場合にはアプレットを使ったりーー アプレット以外に他にどんな方法がありますか?特にJAVA関係に ついてわかるとうれしいのですが。HTMLとJAVAの関係について 調べています。ご存知の方、お知恵拝借。
- 締切済み
- HTML
- Z1FCR35キャブレターのセッティング
Z1のFCR35キャブレターのノーマルエンジンでのジェット関係、番数などを教えてください。 マーク2につけていたキャブを使用したのですが、アイドリングが安定しませんでした。 どなたか分かる方お知恵を貸して下さい。 宜しくお願いします。
- ベストアンサー
- バイク・原付自転車
- IXY600かEX-Z750か
小型で高画質で安価、できれば動画撮影機能もあれば。。。という条件のもと、色んなデジカメを調べた結果、CanonのIXY600とCasioのEX-Z750の2つまで絞れました。 http://cweb.canon.jp/camera/ixyd/600/feature02.html http://dc.casio.jp/product/exilim/ex_z750/ が、この先です。 一体どちらを買うべきかで悩んでいます。 http://www.kakaku.com/prdsearch/prdcompare.asp?PrdKey=00500210803.00500410796 上記サイトにあるように、あまりスペックに差がないのです。 なので何を決め手にすれば良いのかサッパリで・・・ もし所有者の方、またはデジカメの選び方に強い方が居ましたら、アドバイスお願いします。 1つ気になったのは、動画の形式なんですが、MotionJPEGとMPEG4ではそれぞれ画質・容量・動画編集時の融通の良さなどどう違うのでしょうか?
- 締切済み
- デジタルカメラ・フィルムカメラ
- フェアレディZ Z31 に、ついて、教えて下さい。
フェアレディZ Z31 に ついて、ですが、、、 前期、後期、、って、、あるのでしょうか??? また、フロントショックを、交換するときに、シェルケースの、中の、ショックだけ、交換するとき、ショックアブソーバー自体、前期、後期は、長さが、ちがうのでしょうか?? 取付の時、ショック自体、前期後期、関係なく、取付可能か、不可能か?? だれか、知っているかた、いましたら、教えて下さい。
- ベストアンサー
- その他(車・バイク・自転車)
お礼
的確なアドバイスありがとうございました。 お蔭様でレポートもなんとかなりそうです★ また、ご縁がありましたら宜しくお願いいたします。 簡単ですが失礼しますm(_ _)m