問題タブ [addressing-mode]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
arrays - 別の単語配列に格納されていない単語配列の合計
*私に割り当てられたタスクは、3 つの 8 ビット値の合計を見つけてメモリ内の位置 SUMS に配置するアセンブリ プログラムを作成することでした。次に、3 つのワード変数の合計を計算し、メモリ内の SUMS + 2 の位置に配置します。次のデータを使用します。
私の問題は、次のコードでエラーが発生することです
1 つは 16 ビット アドレスで、もう 1 つは 8 ビット アドレスであることは理解していますが、それを回避する方法はありますか?
編集:
完全なコード:
残っている私の唯一の問題は、SUMS + 2 の意味を理解していないことです。何をするように求める質問ですか?
binary - マシン命令で 32 ビット バイナリ オペコードをエンコードすることはできません
Motorola 68000 のバイナリ オペコードをフォーマットしようとしてきましたが、宛先メモリ アドレス、命令指定とアドレッシング モード/サイズ、およびメモリ マップされたアドレス バスにコピーされるデータ値の両方をエンコードすることは不可能であることがわかりました。入出力。
Sega Genesis のビデオ ディスプレイ プロセッサについて、Genesis のメモリ マップの C00004 にメモリ マップされている制御ポートに書き込もうとしています。
C0004 は、2 進数で 1100 0000 0000 0000 0000 0100、つまり 3 バイトです。書き込んでいる値は 87 で、VDP はこれを VDP レジスタ #7 で 8787 として認識します。私が抱えている問題は、32 ビット相当のデータをエンコードする方法を理解することです。たとえば、命令プレフィックス指定move.b
、値 87、#$87
および MMIO の宛先メモリ アドレスC00004
は、途中で正しい VDP ポートに再ルーティングされます。 VDP。
全体として、次のようになります。
これは大まかにfourではなく、4 バイトとニブル(正確には 36 ビット!)に変換されます。
Motorola 68000 はmicrocodeを処理するときに 32 ビットのみを解析するため、十分なスペースがない場合 (および同じ命令内) に必要な情報をエンコードするにはどうすればよいでしょうか?
これがほとんどのプログラマーが予想するレベルを超えていることはわかっていますが、誰かがこれを分解して、このエンコード方式がどのように機能するかを説明してくれることを願っています.
xml - XQuery で XPath を使用した eXist-db での表示に関するエラー
ノードの以下の要素のみを名前で表示しようとしています。
Xpathでは、ここに私の声明があります://akweny[parent::akwen/nazwa="Atlantycki"]
そして、これが私のXMLファイルです
そして、ここに私のDTDがあります
そして、これが私のXqueryステートメントです
私のxmlでXpathをすばやくテストするには、次のツールを使用できます:http://www.online-toolz.com/tools/xpath-editor.php
大きな問題は、Exist-DB データが正しく表示されないことです。
私の結果は考えられません...しかし、それはノードの親でなければなりません...
何が間違っているのかわかりません。私を助けてください。
assembly - メモリ参照アセンブリ言語
私はアセンブリ言語の初心者で、今まで多くのことを理解していますが、何日も 1 つのセクションにとどまり、混乱を招き、インターネットでアクセスした多くのページで情報が再びねじれていることが最悪の原因です。このセクションはアドレッシング モード、具体的にはメモリ参照です。たとえば、アセンブリ言語のアドレッシング モード (IA-32 NASM)
2 つの指示は同じように見えますが、コメントは異なります
- mov esi, var : var のアドレス(0x0040120e など) を esi にコピーします
- mov dword [eax], var1 : var1 の値
を eax で指定されたメモリ スロットにコピーします。
どちらの命令もラベルである var または var1 を扱いますが、一方のコメントではコンテンツのコピーであり、他方のコメントではアドレスのコピーであると述べられています。
それで、別の質問をします。
- mov bx, [var]
また、これらの指示の違いは何ですか
- mov [var], bx -これは、var が配列である場合にのみ適用され、次の命令と異なるものではない場合
- 移動変数、bx
- lea eax, [var] — var の値が EAX に配置されます。ここでは平均値です
- LEA EBX、[MY_TABLE]ここに平均有効アドレス
だから私は違いが何であるかを知る必要があり、私が読むことができる信頼できる情報源があり、それが正しいことを確認する必要があります.ちなみに、私はこのチュートリアルを使用しており、Windowsの下でアセンブラーとしてNASMを使用しています.
linux - IA-32 のアドレッシング モード
IA-32 でアドレッシング モードを検索しましたが、アドレッシング モードについて簡単に説明している Web サイトや記事は見当たりませんでした。メモリ変更時の画像と、アドレスモードを画像で特定するだけで簡単に説明できる記事か何かが欲しいです。
IA-32 では、アドレッシングの一般的な形式は次の形式に従うことを知っています。
セグメント + ベース + (インデックス * スケール) + ディスプレイスメント
変位、スケール、インデックス、そして最後にベースの正確な意味を知りたいです。英語もわからないので、強制的に検索しましたが、この場合の単語の技術的な意味が見つかりませんでした(アセンブリプログラミング言語で意味します)。
最後に、IA-32 のアドレッシング モードについて簡単に説明したいと思います。メモリとそのオフセットについての図で説明することをお勧めします。
Linuxの本にあるアセンブリプログラミングのガイドでアセンブリプログラミング言語を学びます。
ほんとありがと。
emulation - 6502 のオペコードからアドレッシング モードをプログラムで決定する方法はありますか?
つまり、オペコードで何らかの方法でエンコードされたさまざまなアドレス指定モードですか? それらはプログラムで抽出できますか、それともこの情報は 6502 のドキュメントにのみ存在しますか? 私はエミュレーターを書いていますが、パフォーマンスには関心がありません。可能であれば、オペコードを受け取ってアドレッシング モードを返す関数があると便利です。
これまでのところ、すべてのゼロ ページ命令で 3 番目のビットが設定されているように見えることを除いて、コードにパターンがあることを示す兆候は見られませんでした。
assembly - 16bit加算を行うプログラムのオーバーフローエラー
エラーは:
(4)オーバーフロー!-評価できません: arr dw 1234h,4321h,1dup(?)
assembly - インデックス付きアドレッシング モード
私はさまざまなアドレッシング モードを試し、このテーマについて調査を行ってきました。インデックス付きアドレッシング モードを使用しようとして、SO のさまざまな例からコードを借りてきました。以下の例では:
作成者は、ネストされたループを使用して 2 次元配列を解析し、最小の数を見つけています。私が本当に興味を持っているのは(ケース1)です:
この部分は、コードをコンパイルするときに問題を引き起こすようで、エラーが発生します:「コンマ、コロン、または行末が必要です」ただし、コードを次のように変更すると(ケース2):
すべてがうまくいっているようです。
正しいインデックス付きアドレッシング モードはどれですか? 私の直感では、「マトリックス」は配列であるため、左ブラケットの外側に配置する必要がありますが、実際にはそうではないようです。ケース1とケース2の違いを説明していただけると助かります。
unix - レジスタの間接アドレス指定
レジスタ間接アドレッシングがどのように機能するかを理解しようとしています。次のように 5 の値を格納する変数があります。
コードの最後の 2 行で、私が本質的にしようとしているのは、eax を number に格納されたデータへのポインターのように動作させ、このデータを number2 変数に移動することです。[register] を介して間接レジスタ アドレス指定を行っていましたが、コードが機能していないようです。構文に関するヘルプは大歓迎です。