問題タブ [hla]
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 - iii、rr、mmm とは何ですか?
The Art of Assembly Languageという本を読んでいます。この段落に出会いました。
iii
特定の命令のオペコードを決定するには、 、rr
、およびmmm
フィールドの適切なビットを選択するだけで済みます。たとえば、命令をエンコードするには、 ( )、( )、および( )mov ax, bx
を選択します。これにより、1 バイト命令orが生成されます。iii=110
mov reg, reg
rr=00
ax
mmm=001
bx
11000001
0C0h
iii
ここで、rr
とmmm
?が何であるか理解できません。誰でも説明できますか?前もって感謝します。
assembly - 組み立て技術に対応するためのプログラミング演習?
私は本Art of Assemblyを介して高水準アセンブリ (HLA) を学んでいます。これは、高水準言語構造を使用してアセンブリ言語の概念を紹介することを目的としています。
問題は、本に書かれていることのかなりの部分を理解しているように見えますが、本には演習や問題が含まれていないことです. では、アセンブリ言語に適した問題集はどこにあるのでしょうか。
assembly - ハイレベル アセンブリ HLA にステートメントを追加
こんにちは、変数に追加したいだけで、その方法がわかりません。
私が欲しいnoOfItems=numberOfItems + i;
assembly - HLA Hello, World - アセンブラー エラー
私はランドール・ハイドの「The Art of Assembly」を読み始めて、私の味覚を刺激し始めました. ここから HLA 1.38 (64 ビットのサポートに必要) をダウンロードしてインストールし、そこにリストされているドキュメントと上記の本の両方に記載されているように、Hello, World プログラムを作成しました。
を実行するhla helloWorld.hla
と、次のエラー メッセージが表示されます。
helloWorld.asm:66: Error: ambiguous operand size or operands invalid for 'push'
問題の組立ラインは次のとおりです。
私はアセンブリ言語でできる限りグリーンであるため、これを機能させる方法がわかりません。私のガスのバージョンと HLA 1.38 の間に不一致があると仮定しています。疑問が残ります: 今は何ですか?
編集:「program」、「begin」、および「end」ディレクティブのみをコンパイルして(stdlibで何かになる可能性を排除して)、事実上何もしないプログラムで同じ結果を得ました。
私は 64 ビットの CrunchBang Linux を使用しています。
assembly - EX6.x86 in The Art of Assembly
Art of Assembly のセクション3.6.7 Self Modification Code Exercisesを手作業で実行しようとしていますが、上位/下位のバイト インターリーブで何か非常に間違ったことをしていると思わずにはいられません (著者がどのように架空の x86 バリアントに対してこれを行います)、またはテキストにエラーがあることを確認します。
つまり、本文中のプログラムは
おそらく「次のコードを100番地に書き込んで実行する」
ただし、これはいくつかの理由で私には意味がありません (まず、バイト 100 に 00 を書き込みます。これは、ジャンプ先と思われる不正な命令です。次に、アドレスの上位/下位バイトが一方、mov ax, c
b ループ内のステートメントで単純に上位バイトと下位バイトを交換すると、これは正しいように見えます。そう:
私は間違っていますか (もしそうなら、なぜですか?)、または b ループ定数の上位/下位バイトを交換する必要がありますか?
hla - HLAの呼び出しエラーの例
私はHLAの世界から始めており、サンプルのCallingHLAをコンパイルしようとしていますが、HLAがコードをコンパイルすると、次のエラーが発生します。
コードは次のとおりです。
エラーはどこにありますか(エラーはTRYにあります)、しかし、どうすればそのエラーを解決できますか?ありがとう
assembly - HLA に変数を追加しますか?
そのため、変数を追加しようとしていますが、機能したくありません。私は本当に簡単なプログラムを持っています。
次のエラーが表示されます。
Mov は数値を変数に移動することになっています..そして、add は 2 つのものを追加することになっています。なぜ機能しないのですか?
私はhlaを本当に理解していないので、助けていただければ幸いです。
loops - HLA ハイレベル アセンブリ連続ループ
問題は、残りの数値が 1 になるまで、入力から 10 進数をループすることです。ただし、最初のループが 0 に達すると、次のように最初の桁から 1 を引いたところから再びループを開始する必要があります。
または、
私は今持っている、
入力が4の場合、どちらが出力されますか
必要な連続性を得るためにネストされた for ループを内部で試しましたが、コンピューターをクラッシュさせずにそれをインクリメントする方法がわかりません...助けてください。
bit-manipulation - 符号付き整数を右シフトするとオーバーフローが発生するのはなぜですか?
8 ビットの負の整数 (-1 から -128 までの符号付き) を指定すると、HLA の右シフトによってオーバーフローが発生し、その理由がわかりません。1 回シフトした場合、基本的には値を 2 で除算する必要があります。これは正の数には当てはまりますが、明らかに負の数には当てはまりません。なんで?たとえば、-10 を入力すると、結果は +123 になります。