6800程式設計示例


在本節中,我們將學習如何使用摩托羅拉M6800微處理器來新增多位元組數字。

  • 多位元組數字相加

在這個例子中,我們使用4位元組數字(56 2F 7A 89)16和(21 FB A9 AF)16

在記憶體中,首先,我們將位元組計數儲存起來,然後將數字(從最低有效位元組到最高有效位元組)儲存在不同的段中。所以資料儲存後,記憶體結構如下所示

地址

5000H
04H


.
.
.
5050H
89H
5051H
7AH
5052H
2FH
5053H
56H


.
.
.
5070H
AFH
5071H
A9H
5072H
FBH
5073H
21H


.
.
.


現在,我們編寫一個程式來將這兩個4位元組數字相加,並將結果儲存在5090H開始的位置。

程式

      CLC
      LDX#$5050

LOOP: LDAA $0, X
      ADCA $20, X
      STAA $40, X


      INX
      DEC$5000
      BNELOOP

      CLR$40, X
      BCCDONE
      INC$40, X
DONE: WAI

輸出

地址

5000H
04H


.
.
.
5050H
89H
5051H
7AH
5052H
2FH
5053H
56H


.
.
.
5070H
AFH
5071H
A9H
5072H
FBH
5073H
21H


.
.
.
5090H
38H
5091H
24H
5092H
2BH
5093H
78H
5094H
00H


  • 塊交換程式

現在我們將學習如何使用M6800微處理器交換兩個不同塊中每個元素的內容。

每個塊中的專案數量在5000H位置給出,塊位於5050H和5070H位置。

所以在交換專案之前,記憶體看起來像這樣

地址

5000H
04H


.
.
.
5050H
89H
5051H
7AH
5052H
2FH
5053H
56H


.
.
.
5070H
AFH
5071H
A9H
5072H
FBH
5073H
21H


.
.
.


現在,我們編寫一個程式來交換塊內容。

程式

      LDX#$5050
     
LOOP: LDAA 0, X
      LDAB $20 X

      STAA $20, X
      STAB $0, X

      INX
      DEC$5000
      BNELOOP
      WAI

輸出


地址

5000H
04H


.
.
.
5050H
AFH
5051H
A9H
5052H
FBH
5053H
21H


.
.
.
5070H
89H
5071H
7AH
5072H
2FH
5073H
56H


.
.
.


  • 移動資料塊

讓我們來看另一個M6800微處理器程式的例子。該程式用於將一個數據塊移動到另一個位置。有一個假設,源和目標之間有足夠的距離。所以塊不重疊。基本上,塊移動並非真正的移動,而是將資料複製到其他位置。

塊中的專案數量在5000H位置給出,塊位於5050H位置。

所以在移動之前,記憶體中的專案看起來像這樣。

地址

5000H
04H


.
.
.
5050H
89H
5051H
7AH
5052H
2FH
5053H
56H


.
.
.


現在,我們編寫一個程式將塊內容移動到其他位置。

程式

LDX#$5050
LOOP: LDAA 0, X
STAA $20, X
INX
DEC$5000
BNELOOP

      WAI

輸出

地址

5000H
04H


.
.
.
5050H
89H
5051H
7AH
5052H
2FH
5053H
56H


.
.
.
5070H
89H
5071H
7AH
5072H
2FH
5073H
56H


.
.
.

更新於:2020年6月27日

634 次瀏覽

啟動您的職業生涯

完成課程獲得認證

開始
廣告
© . All rights reserved.