• 締切済み

アセンブラの命令について

データ転送命令MOV ds と制御命令MOV addを実行するに必要なメモリアクセス回数は最大何回になりますか。 よろしくお願いいたします。

みんなの回答

noname#101303
noname#101303
回答No.2

#1です。 だから…、 その、プロセッサの章に書いてあるプロセッサの内容が判らないと 誰にも判らないと言っているのですよ。 逆に言うと、プロセッサの説明を読めば、答えはわかるはずです。

noname#101303
noname#101303
回答No.1

補足してください。 ・処理系は? ・環境は? ・アセンブラは何? アセンブラって1つしかないと思ってます? CPUの種類の分のアセンブラがあると思った方がいいですよ?

fuji3165
質問者

補足

ありがとうございます。 おそらくそこまで詳しく考えなくていいのかもしれません。。。 学校のレポートで出る程度なんで、おそらくプロセッサの章で習ったところからの出題なので、そこに命令の種類はこれだけある、その中でデータ転送命令はこれこれがある、演算命令、制御命令にはこんなのがあるよ   しか載ってませんでした。 そして、レポートの問いには、「MOV d s命令を実行するのに要するメモリのアクセス時間は最大何回か」「JMP add命令を実行するに要するメモリのアクセス回数を示せ」でした。私自身も何がなんやらで・・・。

関連するQ&A

  • 複数バイト命令実行のタイミング

    1バイト単位でメモリの各アドレスにデータが保存されているコンピューターにおいて、複数のバイトで表される命令がどのように実行されるのか教えて下さい。 メモリには一つのアドレスごとに8ビット(1バイト)のデータが入っており、CPUはプログラムカウンタで示されたメモリ上のアドレスにあるデータや命令を一つずつ順番に読み込んで、それをデコーダーが解釈し各回路への指令に変換することでプログラムを実行していくということは理解しています。 しかし現在の32ビットコンピューターなどにおいてアセンブリの命令、例えば「MOV A,B」(Bレジスタの内容をAレジスタにコピーする)といった命令は、「B90001」などの3バイトのマシン語で表されるとすると、メモリ上では アドレス  内容 0000  0xB9 0001  0x00 0002  0x01 のように3つの連続するアドレスにまたがってデータが存在し、CPUが「MOV A,B」を読み込み、それを順次デコーダーに送るまでには「MOV」、「A」、「B」の3クロックを要すると思います。 その際、デコーダーが命令を解釈し各回路に指令の信号を送るタイミングというのは、最後の「B」のデータを読み込んだ時点になるのでしょうか?もしそうならば、3クロック目に最後の「B」のデータがデコーダーに到着するまでの間、「MOV」と「A」のデータというのはCPUにメモリから読み込まれた後はどのように扱われるのでしょうか? 少し質問が分かりにくく恐縮ですが、情報工学を独学で勉強しており、プログラムが実際の回路でどのように実行されるのか理解したいと思っています。 どうぞご回答よろしくお願い致します。

  • コンピューターシステム コンピューターへの命令 命令群

    コンピューターシステムの問題が解けなくて困っています。 (1)つぎの命令群を順に実行すると、どういう結果が得られるか。 CLRはオペランドをクリアする(0にする)という命令である。 CLR R0 CLR (R0)+ CLR (R0)+ CLR (R0)+ CLR (R0)+ という問題では、 CLR R0   R0を0にする CLR (R0)+ 0000番地を0に,R0を0002にする CLR (R0)+ 0002番地を0に,R0を0004にする CLR (R0)+ 0004番地を0に,R0を0006にする CLR (R0)+ 0006番地を0に,R0を0008にする CLR (R0)+ 0008番地を0に,R0を000Aにする って感じで進んでいくってわかるのですが、 (2)次の命令群を実行した結果を説明せよ。 CLR R0 ADD #1,R0 ADD #2,R0 ADD #3,R0 ADD #4,R0 (3)次の命令群を実行した結果を説明せよ。 MOV #100,R1 CLR -(R1) CLR -(R1) CLR -(R1) CLR -(R1) (4)次の命令群を実行した結果を説明せよ。 CLR @#100 というこの(2)(3)(4)が解けなくて困っています。 誰か教えてください。 よろしくお願いします。 できれば(1)の解答のような感じで書いていただけるとありがたいです。

  • PICの命令 ADDWF f,d のメモリアクセス

    ファイルレジスタf1が定義されていて ADDWF f1,f ;f1=W+f1(=は代入演算子)を実行するとき, (1) W+f1を行なうには,f1のメモリにアクセスする必要があります。 (2)f1=W+f1を行なうには,再度f1のメモリにアクセスする必要があると思いますが, この命令は1命令サイクルで実行されます。 ところで, MOVWF f ; W->f も1命令サイクルで実行されます。 しかし,この命令はメモリに一度アクセスするだけです。 ADDWF f1,f は1命令サイクルで本当に2度メモリアクセスしているのでしょうか? それとも,また違った方法で実行されているのでしょうか? (出典付き,でお教えていただけるとありがたいですが)

  • 8086アセンブラで、メモリ間のデータをストリング命令でブロック転送したい

    ソースが長めなので、簡潔に書きます。ご無礼の段、ご容赦ください。 【目的】PC-9801本体のCバス(汎用拡張スロット)に挿したサウンドボード上の ROM BIOSを読み出し、バイナリファイルに落としたい。既にエミュレータ用に実機からの 吸出しツールは存在するが、ソースが無いので、自作することにした。 その前段階としてアセンブラの修行も兼ねて、ROM BIOSの先頭3ワード(6バイト)を メモリ上のバッファにコピーし、比較して値の合致を確認したい。 将来的にはSCSI ROM BIOSの解析等を試みたい。 【方針】8086のストリング命令でダイレクトにメモリtoメモリでブロック転送を する。具体的にはrep movsbを用い、6バイトを転送する。 【備考】PC-9801-26K互換音源のROM BIOS(少なくとも先頭8バイト)は一意であり、 その並びは、0001h, 0000h, 00d2h である。例外はありません。 86音源でも同様で、下位互換性があることは、拙作ツール(OPNCHK.COM)にて確認済み。 なお、上記バイト列は、セグメントCC000h:オフセット2E00hから読み出し 可能である。 なお実行にあたり、所謂メモリマネージャの類(MELEMM.386等)は一切 組み込まない状態で行なう(EMSメモリマネージャ等との同居対応は将来の課題とします)。 【開発環境】PC-9801DA2(Cyrix Cx486DLC-25MHzに載せ換え; 13.6MB RAM; HA-55BS4 SCSIボード + 240MB SCSI HDD + SONY CPD-17SF9 CRT + NASM 2.06rc10 on NEC DOS 5.0A-H + Turbo Debugger v3.2 と、 秋葉で買ったジャンクFDに入ってたMASM ver 3.00; 予備機 VX41/RS21/EPSON 286VF/EPSON 486HX2/Xv13R16[K6-2 400MHz]/ AT互換機上のNekoIIエミュ/Cygwin上のnasmw.exe) 【参考書】PC-98、8086アセンブラ、テクニカルデータ、古雑誌等 定番本100冊ほど 【拙作コードの失敗点をご指南いただきたい。NASMコードですが、MASM/TASMでも構いません】 ; PC-9801-26K compatible Sound ROM BIOS Copy Program (i/o address 0188h) ; Programmed by OrzHacker666 ; Date 2009-07-13 for NASM 2.06rc10 [Bits 16] org 100h ; COM program section .text start: push es ; これを保存しないと、 push ds ; 画面がめちゃくちゃになる mov ax, 0cc00h ; Sound ROM セグメントアドレス mov es, ax mov ds, ax ; DS:SI -> ES:DI 無意味か? mov bx, 2e00h ; Sound ROM オフセットアドレス lea si, [es:bx] ; ES:BX がSound ROMの開始点 lea di, [ds:sbuff] ; sbuffは仮に確保したバッファ。 ; どこにあるかは、当たり前ですが、不明。そこら辺はCの変数宣言と同じですが。 mov cx, 8 ; とりあえず、アタマ8バイトをコピー cld rep movsb CompareWithOriginal: cmp word [es:bx+4], 00d2h ; これは通る。当たり前。 jne FailedCpyRom cmp word [ds:sbuff+4], 00d2h ; ここで失敗判定。なぜ? jne FailedCpyRom ; sbuffにes:bx~が正しく ; 転送されていないのか? SuccessCpyRom: ; これを拝めれば…。 pop ds pop es mov ah, 9 lea dx, [SUCCESSMsg] int 21h mov ax, 4c00h int 21h FailedCpyRom: ; 見飽きましたOrz pop ds pop es mov ah, 9 lea dx, [FAILEDMsg] int 21h mov ax, 4c00h int 21h section .data SUCCESSMsg: db 'Succeeded !!', 0dh, 0ah, '$' FAILEDMsg: db 'Failed(--;)', 0dh, 0ah, '$' section .bss sbuff: resb 8 ; Cで書くと、差し詰め unsigned char sbuff[8]; であろうか…。 識者の方、よろしくお願いいたします。気になって夜も眠れません。

  • PDP-11のアセンブラ課題

    学校の課題で出されたものです。 まだ勉強をはじめたばかりでどこから手をつけていいのかわかりません>< ○PDP-11のアセンブラは、MOV#1,R2を次のような2語の機械語に翻訳する。PDP-11は、これをど  のように解釈し、どのように実行するのか説明せよ 0001010111000010 0000000000000001 ○PDP-11のMOV命令を使用し、以下の命令のアセンブリ言語表現、機械語表現を示せ。 ・R5が示すアドレスにジャンプする命令 ・サブルーチンから戻る命令 ・R0をスタック上にプッシュする命令 ○次のプログラムをPDP-11のアセンブリ言語で作成せよ。 ・R0が示す番号以降のR2が示すバイト数をR1が示す番号以降に転送 ・R1(上位16ビット)R0(下位16ビット)が示す符号付32ビット値を符号反転 宜しくお願い致します。

  • CPUがメモリ上に書かれている命令を実行した後

    CPUがメモリ上に書かれている命令を実行した後の流れについての質問です。 たとえばメモリ上に「Wordを開く」などの命令があるとき, CPUはその命令を実行すると思いますが,命令を実行とは CPUは, ① ストレージにあるWordのファイルにアクセスする(CPUが直接) それとも ② Wordを開くという演算結果をメモリに返し,その結果,Wordが起動する(CPUの演算結果がメモリを経由) ①と②のどちらでしょうか?

  • PLCの命令語の使い方について

    PLCのラダープログラムを勉強し始めたところの初心者です。 各種PLCには様々な命令語が用意されています。(基本命令、応用命令、演算命令など) これらの基本命令について、個々の動作については取扱説明書を読めば理解できますが、 実際にこれらの命令を使って装置のプログラムを書くときに、何をどう使うことが有効なのか? この辺りがよくわかりません。 たとえば、データシフト命令について、内部レジスタを右にシフトしたり左にシフトしたり。 そういうことができるのはわかりますが、じゃあそれを使ったら装置ではどんなことができるのでしょうか? データ転送命令などもよくわかりません。MOV命令でデータをレジスタに格納できることはわかりましたが、これが何の役に立つのやら… 全くの初歩的な質問で申し訳ないですが、取扱説明書を隅々まで読んでいますが、命令語の基本的な機能については紹介してくれていますが、実世界での使い方については全くと言っていいほど触れられていません。 どんな時に、こうした命令語が有効なのか?具体的な例を教えていただければ幸いです。 また、そうした具体例をまとめたようなサイトがあれば併せてご教授いただけませんでしょうか。 よろしくお願いします。

  • マイクロプロセッサ毎のニーモニックの違い

    アセンブリ言語レベルでの話です。 データ転送命令は、どのプロセッサでも必須の命令ですが、これにはld系とmov系があります。 この二つの違いを教えてください。 とりあえず、私が考えたのは、 1. メーカーによる違いでもなさそう。  インテルは8ビットCPUでld命令、16ビット以降でmov命令ですね。  最悪なのはATMELのAVR。同じプロセッサでldとmovがある。 2. データ転送の向きによる区別でもなさそう。  インテルは「mov dst,src」だし、日立は「mov src,dst」 の2つですが、両方とも反例がありました。

  • CPUがメモリ上の命令を実行した後の流れについての

    CPUがメモリ上の命令を実行した後の流れについての質問です。 メモリ上の「Wordを起動する」という命令をCPUが読み取り,Wordを起動したとします。 その「Wordが起動した」という状況はメモリ上に保存されているのですか? つまり, ① メモリ上に「Wordを起動する」という命令がある ② CPUがWordのファイルにアクセスし,Wordが起動 ③ Wordが起動したという情報がメモリに残る

  • キャシュメモリに関する問題について、答えが分かりません

     すみません、カテ違いかもしれませんが宜しくお願いします。    実はシスアド(18春)の問題で「キャシュメモリに関する正しい表記を選択する」問題ですが、答えが分かりません宜しくお願いします。 ア.書き込み命令が実行されたときに、キャッシュメモリと主記憶の両方を書き換える方式と、キャッシュメモリだけを書き換えておき、  主記憶の書き換えはブロックの入れ替え時に行う方式がある。 イ.キャッシュメモリは、実記憶と仮想記憶のメモリ容量の差を埋めるために採用される。 ウ.主記憶へのアクセスでキャッシュメモリにヒットしないと割り込みが生じ、プログラムによって主記憶からキャッシュメモリへデーターが転送される。 エ.半導体メモリのアクセス速度の向上が著しいので、キャッシュメモリの必要性は減っている。 ・「ア」の「書き込み命令が実行されたとき」とは「何が何に」書き込み命令が実行されたときなのでしょうか。 「ブロック」とはどのようなものでしょうか。 ・「イ」の「実記憶」とは何を指しているのでしょうか。  答えは「イ」か「ウ」のような気がするのですが、具体的にどこがどのように間違っているのか理解できません。 ・シスアド、基本情報の過去問を解説しているサイトはどこかにあるのでしょうか。