問題タブ [tasm]
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 - アセンブリ言語でのジャンプの理解(TASM)
だから私は実際にジャンプがどのように機能するかを理解するのに苦労しています、
例を挙げましょう。DXの値が5より大きい場合、L1をループして、L2にジャンプするので、これを実行しましたが、コードはL2で読み取る必要のあるコードの行数をどのように認識していますか?
複数の操作、つまりA、B、Cを実行したい場合、L2にジャンプした後、3番目の操作の後にL2を終了するにはどうすればよいですか?
assembly - 16 進数/10 進数の変換 (Assemly-TASM)
数字を単純に順番に印刷しようとしています。
1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20
ループを使用して、最初に各数値をヘキサに変換して印刷し、10進数のインクリメントに1ずつリセットしてから、数値が9に等しくなるまで次を印刷します。数値が9に等しい場合、DAAを使用して単純に数値を回転させた後数値をシフトして、最終的に結果を文字列に格納しました。
出力は 16 までは問題ありませんが、16 以降はシーケンスが繰り返されます。
望ましい出力:
1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20
電流出力 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,11,12,13,14,15
どうしてこうなるの???
これが私のコードです。
PS: 数字を理解するには、このチャートを参考にしました。
function - アセンブリ言語 (TASM) での関数の作成
ループを使用して最初の 20 の数字を出力したかったのです。
16 進数と 10 進数のコードは同じであるため、最初の 9 つの数値を出力することはまったく問題ありませんが、10 番目の数値からは、各数値を適切なコードに変換し、それを変換して文字列に保存し、最終的に表示する必要がありました。
あれは、
次に、各数値を回転およびシフトして、目的の出力数値を取得します。つまり、
そして、結果を文字列に格納して表示します。つまり、
そして、これが適切なコメント付きの完全なコードです。
コードを何度も繰り返すのではなく、関数を作成し、if/else (ジャンプ) を使用して目的の出力を取得する適切な方法はありますか?
疑似コード:
assembly - TASM:負の数のモジュロ
たとえば、-1%3とすると、結果は2になると思います。
次のTASM命令を実行すると、予期しない結果が発生します。
assembly - dosbox でのターボ リンカー エラー 2003
dosbox で Turbo Linker (tlink) を実行しようとすると、何らかの理由で失敗します。
私は Windows7 64bit を使用しているため、turbo asm と turbo linker を実行できません。
tlink/t hw1
dosbox で実行していたところ、次のメッセージが表示されました。
このエラーを解決する方法を知っていますか? そして、なぜそれが起こるのですか?
loops - 8086アセンブリ言語のネストされたループ
このプログラムで目的の出力を取得するためにループをどの程度正確に使用する必要があるかについて問題があります。
私がやりたいのは、ユーザーから任意の番号を入力し、その番号を降順で並べ替えることです。
コメントのコードのすべてのステップを説明するために、ここで最善を尽くしました。
これが私のコードです、
私が立ち往生しているネストされたループを手伝ってください。
assembly - asm ファイルの結果を表示する
Windows 7 64ビットでTasmを使用して次のプログラムをアセンブルしようとしています:
ファイル名はprog4.asm
私は次の手順に従いました:
これを EMU8086 シミュレーターで実行できますが、DOSBOX でコマンドの実行を確認できません。
加算コマンド後のレジスタ値を表示するにはどうすればよいですか?
assembly - 割り込み 21、AH=0ah の使い方がわかりません
私の情報はここから来ています。この割り当てでは、20 文字以内で読み取り、それらの文字を大文字に変換し、入力を大文字として出力するプログラムを要求します。
int21/AH=0ah からの入力にアクセスする方法がわかりません。上記のリンクを理解しない限り、これ以上正確な質問をすることはできません。誰か説明できますか?また、違いがある場合はTASMを使用しています。また、これをfreedosでテストしています。
更新1:
わかりました、あなたの助けのおかげで、割り込みを設定する必要があり、動作する方法を理解できたと思います.
セットアップ: このバッファを存在させたい ds:dx を指定する必要があります
ds:dx を 20 に設定する必要があります (これにより、バッファーが保持できる最大文字数が設定されます)
ds:dx+1 を 0 に設定する必要があります (これにより、読み込む最小文字数を何らかの方法で設定できると思います)。
実際に int21/AH=0ah を呼び出します。これは ds:dx に移動し、プリセット バイトを解釈します。入力を待っている間、プログラムを停止します
int21/AH=0ah は ds:dx+2+n から私の入力を埋めます (n は '\r' を含む入力文字数です)
私の質問は今、どうすればこれを行うことができるかです。x86 Assembly Language Reference をもう一度調べましたが、まだ役立つものを見つけることができませんでした。
これまでに入手したコード
assembly - TASMのローカルラベル:シンボルはすでに定義されています
プログラムで一般的なラベルにプレフィックスが使用されないように、プロシージャでローカルラベルを使用したいと思います。ローカルラベル(@@)を使ってみました。私の本によると、「ローカルラベルの寿命は、次の非ローカルラベルまで前後にしか伸びません」。ただし、ファイルをコンパイルしようとすると、次のエラーメッセージが返されます。
ソースコードは次のとおりです。
assembly - Tasmはインクルードファイルを見つけることができません
私program.asm
の中にtasmディレクティブを含むファイルをインクルードします
ただし、「ファイルfile.asmが見つかりません」というエラーが表示されます。このファイルは、ソースコードであるD:\sourceと同じディレクトリにあります。TasmはディレクトリにありD:\tasm
ます。TASM.CFG
その行のあるtasm/bin
ディレクトリにファイルを作成しようとしまし/iD:\source
たが、それは役に立ちませんでした。file.asm
また、をディレクトリに移動しようとしましたがtasm/bin
、それも役に立ちませんでした。また、includeディレクティブでフルパスを指定しようとしました
それも役に立ちませんでした。