在 8051 中向右移位一個多位元組 BCD 數


在這裡,我們將看到一個問題,將某些多位元組 BCD 數向右移。BCD 數移位兩位(8 位)。 

讓我們考慮一個四位元組 BCD 數(45 86 02 78)儲存在位置 20H、21H、22H、23H。地址 10H 儲存整個 BCD 數的位元組數。所以執行這段程式碼後,內容將向右移位,20H 將保留 00H。

地址



.
.
.
20H
45
21H
86
22H
02
23H
78






.
.
.

程式

        CLRA;Clear the Register A
        MOVR2,10H;TakeByte Count
        INCR2;Increase R2 for loop
        MOVR1,#20H;Takethe address 20H into R1
LOOP:   XCHA,@R1; Get content, which is pointed out by R1 value
        INCR1;IncreaseR1 for next location
        JNZR2, LOOP ;Check R2 is 0 or not to loop back
HALT:   SJMPHALT ;Stop the program

這裡使用了 XCH 指令。透過使用此指令,暫存器 A 的值和 R1 指向的地址內容被交換。在 wapping 之後,地址向右移動一個位元組,然後再次交換以放置舊值並獲取新值。透過使用此過程,BCD 位元組被移位。

計數器值一開始增加了 1,以便比位元組計數多執行程式一次。如果不增加值,則最後一個位元組將不會被移動,它將被丟棄。

輸出

地址



.
.
.
20H
00
21H
45
22H
86
23H
02
24H
78


.
.
.

更新於: 27-Jun-2020

306 次瀏覽

啟動您的 職業

完成課程後獲得認證

入門
廣告