首页
社区
课程
招聘
[旧帖] 汇编问题.我汇编不好,大侠教教我. 0.00雪花
发表于: 2004-12-21 17:35 5504

[旧帖] 汇编问题.我汇编不好,大侠教教我. 0.00雪花

2004-12-21 17:35
5504
我们老师要我们写一个20的阶乘.下面是我写的,不过得不出来答案,好象是结果益出了.
运行结果是000000   小一点的阶乘可以算出来.直到8的阶乘.再大就得不出来答案了.
大侠帮帮忙.看看 指点一二..
data segment
     n dw 20
     y dw 2 dup(?)
data ends
stack  segment para stack 'stack'
     dw 100 dup(?)
stack  ends
code segment
     assume cs:code, ds:data, ss:stack
start proc  far
      push  ds
      xor   ax,ax
      push  ax
     mov ax,data
     mov ds,ax
     mov ax,stack
     mov ss,ax
     mov ax,n
     mov bx,ax
     dec bx
lp:  mul bx
     dec bx
     jnz lp
     mov y,ax
     mov y+2,dx  
     call pp
     ret
     start endp
pp   proc
     lea si,y
     add  si,2
     mov cx,3
p:   mov al,[si]               
     call pp3
     dec  si
     loop p
     ret
pp  endp
;
pp3  proc
     push ax
     push bx
     push cx
     push dx
     mov  bh,al
     mov  bl,2
     mov  cl,4
     shr  al,cl
gg2: cmp  al,10
     jge  gg3
     or   al,30h
     jmp  gg4
gg3: add  al,37h
gg4: mov dl,al
     mov ah,2
     int 21h
     dec bl
     jz  gg5
     mov al,bh
     and al,0fh
     jmp gg2
gg5: pop dx
     pop cx
     pop bx
     pop ax
     ret
pp3  endp
;
code  ends
     end start

[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

收藏
免费 1
支持
分享
最新回复 (4)
雪    币: 213
活跃值: (16)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
不是汇编不好。

如果汇编不好,你可以用C写,写出来后再汇编回去

:p
2004-12-21 19:04
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
:( 完全看不明白,我现在连什么是汇编都不明白,开始学呢。你学的是什么语言啊。指点我以下啊
2005-1-1 17:01
0
雪    币: 213
活跃值: (16)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
想学什么学什么。
能学多少学多少。

不要期望一口气一下子什么都学会。
:p

学汇编,还是在VC里面写一段C程序,用VC来调试,慢慢的你就知道怎么回事了
2005-1-1 21:40
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
lp:  mul bx
     dec bx
     jnz lp

楼主的这段代码有点问题
mul bx是将ax和bx中的数相乘,然后结果放到dx:ax中,
所以如果上次计算结果有值被送到dx中,但下一次循环时取的数还是ax的(并没有把dx里的取出来),所以dx里的结果会被下一次运算覆盖掉,当然结果也就不正确。
2005-1-2 16:24
0
游客
登录 | 注册 方可回帖
返回
//