LC3 のアセンブリ コードでソート アルゴリズムを作成する方法

user6318284

名前を取り、名前を保存せずに出力する単純なループがあります。

    looptext getc         ;starts text get loop for name
                          ;since name isn't re-used, we don't have to save it
    add r1, r0, -10       ;Test for enter character
    brz finishloop1       ;if enter, cancel the text loop
    OUT                   ;If it's not enter, print out the character typed
    br looptext           ;Go back to loop
finishloop1

次に、プログラムはスペースで区切られた ID 番号を要求します。これらの値はすべて配列に保存され、各ループで、新しい入力が「新しい」最小値または「新しい」最大値であるかどうかがチェックされ、適切なレジスタに設定されます。

【著作権の都合上削除したコード】

ソート アルゴリズムを追加する必要があるコードの最後に、文字だけの配列が残ります。

配列の各インデックスを調べて、文字を数値の順序 (最小から最大) に並べ替える必要があります。

user6318284

皆様、色々とコツを教えていただき本当にありがとうございました。ソート アルゴリズムのページにリンクしてくれた @Ped7g に特に感謝します。私はあちこち探し回って、実際に gitub で、アセンブリ コードにバブル アルゴリズムが記述されている人を見つけました。間接的に答えてくれてありがとう。

注: 答えを見つけるためにここに来る将来の人のために、バブル ソート アルゴリズム コードのリンクhttps://github.com/oc-cs360/s2014/blob/master/lc3/bubblesort.asm を参照してください大学の講義ノートの一部です。

; Implementing bubble sort algorithm
;   R0  File item
;   R1  File item
;   R2  Work variable
;   R3  File pointer
;   R4  Outer loop counter
;   R5  Inner loop counter


            .ORIG   x3000

; Count the number of items to be sorted and store the value in R7

            AND     R2, R2, #0  ; Initialize R2 <- 0 (counter)
            LD      R3, FILE    ; Put file pointer into R3
COUNT       LDR     R0, R3, #0  ; Put next file item into R0
            BRZ     END_COUNT   ; Loop until file item is 0
            ADD     R3, R3, #1  ; Increment file pointer
            ADD     R2, R2, #1  ; Increment counter
            BRNZP   COUNT       ; Counter loop
END_COUNT   ADD     R4, R2, #0  ; Store total items in R4 (outer loop count)
            BRZ     SORTED      ; Empty file

; Do the bubble sort

OUTERLOOP   ADD     R4, R4, #-1 ; loop n - 1 times
            BRNZ    SORTED      ; Looping complete, exit
            ADD     R5, R4, #0  ; Initialize inner loop counter to outer
            LD      R3, FILE    ; Set file pointer to beginning of file
INNERLOOP   LDR     R0, R3, #0  ; Get item at file pointer
            LDR     R1, R3, #1  ; Get next item
            NOT     R2, R1      ; Negate ...
            ADD     R2, R2, #1  ;        ... next item
            ADD     R2, R0, R2  ; swap = item - next item
            BRNZ    SWAPPED     ; Don't swap if in order (item <= next item)
            STR     R1, R3, #0  ; Perform ...
            STR     R0, R3, #1  ;         ... swap
SWAPPED     ADD     R3, R3, #1  ; Increment file pointer
            ADD     R5, R5, #-1 ; Decrement inner loop counter
            BRP     INNERLOOP   ; End of inner loop
            BRNZP   OUTERLOOP   ; End of outer loop
SORTED      HALT

FILE        .FILL   x3500       ; File location
            .END

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

LC3アセンブリでのシフト乗算

分類Dev

ビットのカウントと結果の印刷LC3アセンブリ

分類Dev

NのLC3アセンブリスクエア

分類Dev

lc3アセンブリ-ASCIIを数値に変換

分類Dev

LC3アセンブリ-文字列の長さを数える方法

分類Dev

バイナリLC3で16ビットの数値を印刷する

分類Dev

LC3アセンブリの実行後にレジスタの値が正しくありません

分類Dev

LC3ビットカウンター

分類Dev

LC3でnzp = 000でBRする方法

分類Dev

エピソード的なコンテキストで A3C アルゴリズムをトレーニングすることは実現可能ですか?

分類Dev

LC3、レジスタの値をメモリ位置に格納する

分類Dev

3つの要素サブセットを出力する関数のJAVAアルゴリズム?

分類Dev

RaspberryPI3でopenCVアルゴリズムをリアルタイムで実行する方法

分類Dev

ifステートメントを使用してCで3整数の昇順アルゴリズムを作成するにはどうすればよいですか?

分類Dev

CRCアルゴリズムが誤検知になるように3つのエラーを作成します

分類Dev

lc3に2つの数字を追加して、合計4桁を取得するにはどうすればよいですか?

分類Dev

3種類のボールを分類するアルゴリズム

分類Dev

3Sumリートコードアルゴリズム

分類Dev

JavaでIDを作成するためのアルゴリズム

分類Dev

Rで独自のkmeansアルゴリズムを作成する

分類Dev

クイックソートアルゴリズムで出力を取得する方法

分類Dev

パーティショニングアルゴリズムでサブセットを取得する方法は?

分類Dev

種類(0)から(0,1,2,3,4,5,6,7,8,9)のすべてのセットを生成するクリーンなアルゴリズム

分類Dev

アセンブリで3番地コードを変換する

分類Dev

3つの定数で可能性を計算するアルゴリズム?

分類Dev

二分木をミラーリングするアルゴリズムを作成/実装する方法

分類Dev

Cで最大3枚のコインを処理する高速コイン交換アルゴリズム

分類Dev

巡回セールスマン問題を解決するとき、ブランチアンドバウンドアルゴリズムはブルートフォースアルゴリズムよりどのくらい高速ですか?

分類Dev

vhdlで線形検索アルゴリズムを作成する

Related 関連記事

  1. 1

    LC3アセンブリでのシフト乗算

  2. 2

    ビットのカウントと結果の印刷LC3アセンブリ

  3. 3

    NのLC3アセンブリスクエア

  4. 4

    lc3アセンブリ-ASCIIを数値に変換

  5. 5

    LC3アセンブリ-文字列の長さを数える方法

  6. 6

    バイナリLC3で16ビットの数値を印刷する

  7. 7

    LC3アセンブリの実行後にレジスタの値が正しくありません

  8. 8

    LC3ビットカウンター

  9. 9

    LC3でnzp = 000でBRする方法

  10. 10

    エピソード的なコンテキストで A3C アルゴリズムをトレーニングすることは実現可能ですか?

  11. 11

    LC3、レジスタの値をメモリ位置に格納する

  12. 12

    3つの要素サブセットを出力する関数のJAVAアルゴリズム?

  13. 13

    RaspberryPI3でopenCVアルゴリズムをリアルタイムで実行する方法

  14. 14

    ifステートメントを使用してCで3整数の昇順アルゴリズムを作成するにはどうすればよいですか?

  15. 15

    CRCアルゴリズムが誤検知になるように3つのエラーを作成します

  16. 16

    lc3に2つの数字を追加して、合計4桁を取得するにはどうすればよいですか?

  17. 17

    3種類のボールを分類するアルゴリズム

  18. 18

    3Sumリートコードアルゴリズム

  19. 19

    JavaでIDを作成するためのアルゴリズム

  20. 20

    Rで独自のkmeansアルゴリズムを作成する

  21. 21

    クイックソートアルゴリズムで出力を取得する方法

  22. 22

    パーティショニングアルゴリズムでサブセットを取得する方法は?

  23. 23

    種類(0)から(0,1,2,3,4,5,6,7,8,9)のすべてのセットを生成するクリーンなアルゴリズム

  24. 24

    アセンブリで3番地コードを変換する

  25. 25

    3つの定数で可能性を計算するアルゴリズム?

  26. 26

    二分木をミラーリングするアルゴリズムを作成/実装する方法

  27. 27

    Cで最大3枚のコインを処理する高速コイン交換アルゴリズム

  28. 28

    巡回セールスマン問題を解決するとき、ブランチアンドバウンドアルゴリズムはブルートフォースアルゴリズムよりどのくらい高速ですか?

  29. 29

    vhdlで線形検索アルゴリズムを作成する

ホットタグ

アーカイブ