LMC でマージソートを実装し、事前にソートされた値の配列を入力してそれらを保存し、次に 2 番目の事前にソートされた値の配列を入力し、それらを最初の配列とマージソートしたいのですが、私は多くの問題を抱えています私のソートと配列シフトループ。小さい値を挿入するために配列を下にシフトし始める場所を知るためにラベルを使用しています。1、2、0 を入力してから 2、3、0 を入力すると、(003 002 002 001) が出力されます。
arrayInput (IN) ;; Enter the first array of numbers.
(BRZ sortLoop)
storeArray (DAT 380) ;; Storing the array of numbers.
(LDA arrayInput)
(ADD increment)
(STO arrayInput)
(LDA counter)
(ADD increment)
(STO counter)
(BR arrayInput)
sortLoop (IN) ;; Insert the second array of numbers and start sorting here.
(BRZ outputLoop)
(STO temp)
(LDA 80)
(SUB temp)
(BRP shiftDownArray)
(BR sortLoop)
shiftDownArray (BR label) ;; Shifting down the array everytime we find a smaller value.
(LDA label)
(ADD increment)
outputLoop (DAT 380) ;; Output the results.
(OUT)
(LDA outputLoop)
(ADD increment)
(STO outputLoop)
(LDA counter)
(SUB increment)
(STA counter)
(BRZ end)
(BR outputLoop)
end (HLT)
label (LDA arrayInput)
(ADD counter)
(STO label)
(BR shiftDownArray)
counter (DAT 000)
increment (DAT 001)
temp (DAT 000)