汇编写程序要使用两个字节怎么办

2020-01-25 15:22发布

本帖最后由 一匹狼 于 2013-10-11 12:23 编辑

我写了个程序,大致意思是——求解10的阶乘,即1*2*3*...*10,我把结果的高四位放在40H,低四位存放在41H
  1. ORG 0000H
  2. SJMP MAIN
  3. ORG 0030H

  4. MAIN:
  5. MOV R0,#31H       
  6. MOV A,#01H
  7. MOV R1,#0AH

  8. LOOP1:
  9. MOV @R0,A
  10. INC R0
  11. INC A
  12. DJNZ R1,LOOP1

  13. MOV A,31H
  14. MOV R0,32H
  15. MOV R1,#09H

  16. LOOP2:
  17. MOV B,R0       
  18. MUL AB
  19. INC R0
  20. MOV 40H,B
  21. MOV 41H,A
  22. DJNZ R1,LOOP2                                                                                                                                                                                                                                                                               
  23. SJMP $
  24. END
复制代码这个程序智能做到6的阶乘,  7以后就溢出了。
我想请教下各位大牛,如何修改
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
7条回答
一匹狼
1楼-- · 2020-01-26 14:07
之前写好,一直忘了更新,谢谢5楼
  1. ORG 0000H
  2. SJMP MAIN
  3. ORG 0030H
  4. ;存储10!运算结果占用三字节
  5. ;31H 32H 33H
  6. MAIN:
  7.         MOV 33H ,#10
  8.         MOV R0 ,#9
  9. LOOP:
  10.         MOV A ,33H
  11.         MOV B ,R0
  12.         MUL AB
  13.         MOV R2 ,B;寄存进位数
  14.         MOV 33H ,A

  15.         MOV A ,32H       
  16.         MOV B ,R0
  17.         MUL AB
  18.         MOV R3 ,B;寄存进位数
  19.         ADD A ,R2;进位
  20.         MOV 32H ,A

  21.         MOV A ,31H       
  22.         MOV B ,R0
  23.         MUL AB
  24.         ADD A ,R3;进位
  25.         MOV 31H ,A
  26. ;存储第三字节的进位
  27. ;此处三字节足够,犯不着判断来自
  28. ;第三字节是否进位
  29.         DJNZ R0 ,LOOP
  30. SJMP $       
  31. END
复制代码

一周热门 更多>