微机实验子程序设计Word文档格式.docx

上传人:b****6 文档编号:21330240 上传时间:2023-01-29 格式:DOCX 页数:24 大小:203.39KB
下载 相关 举报
微机实验子程序设计Word文档格式.docx_第1页
第1页 / 共24页
微机实验子程序设计Word文档格式.docx_第2页
第2页 / 共24页
微机实验子程序设计Word文档格式.docx_第3页
第3页 / 共24页
微机实验子程序设计Word文档格式.docx_第4页
第4页 / 共24页
微机实验子程序设计Word文档格式.docx_第5页
第5页 / 共24页
点击查看更多>>
下载资源
资源描述

微机实验子程序设计Word文档格式.docx

《微机实验子程序设计Word文档格式.docx》由会员分享,可在线阅读,更多相关《微机实验子程序设计Word文档格式.docx(24页珍藏版)》请在冰豆网上搜索。

微机实验子程序设计Word文档格式.docx

CODE,DS:

DATA,ES:

DATA

START:

MOVAX,DATA

MOVDS,AX

MOVES,AX

LEASI,SRC_MESS

LEADI,NEW_LOC

MOVCX,6

CLD;

DF置0

CMPSI,DI;

源数据块首址〈目的块首址时,从数据块末地址开始传送数据。

JLNEXT1;

如果SI小于DI,则跳转到NEXT1(否则直接执行NEXT2)

NEXT2:

REPMOVSB

NEXT1:

ADDSI,CX;

SI=SI+CX-1从末地址开始传递数据

DECSI;

ADDDI,CX;

DI+=DI+CX-1

DECDI;

STD;

DF置1

JMPNEXT2;

CODEENDS

ENDSTART

结果显示:

将3500H开始的1,2,3,4,5,6复制到3510H开始的地址。

MOVAX,DATA

MOVDI,3502H

MOVAH,4CH

INT21H

将3500H开始的连续的1,2,3,4,5,6复制搬移到3502H开始的地址。

此时,搬移过程应当从数组的最后一个数字6开始搬移,一直到最前面的3500H对应的的数字01搬移到3502H地址为止。

ORG3502H

MOVDI,3500H

将3502H开始的1,2,3,4,5,6搬移到3500H开始的地址,应该从3502H地址开始传数据到3500H,依次往后搬移。

二、循环程序设计实验

(1)加深对循环结构的理解。

(2)掌握循环结构程序设计的方法。

(3)熟练掌握调试循环程序的方法。

TDS-MD微机一台

(1)编制程序使S=1+2*3+3*4+4*5+……N(N+1),直到N(N+1)项大于200为止。

流程图:

实现代码:

DATASEGMENT

ORG3500H

HELLODB32DUP(0)

DATAENDS

MOVDS,AX

MOVDX,1;

DX存储总和

MOVBL,2;

BL存储被乘项

NEXT:

MOVAL,BL;

AL存储被乘项

INCBL;

MULBL;

结果存储在AX

ADDDX,AX

CMPAX,200

JLNEXT

MOVBX,3500H

MOV[BX],DX

MOVBX,3510H

MOV[BX],AX

CODEENDS

ENDSTART

结果与分析:

运行结果为045FH,与实际相符,程序正确。

(2)求某个数据区内负数的个数

设数据区的第一单元存放区内数据的个数,从第二单元开始存放数据,在区内最后一个单元存放结果。

为统计数据区内负数的个数,需要逐个判断区内的每一个数据,然后将所有数据中凡是符号位为1的数据的个数累加起来,即得区内所包含负数的个数。

实现代码:

HELLODB6,3,-58,-34,7,-2,29;

6是数据的个数,共有6个数据

ORG3510H

NUM_TDB16DUP(0);

3510H单元存结果

CODESEGMENT

ASSUMECS:

MOVAX,DATA;

初始化数据段

MOVDI,3500H;

数据区的首地址给DI

MOVCL,[DI];

数据的个数给CL,作为NEXT1循环的个数

INCDI;

DI指向第一个需要比较的数据

MOVCH,0

MOVBL,0

MOVAL,[DI]

ANDAL,80H;

AL与1000(B)做按位与操作,如果是负数,AL存储的是1000(B),否则存储的是0

CMPAL,80H;

如果是负数,AL与80H相等

JENEXT2;

如果是负数,跳转到NEXT2

GOGO:

INCDI

LOOPNEXT1

MOVDI,3510H

MOV[DI],BL

MOVAX,4C00H;

返回DOS

INCBL

JMPGOGO

输入数据个数为6

输入3,-58,-34,7,-2,29得结果03,存放在3510H地址。

其中3500H地址对应的数字6是原始数据的个数。

结果与实际相符,程序正确。

输入3,-58,-34,7,-2,-29得结果04,存放在3510H地址。

实验四 子程序设计

一.实验目的

1、学习子程序的定义和调用方法。

2、掌握子程序、子程序嵌套的结构。

3、掌握子程序的程序设计、编制和调试方法。

二.实验内容

程序采用菜单式选择,可接收用户输入的命令(1~5),各命令如下:

按1键完成字符串小写字母变大写字母

用户输入一由英文大小写字母或数字0~9组成的字符串(以回车结束),程序逐个检查字符串中各字符,将原串中小写字母变成大写字母,其它字符不变,并在屏幕上显示。

用户按任一键,重做,按ESC键,返回主菜单。

按2键完成找最大值(二选一)

1、接收用户输入的可显示字符串(以回车结束),程序将其中ASCII码值最大的字符显示出来。

2、接收用户输入若干无符号8位数(以空格或逗号为分隔符,以回车结束),程序将其中最大的数显示出来。

按3键完成排序(二选一)

1、接收用户输入的可显示字符串,以回车结束。

程序按ASCII码值大小由大到小排序并输出显示。

2、接收用户输入若干个有符号8位数(以空格逗号为分隔符,以回车结束)。

程序将其中最大的数显示出来。

按4键显示时间

首先提示用户对时,即用户输入时,分,秒(以空格或冒号分隔,以回车结束),然后,在屏幕上不断显示时间,格式为:

×

(时):

(分):

(秒),最好定点显示。

用户按任一键,重新对时,按ESC键,返回主菜单。

按5键,结束程序运行,返回系统提示符。

三.程序与流程图

主程序的简略流程子程序一的简略流程图子程序二的简略流程图

子程序三的简略流程图子程序4,显示时间流程图

BUFDB100;

从3500H开始定义缓冲区

DB?

DB100DUP(0)

MYNAMEDB'

Programedbyali...'

0DH,0AH,'

$'

BUF1DB'

1.Inputastring,thenconvertthesmalllettertobigletter.'

BUF2DB'

2.FindthecharacterwhoseASCIIcodeisbiggest.'

BUF3DB'

3.SortthecharacterbyASCIIcodebydecreasingorder.'

BUF4DB'

4.Displaythetickingtime.'

BUF5DB'

5.Endtheprogram.'

STRING1DB'

Pleaseinputastring:

'

STRING2DB'

EnteranycharactertoplayagainorEsctoquit...'

STRING3DB0DH,0AH,'

DATA初始化

HELLO:

CALLCHILD0;

显示菜单

MOVAX,0100H;

从键盘输入一个数字的ASCII,AL存储输入的数字的ASCII

CMPAL,31H

JENEXT1

CMPAL,32H

JENEXT2

CMPAL,33H

JENEXT3

CMPAL,34H

JENEXT4

CMPAL,35H

JENEXT5

CALLCHILD1

JMPHELLO

CALLCHILD2

JMPHELLO

NEXT3:

CALLCHILD3

NEXT4:

CALLCHILD4

NEXT5:

CALLCHILD5

显示菜单子程序

CHILD0PROCNEAR

MOVDX,OFFSETMYNAME

MOVAH,9H;

显示

MOVDX,OFFSETBUF1

MOVDX,OFFSETBUF2

MOVDX,OFFSETBUF3

MOVDX,OFFSETBUF4

MOVDX,OFFSETBUF5

RET

CHILD0ENDP

CHILD1PROCNEAR

HELLO_1:

MOVDX,OFFSETSTRING1

MOVAH,9H

INT21H

LEADX,BUF

MOVAH,10

INT21H

MOVDX,OFFSETSTRING3;

换行

INT21H

MOVBX,3501H

MOVCL,[BX]

MOVBX,3502H

NEXT1_1:

MOVAL,[BX]

CMPAL,97

JLDADA

CMPAL,122

JGDADA

SUBAL,32;

是小写字符

DADA:

MOVDL,AL

MOVAH,02H

INCBX

LOOPNEXT1_1

MOVDX,OFFSETSTRING2

MOVAH,08H

CMPAL,27;

跟ESC的ASCII比较

JEBYBY

JMPHELLO_1

BYBY:

CHILD1ENDP

CHILD2PROCNEAR

MOVDX,OFFSETSTRING1

MOVDI,3501H

MOVCL,[DI]

DECCL;

循环次数

MOVCH,0

LOOP1:

MOVDX,CX

LOOP2:

MOVAL,[BX]

CMPAL,[BX+1]

JAENO_CHANGE

XCHGAL,[BX+1]

MOV[BX],AL

NO_CHANGE:

ADDBX,1

LOOPLOOP2

MOVCX,DX

LOOPLOOP1

MOVDX,OFFSETSTRING3

MOVDL,[DI]

CHILD2ENDP

CHILD3PROCNEAR

LOOP11:

LOOP22:

JAENO_CHANGE1

NO_CHANGE1:

LOOPLOOP22

LOOPLOOP11

MOVDX,OFFSETSTRING3

PETER:

MOVDL,[DI]

LOOPPETER

CHILD3ENDP

CHILD5PROCNEAR

MOVAX,4C00H

CHILD5ENDP

选择1号功能,输入字符串,将字符串转换成大写形式,并显示到屏幕上。

之后输入任意键,将重新提示输入字符串,实现1号功能,按Esc键,则回到功能菜单界面。

选择2号功能,提示输入字符串,输入之后,将ASCII值最大的字符输出到屏幕上,并回到功能菜单界面。

选择3号功能,输入字符串,利用冒泡排序,将字符串按ASCII值由大到小排序并输出到屏幕上。

之后回到功能菜单界面。

输入5,将推出程序,回到DOS。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 工学

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

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