BeHappy 发表于 2024-2-14 18:46:55

汇编语言如何使用MDU32硬件乘除法单元


问题描述:
在使用12-bit ADC单元的时候有感而发,想试试mcu自带的32位硬件乘除法资源,给DMAIR寄存器写入指令后,并没有任何动作。

mcu:STC32g12K128-BETA
开发软件:Keil + C251
调试时的截图:
MOV                WR0, #01H
MOV                WR2, #20H
       
MOV                WR4, #30H
MOV                WR6, #40H
       
MOV                DMAIR, #02D
NOP
JMP                $运行到“JMP$”位置查看寄存器的内容,发现什么也没发生:



汗流浃背了 :-(

神农鼎 发表于 2024-2-14 19:44:48



www.stcai.com/syx

神农鼎 发表于 2024-2-14 19:45:44



第46个演示程序

神农鼎 发表于 2024-2-14 19:47:08

用KEIL C251 控制 STC32G12K128 硬件仿真跑起来,
===就可以看到汇编的代码
重新编译后,有个文件中,也有汇编的代码




BeHappy 发表于 2024-2-14 20:39:48

感谢回复。

把例程46单拿出来,汇编的MDU32硬件乘法是先给DR0、DR4赋值,然后给DMAIR寄存器赋值“0x02”,然后DR4就有结果了
我也仿照例程的样子照做了,还是没有结果 .....
(已把MDU32库加到项目了)
测试MDU32的乘法单元部分代码:
MOV                DR0, #89H
MOV                DR4, #100H
       
LCALL        COMPMUL
ADD                DR4, #01H
JMP                $双字寄存器DR4装的也不是乘法的结果:

神农鼎 发表于 2024-2-14 22:33:01

要在 MCU上实际跑,不是 KEIL C251软仿

垂柳工作室 发表于 2024-2-19 22:34:43

看不懂汇编语言{:4_167:}
页: [1]
查看完整版本: 汇编语言如何使用MDU32硬件乘除法单元