汇编语言调用C语言求平均数.doc_第1页
汇编语言调用C语言求平均数.doc_第2页
汇编语言调用C语言求平均数.doc_第3页
汇编语言调用C语言求平均数.doc_第4页
汇编语言调用C语言求平均数.doc_第5页
免费预览已结束,剩余1页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

汇编语言程序设计实 验 报 告系 别 信息与科学技术学院 专 业 软件工程 年 级 学 号 姓 名 西南交通大学信息科学与技术学院2012年 6月汇编语言对C语言函数调用的方法求平均数一 实验目的1. 创建一个新的汇编语言源程序。2. 创建一个工程文件,对该工程文件进行编译,连接,并运行。3. 写出各个模块的说明4. 分别编写相应符合要求的C语言程序和汇编语言程序5. 绘制时限要求的汇编语言流程图二 实验环境1. 硬件环境(1) 80386或以上系列PC机 (2)内存不少于16M 2.软件环境(1)Dos+Win31 或Windows 95或以上版本操作系统三. 实验步骤 1.建立新的程序源文件,一个为LAST.C的C程序文件,并且最后通过Turboc编译成为.obj文件,同时编写汇编语言程序ZUIHOU1.ASM,ZUIHOU2.ASM建立工程文件ZUIHOU3.MAK,并且将五个文件链接以及编译。2.编写实验代码以及模块说明:LAST.C程序源代码:#include#include ;C语言库函数文件extern void Input(void); ;用extern声明,这是C语言对汇编语言的Input函数的调用,对整数的输入extern void Display(char *sting,int length); ;用extern声明,这是C语言对汇编语言Display函数的调用,显示最终的平均数void Bverage (void); ;汇编语言对C语言的调用,Bverage函数的功能是求所有输入的数字的平均数int Total=0; ;全局变量,用于计算存储所有数字的和int in=0; ;全局变量,用于存储输入的总数字的个数double average; ;全局变量,用于参数传递,存储计算的平均数int main(void) ;C中的主函数 char *string=0; ;字符串用于存储平均数转化的字符串int length; ;字符串的长度printf(How many numbers:n);scanf(%d,&in);Input(); ;调用Input()函数进行每一个数字的输入 string=gcvt(average,10,string); ;库函数将平均数转化成字符串存在以string开始的内存空间中length=strlen(string); ;求字符串的长度Display(string,length); ;对字符串的显示函数return 1;void Bverage(void) ;汇编语言调用的求平均数的函数 double average; Total=(double)Total; average=Total/in;ZUIHOU1.ASMextrn _Bverage:far ;求平均数的函数的属性far,采用汇编语言对C的调用extrn _in:word,_Total:word ;全局变量in存放输入的总数字的个数,Total存放所有的数字的和.model small.code public _Input ;Input函数调用_Input proc push bp mov bp,sp ;对bp寄存器压入堆栈 xor ax,ax xor cx,cx mov cx,_in ;将数字的总的个数存放在CX寄存器中,用在循环lop: xor ax,ax mov ah,01h ;调用02h系统中断,输入字符串 int 21h sub al,30h ;将字符串转换成响应的ASCII码 add ax,_Total mov _Total,ax ;将结果累加到Total变量中 loop lop call _Bverage ;调用Bverage函数求平均数 mov ah,4ch int 21h ret _Input endp ;子函数结束 EndZUIHOU2.ASM代码:.model small.code public _Display ;Display函数用于显示平均数结果_Display proc push bp ;将bp寄存器压入堆栈 mov bp,sp xor cx,cx xor si,si mov si,bp+4 ;将字符串的基地址赋给si mov cx,bp+6 ;将字符串的长度赋值给CX寄存器lop1: mov dl,si ;调用02h系统中断屏幕显示字符 mov ah,02h int 21h inc si loop lop1 ;用循环对每一个字符处理 mov ah,4ch int 21h ret_Display endp ;函数结束 End3.汇编函数的流程图ZUIHOU1.ASM的流程图:(Input函数)STAERTPush bpCX=inCX=0? YES Call Bverage求平均数Mov ah,0ah,int 21h NOEND输入字符串DEC CXTotal=Total+ax循环将字符串转化成ASCII码ZUIHOU2.ASM的流程图:(Display函数)STARTSi=bp+4Cx=bp+6CX=0? YES NO ENDMov ah,02hInt 21hDL=si DEC CX四:程序运行结果截图。五:结论和启示结论:本次实验的目的是采用汇编语言对C语言函数的调用求输入的数字的平均数,通过本次试验,学习到了汇编程序对C语言程序的调用的方式,以及公共变量的声明,在汇编函数中应该对所调用的C语言的函数用extrn声明,同时对全局变量用extrn声明。在C语言中对汇编函数的调用也应该用extern进行声明,并且采用的是值传递的方式,对于数组采用地址传递的方式,同时也可以使用C语言和汇编语言

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论