| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1066 人关注过本帖
标题:高手帮忙啊!!!
只看楼主 加入收藏
zhangyi_1989
Rank: 1
等 级:新手上路
帖 子:20
专家分:0
注 册:2007-11-15
收藏
 问题点数:0 回复次数:2 
高手帮忙啊!!!
编写一个计算阶乘的子程序,该子程序可以计算8以内的数值的阶乘。子程序通过寄存器BL接受参数。通过寄存器AX输出计算结果。
     除了BX和AX两个寄存器之外,子程序调用前后其他通用寄存器的值不得改变。
     主程序调用阶乘子程序依次计算1-7的阶乘值,并以十进制的形式输出结果。
搜索更多相关主题的帖子: 寄存器 十进制 主程序 子程序 通用 
2007-12-11 20:39
yiyuandao
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2007-12-12
收藏
得分:0 
;*********************************
;计算N!
data    segment
n    dw    3
result    dw    ?                      ;存放结果
data    ends
sstack    segment    stack
    dw    512    dup(?)
sstack    ends
main    segment
    assume cs:main,ds:data,ss:sstack

start:    mov    ax,data
    mov    ds,ax
    push    ax
    push    n
    call    far ptr  fact
    pop    result
    mov    al,result
    add    al,30h
    mov     dl,al
    mov     ah,2                  ;输出结果
    int    21h
    mov    ax,4c00h
    int    21h
main    ends
sub1    segment
    assume  cs:sub1,ss:sstack
;**********************************************
;递归计算N!
fact    proc  far
    push    bp
    mov    bp,sp
    push    ax
    push    dx
    mov    ax,[bp+6]
    cmp    ax,0
    jnz    fact1
    mov    ax,1
    jmp    exit
fact1:    sub    sp,2
    dec    ax
    push    ax
    call    fact
    pop    ax
    mul    word ptr [bp+6]
exit:    mov    [bp+8],ax
    pop    dx
    pop    ax
    pop    bp
    ret    2
fact    endp
sub1    ends
    end    start
;***********************************************************
;你修改一下这个程序,估计就差不多了
2007-12-13 17:44
zhangyi_1989
Rank: 1
等 级:新手上路
帖 子:20
专家分:0
注 册:2007-11-15
收藏
得分:0 
回复 2# 的帖子
第二个差不多了
2007-12-14 12:48
快速回复:高手帮忙啊!!!
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.011092 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved