問題タブ [z80]
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.
microcontroller - Z80 フラグ - 生成方法
Z80互換プロジェクトを設計しています。私はフラグレジスタを設計しています。
私は当初、フラグは入力と ALU 操作のタイプに応じて ALU から直接生成されると考えていました。
しかし、命令とフラグの結果を見ると、フラグが常にこのロジックと一致しているようには見えません。
その結果、毎回正しいフラグを生成するために、ALUにもオペコードを供給する必要があると想定しています。しかし、これは設計を過度に複雑にするように思われます。そして、この大きな設計ステップを行う前に、インターネットで確認したいと思いました.
私は正しいですか?または、本当に混乱していて、最初に考えたのと同じくらい簡単ですか?
assembly - 「IM1」命令に関するz80アセンブラの問題
コード
エラー
このオンラインIDEの使用http://clrhome.org/asm/
それは私に与えます: 未知の命令または指令IM(hello_z80の行 "IM 1")
それで?
私はここで愚かなことをしていますか?
なぜこのエラーが発生するのかわかりません。
グーグルで運がなかった。
assembly - Z80 異なるプログラム ブロックがメモリ内の異なる場所にどのようにロードされますか?
私の質問
以下のコードをビルドすると、「319920C30020C30A20FBED563E00C600CA0520F33E55D3073E00FBC9」が表示されます
私の問題は、コードの各ブロックがプログラムメモリ内の要求されたアドレス0000H、0038H、および2000Hにあるように、これがゼロで埋められると仮定したことです。
手動でパディングを行う回避策がすぐにわかりますが、Z80 プロセッサに上記のプログラムをロードして、正しいアドレスに配置するにはどうすればよいでしょうか?
コード
z80 - CP/M 3.1 (z80) 用の最小限のアセンブラー プログラム
私は自分の愚かさとの戦いに負けているようです。
このサイトでは、CP/M のさまざまなバージョンでのシステム コールについて説明しています。
ただし、呼び出し 2 (C_WRITE、コンソール出力) を使用しようとすると、何も起こりません。
次のコードがあります。
ここで記憶から引用します。タイプミスがある場合は、ファイルがコンパイルされ、開始する COM ファイルがあったため、オリジナルには含まれていないので安心してください。
行の意味は次のとおりだと思います。
- これがアドレス 100h にロードされることを確認してください (0h から FFh までがゼロ ページです)。
- システムコール 2 の E レジスタに ASCII 'a' をロードします。
- システムコール 2 の C レジスタに整数 2 をロードします。
- システム コールを作成します (システム コールへの JMP はゼロ ページのアドレス 5 にあります)。
- プログラムを終了します (終了コマンドはゼロ ページのアドレス 0 にあります)。
プログラムは問題なく起動および終了します。最後のコマンドを削除すると、コンピューターがハングします (これも予想どおりで、CALL 0 が機能することを示しています)。
ただし、ASCII 文字は出力されません。(ただし、余分な新しい行が出力されますが、システムがそれを行った可能性があります。)
CP/M プログラムに、システム コールが行うべきことを実行させるにはどうすればよいですか? 私は何を間違っていますか?
更新: 問題は、私が試したすべてのアセンブラーが特定の形式のソース ファイルを想定していたことです。このファイルは、Microsoft のマクロ アセンブラで動作しました。
asm.com (DR のアセンブラー) と m80.com (Microsoft のマクロ アセンブラー) は Intel 8080 ニーモニックを予期しており、明らかに異なる z80 ニーモニックを予期する必要があるときに通知する必要があると思います(私は推測しています)。
とにかく、asm.comを気にせずに画像自体を単に書くことを示唆しているので、それも正しいので、以下の答えを受け入れます。
c - UARTを介した単純なZ80システムのブートローダーの設計、プログラムのロード先
z80システム用のブートローダーを書き始めました。これまでのところ、プログラムはシリアル経由で16進数を受け入れ、メモリ内の場所にロードできます。
私が抱えている問題は、ブートローダーがメモリの先頭にあり、割り込みを使用していることです。ブートローダーを上書きせずに新しいプログラムをロードするにはどうすればよいですか?
(また、ロードされたプログラムは割り込みも使用したい場合があります)
assembly - フラグレジスタ Z80 の現在の値を出力するには?
プログラムをデバッグしたいのですが、フラグ レジスタの値を知る必要があります。z80 プロセッサー用。
[私の唯一の推測は、jp *、nn を使用し、ジャンプに応じてレジスタ A にビットを設定して条件をテストすることですが、確かにもっと簡単な方法がありますが、私はそれを見ることができません]
cpu - Z80 CPU の AND 演算はどのようにオーバーフローしますか?
私は zilog z80 のマニュアルを参照していますが、AND 命令を読んで少し困惑しています。「影響を受ける条件ビット」セクションに、操作がオーバーフローした場合に P/V フラグが設定されると記載されています。add または sub 命令がどのようにオーバーフローするかは理解できますが、AND 演算がオーバーフローすることは意味がありません。どんな助けでも大歓迎です!! ありがとう!
emulation - 影響を受ける Z80 DAA フラグ
次のリンクでは、
http://www.z80.info/z80syntx.htm#DAA
Hフラグをセットする条件に戸惑いました。説明には表を見るように書かれていますが、DAA の後に列 C がある C とは異なり、H の場合、DAA の前に H しかありません...
では、DAA 後に H をどのように更新すればよいのでしょうか? 助けてくれてありがとう!!感謝します!:)
emulation - 特定のサイクル数でエミュレートするのはなぜですか?
私は複数の場所で見ました-次のエミュレート方法
つまり、サイクルはエミュレート関数に渡されます
エミュレートするためにこのアプローチを行う理由、つまり特定のサイクル数でエミュレートする理由を理解するのに苦労していますか? このアプローチが役立ついくつかのシナリオを教えてください。
どんな助けでも心から感謝します!!!
assembly - m80 マクロ アセンブラ org ディレクティブ
私は Microsoft の古い m80 マクロ アセンブラを使用していますが、しばらく大きな問題は発生していません。
しかし、16 進数で ORG ディレクティブを使用しようとしていますが、失敗します。
これは機能します:
ただし、これは機能しません。
m80 は致命的なエラーだと主張しています:
9 より大きい数字を含む数値で ORG ディレクティブを使用するにはどうすればよいですか?
私は何が欠けていますか?