微机原理与汇编语言程序设计报告_第1页
微机原理与汇编语言程序设计报告_第2页
微机原理与汇编语言程序设计报告_第3页
微机原理与汇编语言程序设计报告_第4页
微机原理与汇编语言程序设计报告_第5页
已阅读5页,还剩18页未读 继续免费阅读

下载本文档

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

文档简介

1、微机原理与汇编语言程序设计报告 所在学院: 计算机工程学院 专 业: 计算机科学与技术(网络工程) 班 级: 11计3Z 姓 名: 黄申祥 学 号: 11141313 2013年6月1日1、 程序功能:1 从键盘输入N个带符号数(N值也从键盘输入,N=65535),带符号数为16位二进制数范围;2 找出这N个数中的最大值和最小值,并且显示出来;3 计算这N个数的平均值,并且显示出来。2、 程序设计总体思路程序按功能所属主要分为7个模块,7个模块分别为一个主程序;SHOW欢迎子程序;NUM取数据个数子程序;READ数据输入子程序;WRITE数据显示子程序;MAXMIN求数据最大最小值子程序;ME

2、AN求数据平均值子程序。另外,为了更好地输入输出显示,还设计了DPCRLF光标回车换行子程序、NDPCRLF多个空格输出显示子程序。整个程序通过主程序中相关指令调用各个子程序,实现各个功能,这种模块化的设计方法不仅简化了主程序,还可以重复利用已有子程序,提高编程效率。3、 程序分析程序运行之初,首先展现在屏幕上的是程序欢迎界面。主程序通过调用SHOW欢迎子程序以实现此功能。欢迎界面之后,程序提示输入数据个数N,通过调用NUM取数据个数子程序由此得到执行READ数据输入子程序的次数,通过多重循环执行此子程序以取得N个数据。当数据输入完成、顺利保存后,通过调用BIOS功能实现对屏幕原有字句进行清除

3、,调用WRITE数据显示子程序将用户之前输入的数据显示在屏幕上,数据的输入显示格式通过调用NDPCRLF多个空格输出显示子程序实现。进行最大最小值判断,通过调用MAXMIN求数据最大最小值子程序,利用循环取得各个数据与假设的最大最小值进行比较,满足一定条件后将其替换。计算平均值,通过调用MEAN求数据平均值子程序,利用循环累加各个数据并除以N,求得最终结果。4、 程序流程图1 主程序流程图2 SHOW欢迎子程序流程图3 NUM取数据个数子程序流程图4 READ数据输入子程序流程图5 WRITE数据显示子程序流程图6 MAXMIN求数据最大最小值子程序流程图7 MEAN求数据平均值子程序流程图5

4、、 源程序列表文件内容Microsoft (R) Macro Assembler Version 6.11 06/02/13 01:24:33tempfile.asm Page 1 - 1 0000DSEGSEGMENT;数据段 0000 77 65 6C 63 6F 6DMESS0DBwelcome to this program! -HUANG SHENXIANG 65 20 74 6F 20 74 68 69 73 20 70 72 6F 67 72 61 6D 21 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20

5、20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20

6、20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2D 2D 2D 2D 48 55 41 4E 47 20 53 48 45 4E 58 49 41 4E 47 00C8 3D 3D 3D 3D 3D 3DMESS1DB =Welcome to this program!=,$ 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 57 65 6C 63 6F 6D 65 20 74 6F 20 74 68 69 7

7、3 20 70 72 6F 67 72 61 6D 21 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 24 0101 50 6C 65 61 73 65MESS2DB Please input N(N=65535):,$ 20 69 6E 70 75 74 20 4E 28 4E 3C 3D 36 35 35 33 35 29 3A 24 011B 50 6C 65 61 73 65MESS3DB Please input numbers:,$ 20 69 6E 70 75 74 20 6E 75 6D 62 65 72 73 3A 24 0

8、131 0A 0D 0A 0D 59 6FMESS4DB 0AH,0DH,0AH,0DH,Your input are:,$ 75 72 20 69 6E 70 75 74 20 61 72 65 3A 24 0145 0A 0D 54 68 65 20MESS5DB 0AH,0DH,The MAX is:,$ 4D 41 58 20 69 73 3A 24 0153 0A 0D 54 68 65 20MESS6DB 0AH,0DH,The MIN is:,$ 4D 49 4E 20 69 73 3A 24 0161 0A 0D 54 68 65 20MESS7DB 0AH,0DH,The A

9、VERAGE is:,$ 41 56 45 52 41 47 45 20 69 73 3A 24 0173 00DISPMODDB ? 0174 0000COUNTDW ? 0176 03E8 ARRAYDW 1000 DUP(0) 0000 0946 0000WTEMPDW ? 0948 0000MAXAYDW ? 094A 0000MINAYDW ? 094CDSEGENDS 0000SSEGSEGMENT STACK;堆栈段 0000 0080 DB80HDUP(0) 00 0080SSEGENDS 0000CSEGSEGMENT;代码段ASSUME DS:DSEG,SS:SSEG,CS

10、:CSEG 0000 B8 - RSTART:MOVAX,DSEG 0003 8E D8MOVDS,AX 0005 FCCLD ;CLD使DF复位,即DF=0,STD使DF置位,即DF=1 0006 E8 01B2CALLSHOW ;调用显示欢迎界面 0009 BA 00C8 RMOVDX,OFFSET MESS1;显示欢迎横幅于第二页 000C B4 09MOVAH,09H 000E CD 21INT21H 0010 E8 018CCALLDPCRLF 0013 E8 0189CALLDPCRLF 0016 BA 0101 RMOVDX,OFFSET MESS2;输入元素个数 0019 B4

11、 09MOVAH,09H 001B CD 21INT21H 001D E8 009CCALL NUM;调用INPUT子程序 0020 8B 0E 0174 RMOV CX,COUNT;将输入的元素个数值N传递给CX计数寄存器 0024 BB 0176 RMOV BX,OFFSET ARRAY 0027 BA 011B RMOVDX,OFFSET MESS3;输入N个元素 002A B4 09MOVAH,9H 002C CD 21INT21H 002E E8 016ECALLDPCRLF 0031 E8 0094AGAIN1:CALLREAD;调用READ子程序,输入元素 0034 89 07M

12、OVBX,AX;将出口参数存放到数据缓冲区 0036 43INCBX 0037 43INCBX 0038 E8 0164CALLDPCRLF;调用DPCRLF子程序,光标回车换行以便输入下一元素 003B E2 F4LOOPAGAIN1 003D B0 03MOVAL,3H 003F CD 10INT10H 0041 8B 0E 0174 RMOVCX,COUNT 0045 BB 0176 RMOVBX,OFFSET ARRAY 0048 BA 00C8 RMOVDX,OFFSET MESS1;显示欢迎横幅于第二页 004B B4 09MOVAH,09H 004D CD 21INT21H 00

13、4F BA 0131 RMOVDX,OFFSET MESS4 0052 B4 09MOVAH,09H 0054 CD 21INT21H 0056 E8 0146CALLDPCRLF 0059 8B 07AGAIN2: MOV AX,BX 005B A3 0946 RMOV WTEMP,AX;将入口参数存放到共享变量 005E E8 00A8CALL WRITE ;调用WRITE子程序,显示一个元素 0061 83 C3 02ADD BX,2 0064 E8 0149CALL NDPCRLF ;调用NDPCRLE子程序,光标回车换行以便显示下一个数据 0067 E2 F0LOOP AGAIN2

14、;执行COUNT次循环 0069 B4 02MOVAH,2 006B B2 0DMOV DL,0DH 006D CD 21INT 21H 006F B2 0AMOVDL,0AH 0071 CD 21INT21H 0073 8B 0E 0174 RMOVCX,COUNT 0077 B8 0176 RMOVAX,OFFSET ARRAY 007A E8 00CFCALLMAXMIN ;调用MAXMIN子程序 007D BA 0145 RMOV DX,OFFSET MESS5 0080 B4 09MOV AH,09H 0082 CD 21INT 21H 0084 A1 0948 RMOV AX,MA

15、XAY 0087 A3 0946 RMOV WTEMP,AX 008A E8 007CCALLWRITE ;调用WRITE子程序输出MAXAY 008D BA 0153 RMOVDX,OFFSET MESS6 0090 B4 09MOVAH,09H 0092 CD 21INT21H 0094 A1 094A RMOVAX,MINAY 0097 A3 0946 RMOVWTEMP,AX 009A E8 006CCALLWRITE ;调用WRITE子程序输出MINAY 009D BA 0161 RMOV DX,OFFSET MESS7 00A0 B4 09MOV AH,09H 00A2 CD 21

16、INT 21H 00A4 A1 0174 RMOV AX,COUNT 00A7 50PUSH AX 00A8 B8 0176 RMOV AX,OFFSET ARRAY 00AB 50PUSH AX 00AC E8 00C3CALL MEAN 00AF 83 C4 04ADD SP,4 00B2 A3 0946 RMOV WTEMP,AX 00B5 E8 0051CALL WRITE ;调用WRITE子程序输出平均值 00B8 B4 4CMOVAH,4CH 00BA CD 21INT 21H 00BCNUMPROC 00BC 50PUSHAX 00BD E8 0008CALLREAD 00C0

17、A3 0174 RMOVCOUNT,AX 00C3 E8 00D9CALLDPCRLF 00C6 58POPAX 00C7 C3RET 00C8NUMENDP 00C8READPROC;输入有符号十进制数的通用子程序:READ 00C8 53PUSHBX;出口参数:AX=补码表示的二进制数值 00C9 51PUSHCX;负数用“-”引导,数据范围是+32767-32768 00CA 52PUSHDX 00CB 33 DBXORBX,BX;BX保存结果 00CD 33 C9XORCX,CX;CX为正负标志,0为正,-1为负 00CF B4 01MOVAH,1;输入一个字符 00D1 CD 21I

18、NT21H 00D3 3C 2BCMPAL,+;是“+”,继续输入字符 00D5 74 07JZREAD1 00D7 3C 2DCMPAL,-;是“-”,设置-1标志 00D9 75 07JNZREAD2 00DB B9 FFFFMOVCX,-1 00DE B4 01READ1:MOVAH,1;继续输入字符 00E0 CD 21INT21H 00E2 3C 30READ2:CMPAL,0;不是09之间的字符,则输入数据结束 00E4 72 16JBREAD3 00E6 3C 39CMPAL,9 00E8 77 12JAREAD3 00EA 2C 30SUBAL,30H;是09之间的字符,则转换

19、为二进制数;利用移位指令,实现数值乘10:BXBX 017D 8B 4E 06MOV CX,BP+6;从堆栈中取得数据个数-CX 0180 33 F6XOR SI,SI;SI保存求和的低16位值 0182 8B FEMOV DI,SI;DI保存求和的高16位值 0184 8B 07MEAN1:MOV AX,BX;取出一个数据-AX 0186 99CWD;符号扩展-DX 0187 03 F0ADD SI,AX;求和低16位 0189 13 FAADC DI,DX;求和高16位 018B 43INC BX;指向下一个数据 018C 43INC BX 018D E2 F5LOOP MEAN1;循环

20、018F 8B C6MOV AX,SI;累加和在DX.AX 0191 8B D7MOV DX,DI 0193 8B 4E 06MOV CX,BP+6;数据个数在CX 0196 F7 F9IDIV CX;有符号数除法,求的平均值在AX中(余数在DX中) 0198 5FPOP DI;恢复寄存器 0199 5EPOP SI 019A 5APOP DX 019B 59POP CX 019C 5BPOP BX 019D 5DPOP BP 019E C3RET 019FMEANENDP 019FDPCRLFPROC;使光标回车换行的子程序 019F 50PUSH AX 01A0 52PUSH DX 01A

21、1 B4 02MOV AH,2 01A3 B2 0DMOV DL,0DH 01A5 CD 21INT 21H 01A7 B4 02MOV AH,2 01A9 B2 0AMOV DL,0AH 01AB CD 21INT 21H 01AD 5APOP DX 01AE 58POP AX 01AF C3RET 01B0DPCRLFENDP 01B0NDPCRLF PROC ;使显示器显示多个空格的子程序 01B0 50PUSHAX 01B1 52PUSHDX 01B2 B4 02MOVAH,2 01B4 B2 09MOV DL,9H 01B6 CD 21INT 21H 01B8 5APOP DX 01

22、B9 58POP AX 01BA C3RET 01BBNDPCRLF ENDP 01BBSHOWPROC 01BB B4 0FMOVAH,0FH;读取显示模式 01BD CD 10INT10H;调用INT 10H中断 01BF A2 0173 RMOVDISPMOD,AL 01C2 B4 00MOVAH,0 01C4 B0 03MOVAL,3 ;调用INT 10H中断3号功能显示文字 01C6 CD 10INT10H 01C8 8C D8MOVAX,DS 01CA 8E C0MOVES,AX 01CC BD 0000 RMOVBP,OFFSET MESS0 01CF BA 0C1EMOVDX,

23、0C1EH ;控制显示的位置最大的行是24,最大列是八十 01D2 B9 00C8MOVCX,200 ;控制显示的字符的个数 01D5 B7 00MOVBH,0 01D7 B3 0CMOVBL,0CH ;以BL实现控制字体颜色与背景颜色功能,前四位是背景色;后四位是字体颜色 01D9 B4 13MOVAH,13H 01DB B0 01MOVAL,1H 01DD CD 10INT10H 01DF B4 00MOVAH,0 01E1 CD 16INT16H 01E3 B4 00MOVAH,0 01E5 A0 0173 RMOVAL,DISPMOD 01E8 CD 10INT10H 01EA C3R

24、ET 01EBSHOWENDP 01EBCSEGENDS END START Microsoft (R) Macro Assembler Version 6.11 06/02/13 01:24:33tempfile.asm Symbols 2 - 1Segments and Groups: N a m e Size Length Align Combine ClassCSEG . . . . . . . . . . . . . .16 Bit 01EB Para Private DSEG . . . . . . . . . . . . . .16 Bit 094C Para Private S

25、SEG . . . . . . . . . . . . . .16 Bit 0080 Para Stack Procedures, parameters and locals: N a m e Type Value AttrDPCRLF . . . . . . . . . . . . .P Near 019F CSEGLength= 0011 PublicMAXMIN . . . . . . . . . . . . .P Near 014C CSEGLength= 0026 Public MAXCK . . . . . . . . . . . .L Near 0155 CSEG MINCK .

26、 . . . . . . . . . . .L Near 0160 CSEG NEXT . . . . . . . . . . . . .L Near 0166 CSEGMEAN . . . . . . . . . . . . . .P Near 0172 CSEGLength= 002D Public MEAN1 . . . . . . . . . . . .L Near 0184 CSEGNDPCRLF . . . . . . . . . . . .P Near 01B0 CSEGLength= 000B PublicNUM . . . . . . . . . . . . . .P Nea

27、r 00BC CSEGLength= 000C PublicREAD . . . . . . . . . . . . . .P Near 00C8 CSEGLength= 0041 Public READ1 . . . . . . . . . . . .L Near 00DE CSEG READ2 . . . . . . . . . . . .L Near 00E2 CSEG READ3 . . . . . . . . . . . .L Near 00FC CSEG READ4 . . . . . . . . . . . .L Near 0103 CSEGSHOW . . . . . . .

28、. . . . . . .P Near 01BB CSEGLength= 0030 PublicWRITE . . . . . . . . . . . . .P Near 0109 CSEGLength= 0043 Public WRITE1 . . . . . . . . . . . .L Near 011B CSEG WRITE2 . . . . . . . . . . . .L Near 0129 CSEG WRITE3 . . . . . . . . . . . .L Near 012D CSEG WRITE4 . . . . . . . . . . . .L Near 013C CS

29、EG WRITE5 . . . . . . . . . . . .L Near 0148 CSEGSymbols: N a m e Type Value AttrAGAIN1 . . . . . . . . . . . . .L Near 0031 CSEGAGAIN2 . . . . . . . . . . . . .L Near 0059 CSEGARRAY . . . . . . . . . . . . .Word 0176 DSEGCOUNT . . . . . . . . . . . . .Word 0174 DSEGDISPMOD . . . . . . . . . . . .Byte 0173 DSEGMAXAY . . . . . . . . . . . . .Word 0948 DSEGMESS0 . . . . .

温馨提示

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

评论

0/150

提交评论