其实相当于用C语言中的数组,来解决,比如两个数组第一个放12第二个放34 现在把第一个数组放前面第二个放后面连接在一起就变成1234,相当于12已经乘以100了,而现在变成二进制而已,汇编代码如下:
1;子程序名称:divdw
2. ;功能:进行不会产生溢出的除法运算,被除数为dword型
3. ; 除数为word型,结果为dword型
4. ;参数: (ax)=dword型数据的低16位
5. ; (dx)=dword型数据的高16位
6. ; (cx)=除数
7. ;返回: (dx)=结果的高16位,(ax)=结果的低16位
8. ; (cx)=余数
9. ;计算公式:X/N=int(H/N)*2^16+[rem(H/N)*2^16+L]/N
10. divdw:
11. jcxz divdw_return ;除数cx为0,直接返回
12. push bx ;作为一个临时存储器使用,先保存bx的值
13.
14. push ax ;保存低位
15. mov ax, dx ;把高位放在低位中
16. mov dx, 0 ;把高位置0
17. div cx ;执行H/N,高位相除的余数保存在dx中
18. mov bx, ax ;把商保存在bx寄存器中
19. pop ax ;执行rem(H/N)*2^16+L
20. div cx ;执行[rem(H/N)*2^16+L]/N,商保存在ax中
21. mov cx, dx ;用cx寄存器保存余数
22. mov dx, bx ;把bx的值复制到dx,即执行int(H/N)*2^16
23. ;由于[rem(H/N)*2^16+L]/N已保存于ax中,
24. ;即同时完成+运算
25. pop bx ;恢复bx的值
26. divdw_return:
27. ret
温馨提示:答案为网友推荐,仅供参考