华工微机实验报告Word格式文档下载.docx

上传人:b****6 文档编号:21637371 上传时间:2023-01-31 格式:DOCX 页数:40 大小:432.72KB
下载 相关 举报
华工微机实验报告Word格式文档下载.docx_第1页
第1页 / 共40页
华工微机实验报告Word格式文档下载.docx_第2页
第2页 / 共40页
华工微机实验报告Word格式文档下载.docx_第3页
第3页 / 共40页
华工微机实验报告Word格式文档下载.docx_第4页
第4页 / 共40页
华工微机实验报告Word格式文档下载.docx_第5页
第5页 / 共40页
点击查看更多>>
下载资源
资源描述

华工微机实验报告Word格式文档下载.docx

《华工微机实验报告Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《华工微机实验报告Word格式文档下载.docx(40页珍藏版)》请在冰豆网上搜索。

华工微机实验报告Word格式文档下载.docx

CODE,SS:

STACK

START:

MOVBX,0AH

MOVSI,3500H

MOVDI,3510H

MOVCX,5

MOVAX,0

MOVDH,0

AGAIN:

MULBX

MOVDL,BYTEPTR[SI]

SUBDL,30H

CLC

ADDAX,DX

INCSI

LOOPAGAIN

EXIT:

MOVWORDPTR[DI],AX

MOVAX,4C00H

INT21H

CODEENDS

ENDSTART

实验结果如下:

图2.1-1:

输入3030303132,3510~3511是0C00(正确读数是000C)

图2.1-2:

输入3031303233,3510~3511是FF03(正确读数是03FF)

图2.1-3:

输入3031303132,3510~3511是F403(正确读数是03F4)

实验结论:

程序执行结果正确

2将从键盘输入的五位十进制数的ASCII码已存在3500起始的内存单元中。

把它转换成BCD码后,再按位分别存入350A起始的内存单元内。

若输入的不是十进制的ASCII码,则显示FF.

实验步骤:

(2)在3500~3504H单元存入五位十进制数的ASCII码,即e3500

并输入31,32,33,34,35。

(3)G=2000,运行以上程序。

(4)D350A,显示结果为:

0000:

350A01020304CC…

实验代码实现如下(实际代码实现与流程图顺序有小部分出入,整体框架一样,下同):

DB100DUP(?

;

ORG2000H

MOVDI,350AH

MOVCX,05H

MOVDL,0FFH

MOVAL,BYTEPTR[SI]

CMPAL,39H

JAERROR

CMPAL,30H

JBERROR

SUBAL,30H

MOV[DI],AL

JMPEXIT

ERROR:

MOV[DI],DL

INCDI

MOVAX,4C00H

图2.2-1:

输入3132333435,在350A开始看到:

0102030405

图2.2-2:

输入3133393A34,在350A开始看到:

010309FF04B4

3.将十六位二进制数转换为ASCII码表示的十进制数。

十六进制数的值域为0~65535,最大可转换为五位十进制数。

(2)在3500~3501H单元中存放0C00,运行程序并检查结果,应看到3510~3514H单元中的数依次为3030303132。

实验流程图如下:

代码实现如下:

CODESEGMENT

MOVBX,0

MOVDI,3515H

MOVAL,[SI]

MOVAH,[SI+1]

MOVDX,0

MOVBX,0AH

PROCG1:

DECDI

DIVBX

ADDDL,30H

MOV[DI],DL

CMPAX,0

JNEPROCG1

PROCG2:

CMPDI,3510H;

DI不等于3510H,即5位十进制数有相应高位是多余的,须置0

JEEXIT

DECDI

MOVDL,30H

JMPPROCG2

图2.3-1:

输入0C00(正确读数是000C),在3510处开始看到:

3030303132

图2.3-2:

输入1CAE(正确读数是AE1C),在3510处开始看到:

3434353732

4.十六进制数转换为ASCII码

设经过CPU处理后的十六进制存放在起始地址为3500H的内存中,把它们转换成ASCII码之后,再分别存入起始地址为3510的内存单元中。

参考流程图如图2-5所示。

(2)在3500~3501H单元中存入四位16进制数203B,即:

e3500,并输入3B,20。

(3)G=2000,运行程序

0000:

350A42333032`

输入数与结果ASCII码对应顺序相反

START:

MOVCX,04H

MOVAX,[SI]

PROCG1:

MOVDX,AX

ANDAX,0FH

CMPAL,09H;

是数字,+30H

JBNUMB

JMPLECT;

是字母,+37H

NUMB:

ADDAL,30H

LECT:

ADDAL,37H

PROCG2:

PUSHCX

MOVCL,04

SHRDX,CL;

左移四位

POPCX

MOVAX,DX

LOOPPROCG1

实验结果如下:

图2.4-1:

输入3B20(实际读数是203B),在3510处开始:

42333032

图2.4-2:

输入A31B(实际读数是1BA3),在3510处开始:

33414231

5.BCD码转换为二进制码

设四个二位十进制的BCD码存放在起始地址为3500H的单元中,转换出的二进制数码存入起始为3510的内存单元中,程序流程图如图2-6。

(1)输入程序并检查无误

(2)在3500~3501H单元中存入四个十进制数(12,34,56,78)的BCD码,即e3500,输入01.02.03.04.05.06.07.08。

(4)D3510,显示结果为35100C00220038004E00

实验实现代码如下:

DB50DUP(?

ASSUMECS:

ORG2000H

MOVSI,3500H

MOVCX,8

MOVAL,BYTEPTR[SI]

MOVDL,0AH

MULDL

MOVAH,AL

ADDAL,AH

MOVAH,0

MOV[DI],AX

EXIT:

MOVAX,4C00H

图2.5-1:

输入0102030405060708,在3510处开始看到:

0C00220038004有00

微机实验三分支和循环程序设计实验

一、分支程序设计实验

1.实验目的

1.掌握分支程序的结构。

2掌握分支程序的设计、调试方法。

2.实验设备

微机一台

3.内容

设计一数据块间的搬移程序

设计思想:

程序要求把内存中一数据区(称为源数据块)传送到另一存贮区(称为目的数据块)。

源数据块和目的数据块在存贮中可能有三种情况。

对于两个数据块分离的情况,数据的传送从数据块的首址开始,或者从数据块的末址开始均可,但对于有部分重叠的情况,则要加以分析,否则重叠部分会因“搬移”而遭破坏。

可以得出以下结论:

当源数据块首址〉目的块首址时,从数据块首址开始传送数据。

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

流程图:

STACKSEGMENTSTACK'

MOVCX,0AH

MOVBX,3500H

MOVSI,[BX];

SI[BX]

MOVDI,[BX+2];

DI[BX+2]

CMPSI,DI

JAA1;

SI>

DI,首地址开始拷贝

MOVAX,SI;

SI<

=DI,末地址开始拷贝

ADDAX,CX

MOVSI,AX

MOVAX,DI

MOVDI,AX

DECSI

STD;

地址减量

REPMOVSB

A1:

CLD;

地址增量

图3.1-1:

SI=3400,DI=3420时数据搬移

图3.2-2:

SI=3420,DI=3400时数据搬移

图3.2-3:

SI=3400,DI=3405,源数据与搬移地址重叠

无论SI<

=DI,还是DI>

SI或者源数据是否与搬移地址重叠数据均能正确搬移

二、循环程序设计实验

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

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

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

TDS-MD微机一台

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

流程图:

代码实现如下:

STACKSEGMENTSTACK'

DATASEGMENT

ORG3500H

RESDW10DUP(0)

DATAENDS

CODE,DS:

DATA,SS:

MOVAX,DATA

MOVDS,AX

MOVDX,1

MOVBL,2

LEASI,RES

MOVAL,BL

INCBL

MULBL

ADDDX,AX

CMPAX,200D

JAEXIT

JMPPROCG1

MOVWORDPTR[SI],DX

结果与分析:

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

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

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

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

流程图:

MOVDI,3510H

MOVCL,BYTEPTR[DI]

MOVCH,00H

MOVBX,00H

GETN:

MOVAL,[DI]

TESTAL,80H

JNZGETF

LOOPGETN

JMPPEND

GETF:

PEND:

INCDI

MOV[DI],BL

实验结果与分析:

输入数据个数为6

输入12、88、82、90、22、33得结果03

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

实验四 子程序设计

一.实验目的

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

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

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

二.实验内容

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

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

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

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

按2键完成找最大值

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

按3键完成排序

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

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

按4键显示时间

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

×

(时):

(分):

(秒),最好定点显示。

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

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

三.程序与流程图

主程序的简略流程

子程序一的简略流程图子程序2的流程图

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

DATASEGMENT

TMDB'

PROGRAMFORLAB4:

'

0DH,0AH,'

$'

C0DB'

PLEASECHOOSEONEOFTHESUBPROGRAMS(1~5)BYINPUTINGTHEPROMPTNUMBER'

C1DB'

1.INPUTASTRING,THENCONVERTSMALLLETTERSTOCAPITALLETTERS'

C2DB'

2.INPUTASTIRNG,THENRETURNACHARACTERWITHTHEBIGGESTASCIIVALUE'

C3DB'

3.INPUTASIRING,THENSORTITINDECREASEDORDER'

C4DB'

4.DISPLAYTHETICKINGTIME'

C5DB'

5.EXIT'

E1DB0DH,0AH,'

DOYOUWANNACONTINUE?

PRESSANYKEYIFAGAIN,ORPRESSESCTORET'

E2DB0DH,0AH,'

SORRY,YOUHAVEINPUTAWRONGNUMBERPLEASETRYAGAIN'

E3DB0DH,0AH,'

PLEASEINPUTANEWTIMEWITHFORMxx:

xx:

xx'

E4DB0DH,0AH,'

DOYOUWANNATRYOTHERSUBPROGRAM(YFORYES,OTHERFORNO)'

E5DB0DH,0AH,'

PLEASEINPUTTHESTRING:

E6DB'

RESULT:

$'

E7DB'

YOUHAVEINPUTAINCORRECTFORM,PLEASETRYAGAIN!

E8DB0DH,0AH,'

TOCONTINUEAGAIN,CHOOSENUMBER1~5:

TSDB'

NOWTHESYSTEMTIMEDISPLAYBEHIND,PRESSANYKEYTOINTERPURT!

CLFDB0DH,0AH,'

BUFDB30

LENDB?

BUFFDB30DUP(?

TDB5DUP(?

DATAENDS

STAPNDW100DUP(?

TOPLABELWORD

STACKENDS

MAINPROCFAR

CODE,DS:

MOVAX,STACK

MOVSS,AX

MOVSP,OFFSETTOP

MENU:

LEADX,CLF;

调用菜单

MOVAH,09H

LEADX,TM

LEADX,C0

LEADX,C1

LEADX,C2

LEADX,C3

LEADX,C4

LEADX,C5

P0:

MOVAH,01H

P1:

CMPAL,1

JNEP2

CALLPROCG1;

调用子程序1

JMPAGAIN

P2:

CMPAL,2

JNEP3

CALLPROCG2;

调用子程序2

P3:

CMPAL,3

JNEP4

CALLPROCG3;

调用子程序3

P4:

CMPAL,4

JNEP5

CALLPROCG4;

调用子程序4

P5:

CMPAL,5

JNEERROR;

输入有误,转错误提示

JMPEXIT;

调用子程序5,即退出程序

ERROR:

LEADX,E2

JMPP0

AGAIN:

LEADX,E4

CMPAL,'

Y'

JEETR

ETR:

LEADX,E8

MOVAX,4C00H;

退出程序

MAINENDP

PROCG1PROCNEAR;

子程序1,输入一段字符串,将小写字母转换成大写字母

P1STEP1:

LEADX,E5

MOVAH,0AH

LEADX,BUF

LEADX,CLF

LEASI,BUFF

P1STEP2:

INCSI

CMPAL,0DH

JEP1SHOW

CMPAL,61H

JBP1STEP2

CMPAL,7AH

JAP1STEP2

SUBAL,20H

MOV[SI],AL

JMPP1STEP2

P1SHOW:

MOVAL,0AH

MOV[SI+1],AL

MOVAL,'

MOV[SI+2],AL

LEADX,E6

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

当前位置:首页 > 考试认证 > 交规考试

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

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