8051程式:兩個8位數相乘


現在我們將嘗試使用8051微控制器來將兩個8位數相乘。暫存器A和B將用於乘法運算。乘法運算不能使用其他暫存器。乘法的結果可能超過8位大小。因此,高位位元組儲存在暫存器B中,低位位元組在乘法後將位於累加器A中。

我們將地址20H和21H中的兩個數字分別設定為FFH和FFH,相乘後的結果將儲存在地址30H和31H中。

地址



.
.
.
20H
FFH
21H
FFH


.
.
.
30H
00H
31H
00H


.
.
.


程式

        MOV R0, #20H;set source address 20H to R0
    MOV R1, #30H;set destination address 30H to R1

        MOV A, @R0;take the first operand from source to register A
        INCR0; Point to the next location
        MOV B,@R0;take the second operand from source to register B

        MUL AB ;Multiply A and B

        MOV @R1, B; Store higher order byte to 30H
        INC R1; Increase R1 to point to the next location
        MOV @R1, A;Store lower order byte to 31H
HALT:   SJMP HALT ; Stop the program

8051提供**MUL AB**指令。使用此指令可以完成乘法運算。在其他一些微處理器(如8085)中,沒有MUL指令。在該微處理器中,我們需要使用重複的ADD操作才能獲得乘法的結果。

當結果小於255時,溢位標誌OV為低電平,否則為1。

輸出

地址



.
.
.
20H
FFH
21H
FFH


.
.
.
30H
FEH
31H
01H


.
.
.

更新於:2020年6月27日

19K+ 次瀏覽

啟動您的職業生涯

完成課程獲得認證

開始學習
廣告
© . All rights reserved.