本帖最后由 一匹狼 于 2013-10-11 12:23 编辑
我写了个程序,大致意思是——求解10的阶乘,即1*2*3*...*10,我把结果的高四位放在40H,低四位存放在41H
- ORG 0000H
- SJMP MAIN
- ORG 0030H
- MAIN:
- MOV R0,#31H
- MOV A,#01H
- MOV R1,#0AH
- LOOP1:
- MOV @R0,A
- INC R0
- INC A
- DJNZ R1,LOOP1
- MOV A,31H
- MOV R0,32H
- MOV R1,#09H
- LOOP2:
- MOV B,R0
- MUL AB
- INC R0
- MOV 40H,B
- MOV 41H,A
- DJNZ R1,LOOP2
- SJMP $
- END
复制代码这个程序智能做到6的阶乘, 7以后就溢出了。
我想请教下各位大牛,如何修改
- ORG 0000H
- SJMP MAIN
- ORG 0030H
- ;存储10!运算结果占用三字节
- ;31H 32H 33H
- MAIN:
- MOV 33H ,#10
- MOV R0 ,#9
- LOOP:
- MOV A ,33H
- MOV B ,R0
- MUL AB
- MOV R2 ,B;寄存进位数
- MOV 33H ,A
- MOV A ,32H
- MOV B ,R0
- MUL AB
- MOV R3 ,B;寄存进位数
- ADD A ,R2;进位
- MOV 32H ,A
- MOV A ,31H
- MOV B ,R0
- MUL AB
- ADD A ,R3;进位
- MOV 31H ,A
- ;存储第三字节的进位
- ;此处三字节足够,犯不着判断来自
- ;第三字节是否进位
- DJNZ R0 ,LOOP
- SJMP $
- END
复制代码一周热门 更多>