| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 609 人关注过本帖
标题:一个简单的汇编问题
只看楼主 加入收藏
叫我稳哥
Rank: 1
等 级:新手上路
帖 子:12
专家分:0
注 册:2010-9-11
结帖率:50%
收藏
已结贴  问题点数:20 回复次数:3 
一个简单的汇编问题
3、    按如下要求编写程序:
设4000H单元开始有10个数,编程计算这十个数的平均值(存放在DH中),并统计这十个数中,大于平均值的个数(存放在DL中)。找出这十个数的最大值和最小值(存在在BH和BL中)
搜索更多相关主题的帖子: 汇编 
2010-11-23 22:53
xiaomarn
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:5
帖 子:348
专家分:2026
注 册:2009-3-18
收藏
得分:10 
程序代码:
#include<dos.h>
#include<stdio.h>

int sum(char*,int);
int great(char*,int,char);
char max(char*,int);
char min(char*,int);

int
main(void)
{
      union REGS reg,reg2,reg3;
      struct SREGS sreg;
      int i;
      char s[]="Press any key to continue!$";
      char* a=(char*)0x4000;

      reg.h.dh=sum(a,10);
      reg.h.dl=great(a,10,reg.h.dh);
      reg.h.bh=max(a,10);
      reg.h.bl=min(a,10);

      printf("dh=%d,dl=%d,bh=%d,bl=%d\n",reg.h.dh,reg.h.dl,reg.h.bh,reg.h.bl);
      reg2.x.dx=FP_OFF(s);
      reg2.h.ah=9;
      sreg.ds=FP_SEG(s);
      intdosx(&reg2,&reg3,&sreg);

      getch();
      return 0;
}

int
sum(char* addr,int size)
{
      int sum2=0,i;
      char temp;

      asm mov si,addr
      for(i=0;i<size;i++)
      {
            asm lodsb
            asm mov temp,al
            sum2+=temp;
      }

      return sum2/size;
}

int
great(char* addr,int size,char aver)
{
      int num=0,i;
      char temp;

      asm mov si,addr
      for(i=0;i<size;i++)
      {
            asm lodsb
            asm mov temp,al
            if(temp>aver)
                  num++;
     }

     return num;
}

char
max(char* addr,int size)
{
      char m,temp;
      int i;
      asm mov si,addr
      asm lodsb
      asm mov m,al

      for(i=1;i<size;i++)
      {
            asm lodsb
            asm mov temp,al
            if(temp>m)
                  m=temp;
     }

     return m;
}

char min(char* addr,int size)
{
      char m,temp;
      int i;

      asm mov si,addr
      asm lodsb
      asm mov m,al
      for(i=1;i<size;i++)
      {
            asm lodsb
            asm mov temp,al
            if(temp<m)
                  m=temp;
     }
     return m;
}

2010-11-24 12:15
叫我稳哥
Rank: 1
等 级:新手上路
帖 子:12
专家分:0
注 册:2010-9-11
收藏
得分:0 
大哥我要的是汇编语言啊你怎么弄个c语言啊虽然很谢谢你啊
2010-11-24 22:16
快速回复:一个简单的汇编问题
数据加载中...
 
   



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

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