初心者向けのアセンブラー

どんなビジネスでも、主なことは始めることです。 または、もう1つの良いことわざがあります。「始まりは戦いの半分です。」 ただし、関心のある質問にどのようにアプローチすればよいかわからないこともあります。 私の記憶はまだ新鮮であるという事実のために、私は興味を持っている人と私の考えを共有することを急いでいます。



画像



私は個人的にPCの下ではなく、マイクロコントローラの下でそれを組み立てるとすぐに言います。 (AVRマイクロコントローラーとは異なり)PCを使用したこれらのマイクロコントローラーのコマンドシステムは非常に似ているため、これは実際には重要ではありません。 そして実際、彼はアフリカのアセンブラーおよびアセンブラーです。



もちろん、最初から最後まで必要なすべてをこの記事で説明することを目標に設定していません。 幸いなことに、膨大な量の文献がすでにアセンブラーで作成されています。 そして、はい、私の経験は他のプログラマーの経験とは異なるかもしれませんが、私の理解でこの問題の基本概念を概説することは不必要ではないと思います。



そもそも、好奇心itive盛な新兵を安心させましょう。アセンブラーは、ステレオタイプな意見に反して、まったく複雑ではありません。 それは「地球」に近い、つまり建築に近いものです。 実際、主要なアイデアを把握すれば、非常に簡単です。 高級言語やさまざまな特殊なプログラミングプラットフォーム(上記のすべてでは、C ++、MatLAB、およびプログラミングスキルを必要とする他の同様のもの)とは異なり、チームは1回または2回それを回避しました。 初めは、二重積分を計算する必要があったとしても、このタスクはただ戸惑うだけでした。 実際、比fig的に言えば、アセンブラーでは数値の加算、減算、およびシフトのみが可能です。 しかし、アセンブラの助けを借りて、任意の複雑な操作を実行でき、コードは非常に軽くなります。 ここでは、例としても、たとえばポート番号2のゼロピンに接続されているLEDを点灯する必要があります。

bset P2.0

そして彼らが言うように、問題はありません。 直列に接続された4つのピースをオンにする必要がありますか? はい、簡単に:

mov P2、#000fh

はい、ここで私は初心者の戦闘機がすでに数字システムに精通していることを意味します。 まあ、少なくとも小数で。 ;)



したがって、アセンブリの問題で成功するには、マイクロコントローラのアーキテクチャ(私の場合)を理解する必要があります。 今がその時です。



ちなみに、アーキテクチャの知識の中で痛い点の1つは、メモリの構成です。 ここでHabréで対応する記事を見ました: habrahabr.ru/blogs/programming/128991 。 また、主要な問題点である中断についても言及できます。 物事は複雑ではありませんが、最初は(何らかの理由で)認識が困難です。



困難なタスクに直面し、最初にそのアプローチ方法を知らない場合は、アルゴリズムを記述するのが最善です。 本当に節約できます。 そして、最初は、プログラムが完全に複雑ではない場合でも、このプロセスはすべてを頭の中に配置するのに役立つため、アルゴリズムから始める方が良いでしょう。 実験データに従って二重積分を計算する例に戻って、私は終日アルゴリズムを考え直しましたが、それからわずか20分でプログラムを作成しました。 さらに、アルゴリズムは、プログラムのさらなる近代化および/または動作に役立ちます。さもなければ、アセンブラーコードは、行ごとに理解される場合、一般的なアイデアが何であるかを理解するために多くの作業が必要になります。



したがって、成功の2番目の鍵は、適切に設計され、適切に設計されたアルゴリズムです。 すぐにデバイスに座ってプログラムを作成しないことを強くお勧めします。 移動中に賢明なことを書くことはありません。 これらは2つです。



実際、私はファンドリンとして書きたいと思います。「これはt-t-threeです」...しかし、私はここでやめることができるのではないかと心配しています。 さらにいくつかの推奨事項とジンジャーブレッドを追加したいと思いますが。



私のやや混乱した独白を要約すると、アセンブリ言語プログラミングの重要なポイントは、アーキテクチャの知識と思考の一貫した構築です。 もちろん、同じPCの内部について記述した文献の研究にすぐに突進する必要はありませんが、一般的なアイデア(少なくとも最初は繰り返します)が非常に必要です。



そして今、約束のジンジャーブレッドクッキー! ここで私はいくつかの不可解なアセンブラについて十字架につけていますが、実際には何が良いのでしょうか? はい、たくさんあります! まず、もちろん、多くのコマンド、使用されるライブラリ、およびその他の関連するゴミを覚える必要はありません。 ほんの2、3のチームで、十分な準備が整っていることを考慮してください。 第二に、マシンコードに非常に近いため、ほとんど同じことができます(同じ高水準言語とは異なります)! 第三に、アセンブラーのコードは、言葉遣いが最大限簡潔であるため、非常に迅速に実行されます。



一般的に、固体プラス。 この楽観的なメモで、休暇を取らせてください。



All Articles