数字方阵程序.doc_第1页
数字方阵程序.doc_第2页
数字方阵程序.doc_第3页
数字方阵程序.doc_第4页
数字方阵程序.doc_第5页
已阅读5页,还剩12页未读 继续免费阅读

下载本文档

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

文档简介

. 微机原理综合实验设计信 控 学院 自动化 专业自动0901班题 目 数字方阵 姓 名 高旭光 学 号09510135 指导教师 王聪 陈北辰 2011 年 11月 5 日数字方阵的显示1.设计任务将N方个(N=3,4,5)个自然数按螺旋纹路填入N*N方阵,要求程序运行时输入参数N,然后输出所需的N阶方阵,如N=4时输出显示:1 2 3 412 13 14 511 16 15 610 9 8 72.实验目的及知识点 进行程序设计方法和技能的基本训练,培养学生独立思考,独立编程的能力,让学生进一步了解微机原理这门课程的内涵,提高学生编程的水平,培养学生的编程兴趣。在完成实验的过程中学生需要不断地检查,调试程序,然后根据出现的问题进行改进。本实验用到了汇编语言中的“比较语句” “循环语句” “分支结构” 以及程序的调用,数据的堆栈。 3.程序流程图3.1 主程序流程图开始段寄存器初始,调用清屏子程序显示提示语退出从键盘输入字符,并判断是否是Q?Y N调用子程序SY判断输入字符是否为3?并设置为3时输出格式NN调用子程序SY判断输入字符是否为4?并设置为4时输出格式N调用子程序SY判断输入字符是否为5?并设置为5时输出格式NN显示关于输入错误的提示语 3.2子程序S流程图开始从主程序得到输出的数据和格式(输出的行数N和列数B) 设置输出数据的首地址指针SI和数据缓冲区首地址DI将要输出的数据付到数据缓冲区执行SI+1和DI+1执行列数N-1N判断N是否为0在字符结尾加字符结束符$,Y设置输出光标的位置并用9号功能输出,行数加1N循环次数-1=0?Y4.程序源代码及注释data segmentbuf1 db 1 2 38 9 47 6 5buf2 db 1 2 3 412 13 14 511 16 15 610 9 8 7buf3 db 1 2 3 4 516 17 18 19 615 24 25 20 714 23 22 21 813 12 11 10 9dbuf db 14 dup()i1 db 0dh,0ah,THIS IS A FANGZHEN PROGRAMM db 0dh,0ah,input q to exit db 0dh,0ah,Please input a number(3-5):,$i2 db 0dh,0ah,input error,please reinput!,$n db 0b db 1data endsstack segment db 100 dup()stack endscode segment assume ds:data,cs:code,ss:stackmain: mov ax,data mov ds,ax call clearlop: lea dx,i1 mov ah,9 int 21h mov ah,1 int 21h cmp al,q jz quit lea si,buf1 mov n,7 mov cl,3 call clear cmp al,3 jz s lea si,buf2 mov n,10 mov cl,4 cmp al,4 jz s lea si,buf3 mov cl,5 mov n,13 cmp al,5 jz s lea dx,i2 mov ah,9 int 21h call clear jmp lops: mov bl,n lea di,dbufl: mov al,si mov di,al inc si inc di dec bl jne l mov di,byte ptr $ mov ah,2 mov dh,b mov dl,0 int 10h lea dx,dbuf mov ah,9 int 21h inc b loop s jmp lopquit: mov ah,4ch int 21h;*清屏*clear proc near push ax push bx push cx push dx mov ah,6 mov al,0 mov ch,0 mov cl,0 mov dh,24 mov dl,79 mov bh,7 int 10h pop dx pop cx pop bx pop ax retclear endpcode ends end mainDATA SEGMENTBUF1 DB 1 2 38 9 47 6 5 ;n=3时输出的数据BUF2 DB 1 2 3 412 13 14 511 16 15 610 9 8 7;n=4时输出的数据BUF3 DB 1 2 3 4 516 17 18 19 615 24 25 20 714 23 22 21 813 12 11 10 9 ;n=5时输出的数据DBUF DB 14 DUP(?) ;用于存放每行输出的数据I1 DB 0DH,0AH,THIS IS A FANGZHEN PROGRAMME ;提示语 DB 0DH,0AH,INPUT Q TO EXIT DB 0DH,0AH,PLEASE INPUT A NUMBER(3-5):,$I2 DB 0DH,0AH,INPUT ERROR,PLEASE REINPUT!,$N DB ? 用于控制输出列数(包括空格)B DB 1 ;用语控制输出地方(即屏幕中的哪一行)DATA ENDSSTACK SEGMENT PARA STACK STACK ;设置堆栈段 DB 100 DUP(?)STACK ENDSCODE SEGMENT ASSUME DS:DATA,CS:CODE,SS:STACKMAIN: MOV AX,DATA MOV DS,AX CALL CLEAR ;调用子程序clear(清屏)LOP: MOV B,1 ;将提示语从第一行输出 LEA DX,I1 ;将I1首地址付给DX MOV AH,9 ;调用9号功能,输出DX中的字符串 INT 21H MOV AH,1 ;调用1号功能,从键盘输入字符 INT 21H CMP AL,Q ;输入字符如果是Q,则退出 JZ QUIT LEA SI,BUF1 ;设置缓冲区指针 MOV N,7 ;设置每行输出的字符数(包括空格) MOV CL,3 ;设置循环次数 CALL CLEAR ;清屏 CMP AL,3 ;输入的字符如果是3则跳转到S JZ S LEA SI,BUF2 MOV N,10 MOV CL,4 CMP AL,4 ;输入的字符如果是4则跳转到S JZ S LEA SI,BUF3 MOV CL,5 MOV N,13 CMP AL,5 ;输入的字符如果是5则跳转到S JZ S MOV AH,2 ;调用2号功能,设置光标的位置 MOV DH,1 MOV DL,0 INT 10H LEA DX,I2 ;设置提示语字符的首地址指针 MOV AH,9 ;调用9号功能,将提示语从所设的光标位置输出 INT 21H JMP LOPS: MOV BL,N LEA DI,DBUF ;设置存放输出数据的缓冲区的地址指针L: MOV AL,SI ;以下六句的功能为:将所要输 MOV DI,AL ;出数据缓冲区数据的前N个字 INC SI ;符存到缓冲区DBUF INC DI DEC BL JNE L MOV DI,BYTE PTR $ ;在数据缓冲区DBUF末尾加$ MOV AH,2 ;调用2号功能设置输出位置 MOV DH,B ;光标的位置 MOV DL,0 INT 10H LEA DX,DBUF ;调用9号功能将缓冲区DBUF MOV AH,9 ;的数据输出 INT 21H INC B LOOP S JMP LOPQUIT: MOV AH,4CH ;退出程序 INT 21HCLEAR PROC NEAR ;子程序CLEAR的功能为清屏。 PUSH AX ;将AX、BX、CX、DX入栈,保存 PUSH BX ;里面的数据, PUSH CX PUSH DX MOV AH,6 ;调用6号功能,以空格充满屏幕 MOV AL,0 ;达到清屏 MOV CH,0 MOV CL,0 MOV DH,24 MOV DL,79 MOV BH,7 INT 10H MOV AH,02H MOV DH,0 MOV DL,0 INT 10H POP DX ;将DX、CX、BX、AX出栈 POP CX POP BX POP AX RETCLEAR ENDPCODE ENDS END MAIN5.运行结果如下:运行界面输入字符不是3、4、5时的界面:输入3时的结果:输入4时的运行结果:输入5时的运行结果:6、程序调试过程中的收获和体会经过对汇编语言的学习,对编写基本的汇编语言程序已经基本掌握了,包括用DEBUG进行调试和修改。这次课程设计中,在对自己编写的这段程序进行调试的时候仍发现了自己在这方面的不足和缺点。刚开始,将程序输入在编译时就发现了很多语法性错误,比如在堆栈段和数据段的定义上就有一些问题,导致无法进行编译或机器死机。还有,有时将输入法调错导致编译时报错,等这些简单错误,只要仔细点,应该可以避免。 除了这些错误外,还出现了几个错误,但在同学们的帮助下,再加上自己查找了相关的资料后都得到解决。在

温馨提示

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

最新文档

评论

0/150

提交评论