微机实验--子程序设计_第1页
微机实验--子程序设计_第2页
微机实验--子程序设计_第3页
微机实验--子程序设计_第4页
微机实验--子程序设计_第5页
已阅读5页,还剩21页未读 继续免费阅读

下载本文档

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

文档简介

微机实验三 分支和循环程序设计实验一、分支程序设计实验1.实验目的1.掌握分支程序的结构。2掌握分支程序的设计、调试方法。2.实验设备微机一台3.内容设计一数据块间的搬移程序设计思想:程序要求把内存中一数据区(称为源数据块)传送到另一存贮区(称为目的数据块)。源数据块和目的数据块在存贮中可能有三种情况。对于两个数据块分离的情况,数据的传送从数据块的首址开始,或者从数据块的末址开始均可,但对于有部分重叠的情况,则要加以分析,否则重叠部分会因“搬移”而遭破坏。可以得出以下结论:当源数据块首址目的块首址时,从数据块首址开始传送数据。当源数据块首址目的块首址时,从数据块末地址开始传送数据。 流程图:结果:在源数据块中存入6个数,分别使SI大于、等于、小于DI均发觉数据正确传送。可见程序正确。实现代码如下:DATA SEGMENTORG3500HSRC_MESSDB 1,2,3,4,5,6ORG3510HNEW_LOCDB 20 DUP(0)DATA ENDS;CODESEGMENTASSUMECS:CODE,DS:DATA,ES:DATASTART:MOVAX,DATAMOV DS,AXMOVES,AXLEASI,SRC_MESSLEADI,NEW_LOCMOVCX,6CLD ;DF置0CMPSI,DI ;源数据块首址目的块首址时,从数据块末地址开始传送数据。JLNEXT1 ;如果SI小于DI,则跳转到NEXT1(否则直接执行NEXT2)NEXT2:REPMOVSBNEXT1:ADDSI,CX ; SI=SI+CX-1 从末地址开始传递数据DECSI ;ADDDI,CX ;DI+=DI+CX-1DECDI ;STD ; DF置1JMPNEXT2 ;CODEENDSEND START结果显示:将3500H开始的1,2,3,4,5,6复制到3510H开始的地址。DATA SEGMENTORG3500HSRC_MESSDB 1,2,3,4,5,6DATA ENDS;CODESEGMENTASSUMECS:CODE,DS:DATA,ES:DATASTART:MOVAX,DATAMOV DS,AXMOVES,AXLEASI,SRC_MESSMOVDI,3502HMOVCX,6CLD ;DF置0CMPSI,DI ;源数据块首址目的块首址时,从数据块末地址开始传送数据。JLNEXT1 ;如果SI小于DI,则跳转到NEXT1(否则直接执行NEXT2)NEXT2:REPMOVSB MOV AH,4CH INT 21H NEXT1:ADDSI,CX ; SI=SI+CX-1 从末地址开始传递数据DECSI ;ADDDI,CX ;DI+=DI+CX-1DECDI ;STD ; DF置1JMPNEXT2 ;CODEENDSEND START结果显示:将3500H开始的连续的1,2,3,4,5,6复制搬移到3502H开始的地址。此时,搬移过程应当从数组的最后一个数字6开始搬移,一直到最前面的3500H对应的的数字01搬移到3502H地址为止。DATA SEGMENTORG3502HSRC_MESSDB 1,2,3,4,5,6DATA ENDS;CODESEGMENTASSUMECS:CODE,DS:DATA,ES:DATASTART:MOVAX,DATAMOV DS,AXMOVES,AXLEASI,SRC_MESSMOVDI,3500HMOVCX,6CLD ;DF置0CMPSI,DI ;源数据块首址目的块首址时,从数据块末地址开始传送数据。JLNEXT1 ;如果SI小于DI,则跳转到NEXT1(否则直接执行NEXT2)NEXT2:REPMOVSB MOV AH,4CH INT 21H NEXT1:ADDSI,CX ; SI=SI+CX-1 从末地址开始传递数据DECSI ;ADDDI,CX ;DI+=DI+CX-1DECDI ;STD ; DF置1JMPNEXT2 ;CODEENDSEND START结果显示:将3502H开始的1,2,3,4,5,6搬移到3500H开始的地址,应该从3502H地址开始传数据到3500H,依次往后搬移。二、循环程序设计实验1.实验目的(1)加深对循环结构的理解。(2)掌握循环结构程序设计的方法。(3)熟练掌握调试循环程序的方法。2.实验设备TDS-MD微机一台3.内容(1)编制程序使S=1+2*3+3*4+4*5+N(N+1),直到N(N+1)项大于200为止。流程图: 实现代码:DATA SEGMENT ORG 3500H HELLO DB 32 DUP(0)DATA ENDS;CODE SEGMENT ASSUME CS:CODE,DS:DATASTART: MOV AX,DATA MOV DS,AXMOVDX,1 ;DX存储总和MOVBL,2 ;BL存储被乘项NEXT:MOVAL,BL; AL存储被乘项INCBL ; MUL BL ; 结果存储在AXADDDX,AXCMPAX,200JLNEXT MOV BX,3500H MOV BX,DX MOV BX,3510H MOV BX,AX MOV AH,4CH INT 21HCODE ENDSENDSTART结果与分析:运行结果为045FH,与实际相符,程序正确。(2)求某个数据区内负数的个数设数据区的第一单元存放区内数据的个数,从第二单元开始存放数据,在区内最后一个单元存放结果。为统计数据区内负数的个数,需要逐个判断区内的每一个数据,然后将所有数据中凡是符号位为1的数据的个数累加起来,即得区内所包含负数的个数。 流程图: 实现代码:DATASEGMENTORG3500HHELLODB 6,3,-58,-34,7,-2,29 ;6是数据的个数,共有6个数据ORG3510HNUM_TDB 16 DUP(0) ;3510H单元存结果DATAENDS;CODE SEGMENTASSUME CS:CODE,DS:DATASTART:MOVAX,DATA ;初始化数据段MOVDS,AXMOVDI,3500H ;数据区的首地址给DIMOVCL,DI ;数据的个数给CL,作为NEXT1循环的个数INCDI ;DI指向第一个需要比较的数据MOVCH,0MOVBL,0NEXT1:MOVAL,DIANDAL,80H ;AL与1000(B)做按位与操作,如果是负数,AL存储的是1000(B),否则存储的是0CMPAL,80H ;如果是负数,AL与80H相等JENEXT2 ;如果是负数,跳转到NEXT2GOGO:INCDILOOPNEXT1MOVDI,3510HMOVDI,BLMOVAX,4C00H ;返回DOSINT21HNEXT2:INCBLJMPGOGOCODEENDSENDSTART结果与分析:输入数据个数为6输入3,-58,-34,7,-2,29得结果03,存放在3510H地址。其中3500H地址对应的数字6是原始数据的个数。结果与实际相符,程序正确。输入数据个数为6输入3,-58,-34,7,-2,-29得结果04,存放在3510H地址。其中3500H地址对应的数字6是原始数据的个数。结果与实际相符,程序正确。实验四子程序设计一. 实验目的、学习子程序的定义和调用方法。、掌握子程序、子程序嵌套的结构。、掌握子程序的程序设计、编制及调试方法。二. 实验内容程序采用菜单式选择,可接收用户输入的命令(15),各命令如下:按1键完成字符串小写字母变大写字母用户输入一由英文大小写字母或数字09组成的字符串(以回车结束),程序逐个检查字符串中各字符,将原串中小写字母变成大写字母,其它字符不变,并在屏幕上显示。用户按任一键,重做,按ESC键,返回主菜单。按2键完成找最大值(二选一)、接收用户输入的可显示字符串(以回车结束),程序将其中ASCII码值最大的字符显示出来。、接收用户输入若干无符号8位数(以空格或逗号为分隔符,以回车结束),程序将其中最大的数显示出来。用户按任一键,重做,按ESC键,返回主菜单。按3键完成排序(二选一)、接收用户输入的可显示字符串,以回车结束。程序按ASCII码值大小由大到小排序并输出显示。、接收用户输入若干个有符号8位数(以空格逗号为分隔符,以回车结束)。程序将其中最大的数显示出来。用户按任一键,重做,按ESC键,返回主菜单。按4键显示时间首先提示用户对时,即用户输入时,分,秒(以空格或冒号分隔,以回车结束),然后,在屏幕上不断显示时间,格式为:(时):(分):(秒),最好定点显示。用户按任一键,重新对时,按ESC键,返回主菜单。按5键,结束程序运行,返回系统提示符。三 程序与流程图主程序的简略流程 子程序一的简略流程图 子程序二的简略流程图 子程序三的简略流程图 子程序4,显示时间流程图 实现代码:DATA SEGMENTORG3500HBUF DB 100 ;从3500H开始定义缓冲区DB ?DB 100 DUP(0)MYNAMEDB Programed by ali .,0DH,0AH,$BUF1 DB 1. Input a string,then convert the small letter to big letter.,0DH,0AH,$BUF2 DB 2. Find the character whose ASCII code is biggest.,0DH,0AH,$BUF3 DB 3. Sort the character by ASCII code by decreasing order .,0DH,0AH,$BUF4 DB 4. Display the ticking time.,0DH,0AH,$BUF5 DB 5. End the program.,0DH,0AH,$STRING1 DB Please input a string:,0DH,0AH,$STRING2 DB Enter any character to play again or Esc to quit.,0DH,0AH,$STRING3DB 0DH,0AH,$DATAENDS;CODE SEGMENTASSUME CS:CODE,DS:DATASTART:MOVAX,DATA ;DATA初始化MOVDS,AXHELLO:CALLCHILD0 ;显示菜单MOVAX,0100H ;从键盘输入一个数字的ASCII,AL存储输入的数字的ASCIIINT21HCMPAL,31HJENEXT1 CMPAL,32HJENEXT2CMPAL,33HJENEXT3;CMPAL,34H;JENEXT4CMPAL,35HJENEXT5NEXT1:CALLCHILD1JMPHELLONEXT2:CALLCHILD2JMPHELLONEXT3:CALLCHILD3 JMPHELLO;NEXT4:CALLCHILD4; JMPHELLONEXT5:CALLCHILD5 ;显示菜单子程序CHILD0PROCNEAR MOVDX,OFFSET MYNAMEMOVAH,9H ;显示INT21H MOVDX,OFFSET BUF1MOVAH,9H ;显示INT21H MOVDX,OFFSET BUF2MOVAH,9H ;显示INT21H MOVDX,OFFSET BUF3MOVAH,9H ;显示INT21H MOVDX,OFFSET BUF4MOVAH,9H ;显示INT21H MOVDX,OFFSET BUF5MOVAH,9H ;显示INT21HRETCHILD0ENDP;CHILD1PROCNEARHELLO_1:MOVDX,OFFSET STRING1MOVAH,9HINT 21HLEA DX,BUF MOV AH,10 INT 21HMOVDX,OFFSET STRING3 ;换行MOVAH,9HINT 21HMOVBX,3501HMOVCL,BXMOVCH,0MOVBX,3502HNEXT1_1:MOVAL,BXCMPAL,97JLDADACMPAL,122JGDADASUBAL,32;是小写字符DADA:MOVDL,ALMOVAH,02HINT21HINCBXLOOPNEXT1_1MOVDX,OFFSET STRING3 ;换行MOVAH,9HINT 21HMOVDX,OFFSET STRING2MOVAH,9HINT 21HMOVAH,08HINT21HCMPAL,27 ;跟ESC的ASCII比较JEBYBYJMPHELLO_1BYBY:RETCHILD1ENDP;CHILD2PROCNEARMOVDX,OFFSET STRING1MOVAH,9HINT 21HLEA DX,BUF MOV AH,10 INT 21H MOV DI,3501H MOV CL,DI DEC CL ;循环次数 MOV CH,0LOOP1:MOVDX,CXMOVBX,3502HLOOP2:MOVAL,BXCMPAL,BX+1JAENO_CHANGEXCHGAL,BX+1MOVBX,ALNO_CHANGE:ADDBX,1LOOPLOOP2MOVCX,DXLOOPLOOP1 MOVDX,OFFSET STRING3MOVAH,9HINT 21HMOV DI,3502HMOV DL,DI MOV AH,02HINT 21HMOVDX,OFFSET STRING3 ;换行MOVAH,9HINT 21H RETCHILD2ENDP CHILD3PROCNEARMOVDX,OFFSET STRING1MOVAH,9HINT 21HLEA DX,BUF MOV AH,10 INT

温馨提示

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

评论

0/150

提交评论