2025 级计算机专业《微机原理与接口技术》课程设计一、设计任务 题目一 用 16 位乘法指令完成 32 位无符号数乘法(结果 64 位) 使用MUL指令,完成双字无符号数乘法程序
算法原理 16 位数 16 位数※ 16 位数 16 位数 DX AX DX AX DX AXDX AX —————————- P4 p3 p2 p1设计原理分析: 我的想法是先把 32 位乘数分成高 16 位和低 16 位,分别存放在不同的参数 d1、d2 中,被乘数依次分为 d3 和 d4,通过 16 位乘法 MUL 指令先让 d4 与 d2 相乘,得到的结果先赋值给p1、p2,然后 d1 与 d4 相乘时,得到的结果中 AX 值直接与 p2 相加,DX 值先赋值给 p3,当 d3与 d2 相乘时,得到的 AX 与 p2 相加,DX 值与 P3 相加,此时需考虑进位,所以使用 adc 指令进行相加,当 d3 与 d1 相乘时,DX 值先赋给 p4,将 AX 值与 p3 相加,此时不需要考虑进位,但是最好需要对 p4 进行进位考虑,所以最后加上一条 adc p4,0 指令,最后调用 dispal子程序将相乘结果 p4p3p2p1 输出框图:被乘数低 16 位与乘数低 6 位相乘开始被乘数低 16 位与乘数高 16 位相乘并与上次相乘结果相加被乘数高 6 位与乘数低 6 位相乘并与上次相乘结果相加调用输出子程序将乘法结果输出被乘数高 16 位与乘数高 16 位相乘并与上次相乘结果相加结束源程序:data segment d1 dw 1234h;乘数高 16 位 d2 dw 5678h;乘数低 16 位 d3 dw 1234h;被乘数高 16 位 d4 dw 5678h;被乘数低 16 位 p1 dw
;存放相乘结果 p2 dw
data endssstack