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+ 次浏览

启动您的职业生涯

完成课程获得认证

开始学习
广告