这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 嵌入式开发 » 国产MCU » 【STCAi8051U】Ai8051U的32位硬件乘除单元

共3条 1/1 1 跳转至

【STCAi8051U】Ai8051U的32位硬件乘除单元

专家
2025-12-17 15:06:13   被打赏 25 分(兑奖)     打赏

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 寄存器中


专用的寄存器:

图片1.png


向 DMAIR  寄存器写入指令码 ,只能使用立即数寻址方式的指令“MOV DMAIR,#N ”,使用其它指令无法正常触发计算。

一、MDU32算术运算

1、32位乘法

32 位乘法运算是对两个无符号或有符号的补码整数参数执行的。第一个参数位于 R4-R7 寄存器中,第二个参数位于 R0-R3 寄存器中。运算结果存储到 R4-R7 寄存器。

DMA 指令码: 0x02 

图片2.png

2、32位无符号除法

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

DMA 指令码: 0x04 

图片3.png

3、32位有符号除法

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

DMA 指令码: 0x06 

图片4.png






关键词: 懒猫的学习笔记     Ai8051U     32位乘除单元    

院士
2025-12-17 15:57:10     打赏
2楼

这个是编译器没有对应的处理指令,所以只能手动处理。

看着就多少有点麻烦,需要软件介入。


专家
2025-12-17 18:34:30     打赏
3楼

后面我用汇编语言试试,看能不能搞出来。


共3条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]