問題タブ [a86]
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.
assembly - 2つの異なる行に文字列を印刷します
プログラムで2つの異なる行に文字列を表示させようとしています。
これは.comプログラムであり、A86アセンブラを使用しています。
assembly - アセンブリまたは NASM を記述していますか?
私はこれにうんざりしています。しばらくの間、アセンブリを把握しようとしてきましたが、言語ではなくコンパイラに向かってコーディングしているように感じます。
私はこのチュートリアルを使用してきましたが、これまでのところ地獄です。私はNASMを使用していますが、これが問題かもしれませんが、それが最も人気のあるものだと思いました. 最も一般的なアセンブリ形式を学ぼうとしているだけなので、x86 を学ぶことにしました。変数をインクリメントできないなど、愚かなエラーが発生し続けます。最新のものは次のとおりです。divを使用できないことです。
コンパイラを変更する必要がありますか? 分割が標準のようです。2 つのチュートリアルを読む必要がありますか (1 つは NASM に関するもので、もう 1 つは x86 に関するものですか?)。この問題に関する具体的なヘルプはありますか?
assembly - IPレジスタの内容を表示
IPレジスタの内容を印刷する必要があります。(a86)。
私は割り込みハンドラを持っています:
そして手続き ipp:
そして関数印刷:
しかし、それは多くの奇妙な記号を出力します:)
何が悪いのか教えてください。
PS アセンブラに関する私の知識は非常に貧弱です。
assembly - A86 - 定義が前方参照と矛盾しています
A86 を使用して 8086 用のコードを組み立てようとしています。問題を 4 行のコードに絞り込みました。
このコードのどこが間違っていると思いますか? アドレス自体を BX レジスタに移動し、testz アドレスのバイト値を AL に追加しています。
より大きなプログラムでは、#ERROR 13: Byte/Word Combination Not Allowed
.
しかし、はバイトlabel
の単語です。[label]
コンパイラがそれらを区別できないのはなぜですか?
バイト/ワードの競合が見られないためです。
私のコンパイラはオフセット testz と testz を同等に解釈します。バイトコードを調べましたが、違いはわかりませんでした。
上記のコードは機能しますが、これを 1 行で実行できる他の方法はありますか?
[] にラベル名を入れると、コンパイラ a86 では受け入れられません。しかし、私はそれらが言語で許可されていると感じています。
assembly - どのタイプのアセンブラが必要ですか?
私はアセンブリを学んでいて、生の PUSH および POP 命令の概念が本当に好きです。低レベルのものが大好きです。私はこのチュートリアルに従っています。これは、単純な .exe を作成できるコードの一部です。
その男は、このコードを A86 で組み立てることができると言っていますが、私が彼らのサイトにアクセスしたとき、それが消滅し、プログラムのバージョンが Windows XP になっただけだと思われましたか? Windows 64 ビット用の A86 アセンブラはありますか? これらの非常に単純な命令を使用するのはどのタイプのアセンブラですか? (MASMやFASMはあまり好きじゃない)
ありがとう!
PS 私は Olly DBG を使用してプログラムをリバース エンジニアリングしてきました。そのため、アセンブリについてさらに学び、PUSH、POP、MOV、および INT について学びました。
arrays - A86 アセンブリで 1 ~ 100 のアレイを作成する
手順を使用して配列に 1 ~ 100 の値を設定するアセンブリ プログラムを作成しようとしています。私がこれまでに持っているコードは次のとおりです。
ただし、配列 first100 の最初の値は 1 ではなく 513 に変わります。おそらく単純なことですが、どこを台無しにしていますか? ありがとうございました。
datetime - アセンブリ A86 - 時刻の取得と表示
システムの時刻と日付を取得し、それを ASCII に変換して、モニターに表示するアセンブリ プログラムに取り組んでいます。正しく表示するのに問題があり、どこが間違っているのかわかりません。これは課題のためです。可能であれば、解決策だけでなく説明が欲しいです。これが私のコードです:
2015 年 2 月 19 日の午前 9 時 11 分に実行すると、次のようになります。
私がやろうとしていることを理解し、何らかの論理エラーがあるかどうかを簡単に確認できるように、私の意図について多くのコメントを追加しようとしました。分と秒が TIME に入力されていないことが出力から明らかであり、それを修正する方法についていくつかのアイデアがあると思いますが、正午以降、奇妙な時間が表示され、何が起こっているのか混乱しています。私の日付。どんな助けでも大歓迎です。
編集:それを分割し、実際に分と秒を処理することで作業する時間が得られました...おっと。今、私の出力は次のとおりです。
2015 年 2 月 19 日の午前 9 時 23 分に実行
EDIT2:近づいています![DATE] キャッチをありがとう - 私はそれを修正し、正しい月と日の値を取得し、年の値に近づいています。year は 4 文字 (8 ビットではなく 16 ビット) であるため、十分にシフトしていないことがわかりました。-SHR 4ビットだけではすべてを取得できませんでした! 私の出力は次のようになります。
編集 3: CVT_CT を追加して世紀を ASCII に変換し、それを [DATE] 文字列に追加しましたが、それでも同じ出力が得られます...
編集 4: 新しい関数への呼び出しを追加するのを忘れていました... うわー。現在作業中!!! ご協力ありがとうございました!
副次的な質問: 秒が常に 02 になる理由が何か分かりますか?
sorting - アセンブリ A86 - バブル ソート
文字列を取り込み、バブルソートでソートし、ソートされた文字列を出力するアセンブリプログラムに取り組んでいます。デバッガーにアクセスできないため、助けを求める必要があります。私のプログラムは、BSORT サブルーチンで無限ループに陥っているようで、何が原因なのか突き止められないようです。これは課題のためなので、解決策を手渡されるだけでなく、どこが間違っているのか、何を間違っているのかについて説明を受けたい.
これが私のコードです:
実行すると、プロンプトが出力され、明らかな問題なく文字列が取り込まれますが、メッセージやソートされた文字列は出力されません。以前は、メッセージと文字列を出力するようにしましたが (何が変更されて停止したのかわかりません)、完全にソートされていませんでした。
ヘルプ/ガイダンスは大歓迎です。
EDIT 1:さて、良いニュースは、無限ループを引き起こしているループで私の問題を見つけたことです(私は思う)。しかし、ソートは行われておらず、非常に興味深い出力も得られています。実行時の出力は次のとおりです。
何か案は?
編集 2: IT の並べ替えです! :D
しかし、文字列の先頭に小文字の d とスペードの文字がまだ挿入されています。それがどこから来ているかを見つけたら、それは解決されると思います! 上記のコードが更新されました。
ここに私の出力があります:
編集 3: 奇妙な文字が見つかりました - 文字列 [INBUF+2] だけでなく、[INBUF] のすべてを印刷していました。助けてくれてありがとう!:)
variables - アセンブリ変数をどこに置くか?
現在、アセンブリを学んでおり、a86 マクロ アセンブラ、Oracle VM VirtualBox を使用しています。なぜ変数をそのような方法で宣言または配置するのですか(ジャンプコマンドの後)?ジャンプコマンドの前に変数を宣言または配置すると、プログラムはエラーになります。そのような構造の背後に何か説明はありますか? ありがとうございました。
assembly - アセンブリ配列データの格納
ここに私が現在行っていることに関する新しい更新があります。画面全体で同じ単語を検索するために S2 に保存したデータを使用する方法について混乱しています。見つかった場合は、単語を強調表示します。
DOSBOX - コンパイラ: A86
入力と出力に int 21h を使用することはできませんが、プログラムを終了するためだけに使用できます ( return )