アセンブリ言語の学習第8章

データ処理の1.、2つの基本的な問題

    これは、すでに二つの重要な問題があり、データ処理ありふれた問題です。

まず、任意の場所で処理されるデータ?

どのくらいの第二のデータが処理されるのでしょうか?

    これらの2つの問題は、私たちのプログラムに基づいており、あなたがわからない場合は、データがその大きさから来ます

優れたコンピュータと、それはまた、何もしません

    ここでは、2つのシンボルのREGとSREGを定義します。

    これは、レジスタREGを表し:AX、BX、CX、DX、および8ビットのレジスタでそれらを切り出し、SP、BP、SI、ジ

    SREGセグメントレジスタが表す:DS、SS、CS、ES

 

    アッパーレジスタ、導入BPだけではなく、私はこれだけについてお話しましょうBPは、BXレジスタと同様の機能ではなく、汎用レジスタ

メモリ・アクセスのために[BP]:bpのセグメントアドレスがSS許容SREGに格納されています

 

まず第一の問題、どのような場所でデータを解決するには?

    すべて、もともと設計されたコンピュータがデータを処理した後、マシン命令のほとんどは、データ処理を指令するために使用されています

    カテゴリー3つのデータ処理命令:

        書き込み操作を読みます

    そのための機械語命令については、それが唯一のマシン命令を気にし、値を気にしない、直前に位置データを実行します

    この時点では、データが正常に三つの位置になります:CPUの内部メモリポート

    MOV BX、[ 0 ]メモリ

    MOV BX、AX内部CPU、レジスタ

    MOV BX、内部01HのCPU、命令バッファ

    データは、アセンブリ言語である場合だから、どのように表現するには?

        即時:

            命令に含まれる直接データの場合は、即時のデータのコンパイルが呼び出されます

            MOV斧、1

            斧、200Hを追加

            または斧、0DFH

            MOVら、「」

 

        登録:

            内部レジスタに格納されたデータ

        MOV AX、BX 

        のmov dsは、斧の

        プッシュdsは

        ポップ SPを

 

        

        SA + EA:

            デフォルトでは、SREG BXのDSであります

            デフォルトでは、SREG bpのSSです

            もちろん、また、現在SREGが許可されていることを指摘しました

            MOVの斧、DS:3 [BX + SI] 

            MOV DX、ES:3 [BP +に]

 

    

        各データは、妹の家を持って、データ編集妹妹の家にそれを見つけるためにどのように自宅の住所があるでしょう

    5つの方法があります:     

        ダイレクトアドレッシング:[IDATA]

  相対アドレス指定方法を登録します[BX]

        間接アドレッシング方法を登録します[BX] .idata(構造)

                            IDATA [SI](アレイ)

                            [Bxを] [IDATA(二次元アレイ)

        ベース変更アドレス指定方法:[BX] [SI](2次元配列)

        ベースにプロセス変数の相対アドレッシング:[BX] .idata [SI](テーブル構造のアレイ)

                            IDATA [BX] [SI]

    

        ここで私は(個人的な容量に制限)のアドレス指定方法のこれらのタイプの少しを説明するために来ます。

    ある日、CPUに関するデータ出直接アドレッシングである妹、直接私たちはこの場所で会うことのアドレスへのデータの妹を、再生するためには、それを押すと、直接アドレスを行きます

        あなたはミスデータは火曜日(会った喫茶店に行けばレジスタ)、その後、どこプレーをあなたに教えて、これは対応するデータにアクセスするためのポインタへのポインタを介してアクセスする方法をアドレッシングレジスタ相対、(レジスタ)であり、

   あなたはミスデータは火曜日(会った喫茶店に行けばレジスタを)我々はどこプレーするかを伝える前に、その後、数百メートルを歩いて、これは相当にアクセスするには、ポインタを通じてポインタにアクセスするために相対アドレッシング方法、(レジスタ)でありますデータ

        あなたがコーヒーショップに行き、その後、彼女は火曜日ミスホールは言った、そしてどこ遊ぶするかを伝える、KFCに行く、これはベースアドレスである場合には、二つの組み合わせの後にベース・アドレス・レジスタによって、方法に取り組むデータへのアクセスをインデックス化

        あなたがコーヒーショップに行き、その後、彼女は火曜日ミスホールは言った、そして唯一のどこプレーをあなたに教えて数百メートル離れた、KFCに行く、これは相対ベースアドレスの場合は二つのレジスタの組み合わせを介してベースアドレスによる方法に取り組むインデックス化してから実行しますデータにアクセスするために少し方法

 

 

次は、データの長さを次の問題を解決するには?

    実際には、それは、前のmov斧を言及する前に、この問題は、データの長さを知ることがいかに[BX]?もちろん、レジスタを介してビット数であります

    しかし、のMOV ESの私達の前のセットに従って:[BX]、DS:CPUは、データの大きさを感知することはできませんので、[BX]は、正常に動作しません、

    だから、今回新たに宣言的には、ワード/バイトPTR文のワード/バイトのデータタイプ登場しました

    例えば:

        MOVバイトPTR ES: [BX]、DS:[BX] 

        MOV PTR語ES: [BX]、DS: [BX]

 

さて、ここで次の新しい命令を学ぶために、プログラミングの基本的な問題を解決できます

 

DIV命令:

    これは、除算命令で、追加およびサブ差はDIVの除数と被除数の、あるは一定の制約があります

 

        除数:8ビットおよび16ビットの2種類があり、またはメモリユニットREGで

        配当:デフォルトAX又はAX + DX除数が16ビット、32ビット被除数、下部収納AX、DX高いストレージである場合に

                除数8、16ビットの配当の場合

        結果:除数が8、ALの預金業務である、AH残りを保ちます

                除数は、AX預金事業32は、DXは残りを堆積します

    考えてみましょう: DIV FFFFH、1は何が起こるか、理由はもちろん、総会のオーバーフローを超える除数

 

指令DD:

    そのダブルワードのデータを示します

    例えば:

        データセグメント

            DB 1 

            DW 1つの

            DD 1つの

        データ終了

 

 

オペレータDUP:

    定義された重複排除

    DD 3 DUP(2)== DD 2,2,2

    3 DUP( 'ABC'、 'ABC')=== DW 'ABCabcABCabcABCabc' DW

 

おすすめ

転載: www.cnblogs.com/daker-code/p/12449094.html