在这里,我们将看到如何使用此8051微控制器将两个8位数字相乘。寄存器A和B将用于乘法。没有其他寄存器可用于乘法。乘法的结果可能超过8位大小。因此,高位字节存储在寄存器B中,低位字节在乘法运算后将存储在累加器A中。
我们在20H和21H位置取两个数字FFH和FFH,相乘后结果将存储在30H和31H位置。
地址 | 值 |
---|---|
| … |
20小时 | FFH |
21小时 | FFH |
| … |
30小时 | 00小时 |
31小时 | 00小时 |
| … |
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 INC R0 ; Point to the next location MOV B, @R0 ; take 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。
输出结果
地址 | 值 |
---|---|
| … |
20小时 | FFH |
21小时 | FFH |
| … |
30小时 | 远东 |
31小时 | 01小时 |
| … |