ImageVerifierCode 换一换
格式:DOCX , 页数:24 ,大小:203.39KB ,
资源ID:8193928      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/8193928.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(微机实验子程序设计.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

微机实验子程序设计.docx

1、微机实验子程序设计微机实验三 分支和循环程序设计实验一、分支程序设计实验1.实验目的1.掌握分支程序的结构。2掌握分支程序的设计、调试方法。2.实验设备微机一台3.内容设计一数据块间的搬移程序设计思想:程序要求把内存中一数据区(称为源数据块)传送到另一存贮区(称为目的数据块)。源数据块和目的数据块在存贮中可能有三种情况。对于两个数据块分离的情况,数据的传送从数据块的首址开始,或者从数据块的末址开始均可,但对于有部分重叠的情况,则要加以分析,否则重叠部分会因“搬移”而遭破坏。可以得出以下结论:当源数据块首址目的块首址时,从数据块首址开始传送数据。当源数据块首址目的块首址时,从数据块末地址开始传送

2、数据。 流程图:结果:在源数据块中存入6个数,分别使SI大于、等于、小于DI均发觉数据正确传送。可见程序正确。实现代码如下:DATA SEGMENTORG 3500HSRC_MESS DB 1,2,3,4,5,6ORG 3510HNEW_LOC DB 20 DUP(0)DATA ENDS;CODE SEGMENT ASSUME CS:CODE,DS:DATA,ES:DATASTART: MOV AX,DATA MOV DS,AX MOV ES,AX LEA SI,SRC_MESS LEA DI,NEW_LOC MOV CX,6 CLD ;DF置0 CMP SI,DI ;源数据块首址目的块首址时

3、,从数据块末地址开始传送数据。 JL NEXT1 ;如果SI小于DI,则跳转到NEXT1(否则直接执行NEXT2)NEXT2: REP MOVSBNEXT1: ADD SI,CX ; SI=SI+CX-1 从末地址开始传递数据 DEC SI ; ADD DI,CX ;DI+=DI+CX-1 DEC DI ; STD ; DF置1 JMP NEXT2 ; CODE ENDSEND START结果显示:将3500H开始的1,2,3,4,5,6复制到3510H开始的地址。DATA SEGMENTORG 3500HSRC_MESS DB 1,2,3,4,5,6DATA ENDS;CODE SEGMEN

4、T ASSUME CS:CODE,DS:DATA,ES:DATASTART:MOV AX,DATA MOV DS,AX MOV ES,AX LEA SI,SRC_MESS MOV DI,3502H MOV CX,6 CLD ;DF置0 CMP SI,DI ;源数据块首址目的块首址时,从数据块末地址开始传送数据。 JL NEXT1 ;如果SI小于DI,则跳转到NEXT1(否则直接执行NEXT2)NEXT2: REP MOVSB MOV AH,4CH INT 21H NEXT1: ADD SI,CX ; SI=SI+CX-1 从末地址开始传递数据 DEC SI ; ADD DI,CX ;DI+=D

5、I+CX-1 DEC DI ; STD ; DF置1 JMP NEXT2 ; CODE ENDSEND START结果显示:将3500H开始的连续的1,2,3,4,5,6复制搬移到3502H开始的地址。此时,搬移过程应当从数组的最后一个数字6开始搬移,一直到最前面的3500H对应的的数字01搬移到3502H地址为止。DATA SEGMENTORG 3502HSRC_MESS DB 1,2,3,4,5,6DATA ENDS;CODE SEGMENT ASSUME CS:CODE,DS:DATA,ES:DATASTART:MOV AX,DATA MOV DS,AX MOV ES,AX LEA SI

6、,SRC_MESS MOV DI,3500H MOV CX,6 CLD ;DF置0 CMP SI,DI ;源数据块首址目的块首址时,从数据块末地址开始传送数据。 JL NEXT1 ;如果SI小于DI,则跳转到NEXT1(否则直接执行NEXT2)NEXT2: REP MOVSB MOV AH,4CH INT 21H NEXT1: ADD SI,CX ; SI=SI+CX-1 从末地址开始传递数据 DEC SI ; ADD DI,CX ;DI+=DI+CX-1 DEC DI ; STD ; DF置1 JMP NEXT2 ; CODE ENDSEND START结果显示:将3502H开始的1,2,3

7、,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

8、DS,AX MOV DX,1 ;DX存储总和 MOV BL,2 ;BL存储被乘项NEXT: MOV AL,BL; AL存储被乘项 INC BL ; MUL BL ; 结果存储在AX ADD DX,AX CMP AX,200 JL NEXT MOV BX,3500H MOV BX,DX MOV BX,3510H MOV BX,AX MOV AH,4CH INT 21HCODE ENDSEND START结果与分析:运行结果为045FH,与实际相符,程序正确。(2)求某个数据区内负数的个数设数据区的第一单元存放区内数据的个数,从第二单元开始存放数据,在区内最后一个单元存放结果。为统计数据区内负数的

9、个数,需要逐个判断区内的每一个数据,然后将所有数据中凡是符号位为1的数据的个数累加起来,即得区内所包含负数的个数。 流程图: 实现代码:DATA SEGMENT ORG 3500H HELLO DB 6,3,-58,-34,7,-2,29 ;6是数据的个数,共有6个数据 ORG 3510H NUM_T DB 16 DUP(0) ;3510H单元存结果DATA ENDS;CODE SEGMENT ASSUME CS:CODE,DS:DATASTART: MOV AX,DATA ;初始化数据段 MOV DS,AX MOV DI,3500H ;数据区的首地址给DI MOV CL,DI ;数据的个数给

10、CL,作为NEXT1循环的个数 INC DI ;DI指向第一个需要比较的数据 MOV CH,0 MOV BL,0NEXT1: MOV AL,DI AND AL,80H ;AL与1000(B)做按位与操作,如果是负数,AL存储的是1000(B),否则存储的是0 CMP AL,80H ;如果是负数,AL与80H相等 JE NEXT2 ;如果是负数,跳转到NEXT2GOGO: INC DI LOOP NEXT1 MOV DI,3510H MOV DI,BL MOV AX,4C00H ;返回DOS INT 21HNEXT2: INC BL JMP GOGOCODE ENDSEND START结果与分析

11、:输入数据个数为6输入3,-58,-34,7,-2,29得结果03,存放在3510H地址。其中3500H地址对应的数字6是原始数据的个数。结果与实际相符,程序正确。输入数据个数为6输入3,-58,-34,7,-2,-29得结果04,存放在3510H地址。其中3500H地址对应的数字6是原始数据的个数。结果与实际相符,程序正确。实验四子程序设计一.实验目的、学习子程序的定义和调用方法。、掌握子程序、子程序嵌套的结构。、掌握子程序的程序设计、编制和调试方法。二.实验内容程序采用菜单式选择,可接收用户输入的命令(15),各命令如下:按1键完成字符串小写字母变大写字母用户输入一由英文大小写字母或数字0

12、9组成的字符串(以回车结束),程序逐个检查字符串中各字符,将原串中小写字母变成大写字母,其它字符不变,并在屏幕上显示。用户按任一键,重做,按ESC键,返回主菜单。按2键完成找最大值(二选一)、接收用户输入的可显示字符串(以回车结束),程序将其中ASCII码值最大的字符显示出来。、接收用户输入若干无符号8位数(以空格或逗号为分隔符,以回车结束),程序将其中最大的数显示出来。用户按任一键,重做,按ESC键,返回主菜单。按3键完成排序(二选一)、接收用户输入的可显示字符串,以回车结束。程序按ASCII码值大小由大到小排序并输出显示。、接收用户输入若干个有符号8位数(以空格逗号为分隔符,以回车结束)。

13、程序将其中最大的数显示出来。用户按任一键,重做,按ESC键,返回主菜单。按4键显示时间首先提示用户对时,即用户输入时,分,秒(以空格或冒号分隔,以回车结束),然后,在屏幕上不断显示时间,格式为:(时):(分):(秒),最好定点显示。用户按任一键,重新对时,按ESC键,返回主菜单。按5键,结束程序运行,返回系统提示符。三 程序与流程图主程序的简略流程 子程序一的简略流程图 子程序二的简略流程图 子程序三的简略流程图 子程序4,显示时间流程图 实现代码:DATA SEGMENTORG 3500HBUF DB 100 ;从3500H开始定义缓冲区 DB ? DB 100 DUP(0)MYNAME D

14、B 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,$B

15、UF5 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,$STRING3 DB 0DH,0AH,$DATA ENDS;CODE SEGMENT ASSUME CS:CODE,DS:DATASTART: MOV AX,DATA ;DATA初始化 MOV DS,AXHELLO: CALL CHILD0 ;显示菜单 MOV AX,0100H ;从键盘输入一个数字的

16、ASCII,AL存储输入的数字的ASCII INT 21H CMP AL,31H JE NEXT1 CMP AL,32H JE NEXT2 CMP AL,33H JE NEXT3; CMP AL,34H; JE NEXT4 CMP AL,35H JE NEXT5NEXT1: CALL CHILD1 JMP HELLONEXT2: CALL CHILD2 JMP HELLO NEXT3: CALL CHILD3 JMP HELLO;NEXT4: CALL CHILD4; JMP HELLONEXT5: CALL CHILD5 ;显示菜单子程序CHILD0 PROC NEAR MOV DX,OFF

17、SET MYNAME MOV AH,9H ;显示 INT 21H MOV DX,OFFSET BUF1 MOV AH,9H ;显示 INT 21H MOV DX,OFFSET BUF2 MOV AH,9H ;显示 INT 21H MOV DX,OFFSET BUF3 MOV AH,9H ;显示 INT 21H MOV DX,OFFSET BUF4 MOV AH,9H ;显示 INT 21H MOV DX,OFFSET BUF5 MOV AH,9H ;显示 INT 21H RETCHILD0 ENDP;CHILD1 PROC NEARHELLO_1:MOV DX,OFFSET STRING1 M

18、OV AH,9H INT 21H LEA DX,BUF MOV AH,10 INT 21H MOV DX,OFFSET STRING3 ;换行 MOV AH,9H INT 21H MOV BX,3501H MOV CL,BX MOV CH,0 MOV BX,3502HNEXT1_1: MOV AL,BX CMP AL,97 JL DADA CMP AL,122 JG DADA SUB AL,32 ;是小写字符DADA: MOV DL,AL MOV AH,02H INT 21H INC BX LOOP NEXT1_1 MOV DX,OFFSET STRING3 ;换行 MOV AH,9H INT

19、 21H MOV DX,OFFSET STRING2 MOV AH,9H INT 21H MOV AH,08H INT 21H CMP AL,27 ;跟ESC的ASCII比较 JE BYBY JMP HELLO_1 BYBY: RETCHILD1 ENDP;CHILD2 PROC NEAR MOV DX,OFFSET STRING1 MOV AH,9H INT 21H LEA DX,BUF MOV AH,10 INT 21H MOV DI,3501H MOV CL,DI DEC CL ;循环次数 MOV CH,0LOOP1:MOV DX,CX MOV BX,3502HLOOP2:MOV AL,

20、BX CMP AL,BX+1 JAE NO_CHANGE XCHG AL,BX+1 MOV BX,ALNO_CHANGE: ADD BX,1 LOOP LOOP2 MOV CX,DX LOOP LOOP1 MOV DX,OFFSET STRING3 MOV AH,9H INT 21H MOV DI,3502H MOV DL,DI MOV AH,02H INT 21H MOV DX,OFFSET STRING3 ;换行 MOV AH,9H INT 21H RETCHILD2 ENDP CHILD3 PROC NEAR MOV DX,OFFSET STRING1 MOV AH,9H INT 21H

21、 LEA DX,BUF MOV AH,10 INT 21H MOV DI,3501H MOV CL,DI DEC CL ;循环次数 MOV CH,0LOOP11:MOV DX,CX MOV BX,3502HLOOP22:MOV AL,BX CMP AL,BX+1 JAE NO_CHANGE1 XCHG AL,BX+1 MOV BX,ALNO_CHANGE1: ADD BX,1 LOOP LOOP22 MOV CX,DX LOOP LOOP11 MOV DX,OFFSET STRING3 MOV AH,9H INT 21H MOV CH,0 MOV BX,3501H MOV CL,BX MOV

22、DI,3502HPETER:MOV DL,DI MOV AH,02H INT 21H INC DI LOOP PETER MOV DX,OFFSET STRING3 ;换行 MOV AH,9H INT 21H RETCHILD3 ENDP;返回DOSCHILD5 PROC NEAR MOV AX,4C00H INT 21H RETCHILD5 ENDPCODE ENDSEND START结果显示:选择1号功能,输入字符串,将字符串转换成大写形式,并显示到屏幕上。之后输入任意键,将重新提示输入字符串,实现1号功能,按Esc键,则回到功能菜单界面。选择2号功能,提示输入字符串,输入之后,将ASCII值最大的字符输出到屏幕上,并回到功能菜单界面。选择3号功能,输入字符串,利用冒泡排序,将字符串按ASCII值由大到小排序并输出到屏幕上。之后回到功能菜单界面。输入5,将推出程序,回到DOS。

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1