Ai8051U提供32位的乘除法,但在操作上同8051单片机不同,需要通过专用的乘法和除法单元(称为 MDU32)操作。MDU32 支持无符号和补码有符号整数操作数。MDU32 有专用的直接内存访问控制模块(DMA)。所有 MDU32 算术操作都是通过向DMA 控件写入 DMA 指令来启动的寄存器 DMAIR。MDU32 模块执行的所有算术运算的操作数和结果位于寄存器 R0-R7。
MDU32 执行乘除法运算时,单片机会自动切换到 IDLE 模式,即 CPU 停止时钟指令,其它外设仍继续工作。运算完成后,单片机自动切换到正常工作模式。其操作过程:
1、操作数从 DR0-DR4 寄存器加载到 MDU32 模块
2、MDU32 执行算术运算
3、计算完成后,计算结果存到R0-R7 寄存器中
专用的寄存器:

向 DMAIR 寄存器写入指令码 ,只能使用立即数寻址方式的指令“MOV DMAIR,#N ”,使用其它指令无法正常触发计算。
一、MDU32算术运算
1、32位乘法
32 位乘法运算是对两个无符号或有符号的补码整数参数执行的。第一个参数位于 R4-R7 寄存器中,第二个参数位于 R0-R3 寄存器中。运算结果存储到 R4-R7 寄存器。
DMA 指令码: 0x02

2、32位无符号除法
对两个无符号整数参数执行 32 位无符号除法运算。第一个参数“被除数”是位于 R4-R7 寄存器中,第二个参数“除数”位于 R0-R3 寄存器中。结果存储到 R4-R7 寄存器。余数在 R0-R3 中返回。除以零返回0xFFFFFFFF。
DMA 指令码: 0x04

3、32位有符号除法
对两个有符号的补码参数执行 32 位有符号除法运算。第一个参数“被除数”位于 R4-R7 寄存器中,第二个参数“除数”位于 R0-R3 寄存器中。结果存储到 R4-R7 寄存器。余数在 R0-R3 中返回。除以零返回0xFFFFFFFF。
DMA 指令码: 0x06

我要赚赏金
