微机原理实验指导书1Word格式文档下载.docx

上传人:b****6 文档编号:16295692 上传时间:2022-11-22 格式:DOCX 页数:59 大小:1.14MB
下载 相关 举报
微机原理实验指导书1Word格式文档下载.docx_第1页
第1页 / 共59页
微机原理实验指导书1Word格式文档下载.docx_第2页
第2页 / 共59页
微机原理实验指导书1Word格式文档下载.docx_第3页
第3页 / 共59页
微机原理实验指导书1Word格式文档下载.docx_第4页
第4页 / 共59页
微机原理实验指导书1Word格式文档下载.docx_第5页
第5页 / 共59页
点击查看更多>>
下载资源
资源描述

微机原理实验指导书1Word格式文档下载.docx

《微机原理实验指导书1Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《微机原理实验指导书1Word格式文档下载.docx(59页珍藏版)》请在冰豆网上搜索。

微机原理实验指导书1Word格式文档下载.docx

在提示符“—”下,键入“U2000”,将从2000内存单元开始的内容反汇编,屏幕上显示

2000BF0035MOVDI,3500

2003B91000MOVCX,0010

2006B8000MOVAX,0000

2011F4HLT

当发现程序有错时,可用汇编命令“A地址”进行修改,如要修改200A单元中的指令,则键入

“A200A”,屏幕显示169C:

200A,然后再键入MOVBYTE[DI],AL,就把错误的程序改正了。

(2)显示和修改数据

①用修改内存单元命令“E地址”在指定内存单元中存入一个数。

如要在3500为首址的单元中存入14H和25H两个数据,可在提示符“—”下,键入:

“3500”

显示169C:

3500×

×

.键入14,按空格键

×

.25,按空格键

②用显示内存命令“D地址”检查指定单元的内容

在提示符“—”下,键入“D3500”

显示1489:

350014254802…………

1489:

3510********…………

3570********…………

若某单元内容有错则可用命令:

“E地址”进行修正。

③用显示和修改命令“R”或“R寄存器名”显示寄存器或修改其内容

在提示符“—”下,键入“R”

显示AX=0000BX=0000CX=0000DX=0000SP=FFEE……………………

DS=169CES=169CSS=169CCS=169CIP=2000………………………

要修改IP的内容时,键入命令“RIP”后,显示IP2000,在2000之后键入新内容。

(3)程序运行

程序的运行方式有单步运行、断点运行和连续运行几种方式。

①单步运行

输入DEBUG跟踪命令“T”或“T=地址”或“T=地址指定次数”,可从指定地址处运行该单元中的一条指令,以后只要连续输入“T”命令就能连续执行一条一条指令。

如在提示符“—”下,键入“T=2000”

显示:

AX=0000BX=0000CX=001DDX-0000SP=FFEEBP=0000SI=0000DI=0000

DS=169CES=169CSS=169CCS=169CIP=2000NV………

②断点运行

用运行命令“G=地址地址断点地址断点…”执行指定地址的程序

在提示符“—”下,键入“G=20002011”

2011F4HLT表示这段程序已经执行完毕。

③连续运行

输入DEBUG命令“G=地址”,执行指定地址的程序

(4)用显示内存命令检查运行结果

在提示符“—”下,键入命令“D地址”,根据其中的内容判断程序运行是否正确。

如检查以上程序执行后的结果,在提示符“—”下,键入“D3500”,可显示

35000001020304……15

3510

(二)数码转换程序及其调试

1、将ASCII码表示的十进制数转换为二进制数

1)程序设计的算法及其程序

十进制数据可表示为:

DI代表十进制数1,2,3,…9,0

上式可转换为:

由式

(2)可归纳十进制数转换为二进制数的方法:

从十进制的最高位Dn开始乘10加次位的操作,将结果再乘10再加下一次位,如此重复,则可求出二进制数结果来。

程序流程及参考程序如图1-1。

这里我们规定:

被转换的ASCII码十进制数存放在3500H——3504H单位中。

而转换结果存放在3510H——3511H单元中。

2)实验步骤

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

(2)在3500H——3504H单元存入十进制数12的ASCII码,即E3500H↙,并输入3030303132H。

(3)G=2000↙,运行程序,并用CTRL+C来中断程序返回监控状态。

(4)用D3510↙来查看结果,应为:

35100C00

(5)反复试几组数,考查程序的正确性。

地址(H)助记符注释

2000MOVSI,3500;

源地址

2003MOVDI,3510;

结果地址

2006MOVBX,000A;

乘数10

2009MOVCX,0004;

计数

200CMOVAH,00;

AH清零

200EMOVAL,[SI];

取被转换数

2010SUBAL,30;

ASCII码变十进制数

2012IMULBX;

高位(AX)*(BX)送AX

2014ADDAL,[SI+01];

取下一位

1017SUBAL,30;

ASCII码减30变十进制数

2019INCSI;

源地址指针+1

201ALOOP2012;

CX-1,若CX不等于零则继续

201CMOV[DI],AX;

若CX不等于零则存结果

201EINT3

图1-1

2将十进制数的ASCII码转换为BCD码

1)程序流程和程序

设从键盘输入的五位十进制数的ASCII码已存放在3500H起始的内存单元内,把它转换成BCD码后,再按位分别存入350AH起始的内存单元内。

若输入的不是十进制数的ASCII码,则对应存放结果的内容为“FF”。

一字节ASCII码取其低四位即变为BCD码,程序流程图及考程序如图1-2所示。

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

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

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

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

(4)D350A↙,显示结果为:

0000:

350A0102030405CC…

(5)反复试几组数,考查程序的正确性。

2000MOVCX,0005;

循环计数器赋初值

2003MOVDI,3500;

ASCII码首址

2006MOVBL,FF;

错误标志送BL

2008MOVAL,[DI];

送ASCII码至AL

200ACMPAL,3A;

比较AL与3AH

200CJNB2014;

不低于3A则转2014

200ESUBAL,30;

低于3A则取ASCII码的低四位

2010JB2014;

低于30则转2014

2012MOVBL,AL;

否则AL内容送BL,取代FF

2014MOVAL,BL;

结果或错误标志送AL

2016MOV[DI+0A],AL

2019INCDI

201ALOOP2006

201CINT3

图1-2

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

1)程序及其流程

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

算法:

五位十进制数可表示为:

Di:

表示十进制数0——9。

因此,将十六位二进制数转换为五位ASCII码表示表示的十进制数,就是求D1——D4,并将它化为ASCII码。

程序流程图如图1-3所示,设源数据存于3500——3501H单元中,结果数存于3510——3514H单元中。

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

(3)反复试几组数,并运行程序、观察结果。

2000MOVDX,[3500];

取二进制数

2004MOVSI,3515;

目标首址在3510

2007DECSI

2008MOVAX,DX

200AMOVDX,0000

200DMOVCX,000A

2010DIVCX;

除10

2012XCHGAX,DX

2014ADDAL,30

2016MOV[SI],AL

2018CMPDX,0000

201BJNE2007

201DCMPSI,3510;

填余下高位为0

2021JZ202A;

2023DECSI

2024MOVAL,30

2026MOV[SI],AL

2028JMP201D

202AINT3

图1-3

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

1)程序及其流程

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

从表2-1中可知,十六进制数加30H即可得到0H——9H的ASCII码,而要得到AH——FH的ASCII码,则需再加7H。

程序流程图及参考程序如图1-4所示。

(2)在3500——3501H单元中存入四位十六进制数203B,即

E3500↙,并输入3B,20。

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

350A42333032CC…

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

(5)反复试几组数。

考查程序的正确性。

2000MOVCX,0004

2003MOVDI,3500

2006MOVDX,[DI]

200AANDAX,000F;

取低四位值

200DCMPAL,0A;

;

判是否“0”-“9”

200FJB2013;

是“0”-“9”转2013

2011ADDAL,07;

是“A”-“F”,加7

2013ADDAL,30;

转换为ASCII码

2015MOV[DI+0A],AL

2018INCDI

2019PUSHCX;

保护循环计数器内容

201AMOVCL,04;

移位次数送CL

201CSHRDX,CL

201EPOPCX

201FLOOP2008

2021INT3

图1-4

4BCD码转换为二进制数

设四个二位十进制数的BCD码存放在起始地址为3500H,

的单元中,转换出的二进制数码存入起始地址为3510H的内存

单元中,程序流程图及参考程序如图1-5所示。

2006MOVAL,[DI]

2008ADDAL,AL;

乘2

200AMOVBL,AL

200CADDAL,AL;

200EADDAL,AL;

2010ADDAL,BL;

乘10

2012INCDI

2013MOVAH,00

2015ADDAL,[DI];

BCD码十位与个位加

2017MOV[DI+0F],AX;

存结果图1-5

201AINCDI

201BLOOP2006

201DINT3

(2)在3500——3507单元中存入四个十进制数(12,34,56,78)的BCD码,即E3500↙输入01,02,03,04,05,06,07,08。

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

四、思考题

1、图1-1程序,将一个五位十进制数转换为二进制数(十六位)时,这个十进制数最小可为多少,最大又可为多少?

为什么?

2、将一个十六位二进制数转换为ASCII码十进制数时,如何确定D1的值?

3、在十六进制数转换为ASCII码时,存转换结果后,为什么要把DX向右移四次?

4、自编ASCII码→十六进制、十进制小数→二进制、二进制→BCD码的程序,并调试运行。

实验二程序设计和PC机上程序调试操作实验

一、 实验目的

1.掌握常用程序设计的基本技巧和方法。

2.学会和熟悉使用MASM汇编程序和LINK连接程序。

3.掌握使用PC机上编程和调试程序的方法。

二、 实验设备

PC机一台,装有DOS基本系统和MASM宏汇编软件

三、 实验内容及步骤

(一)按要求编写程序并在DEBUG下建立、汇编和调试程序

1、四字节二进制数的加法

1)程序设计要求

两个字的被加数存放于3500H-3503H单元, 加数存于3504H-3507H单元 (存放格式为高位存高地址单元,低位存低地址单元),两数之和(如不超过四字节)存放于3508H-350BH单元。

(1)编写程序。

(2)在DEBUG下输入程序并检查(程序可存放于2000H-8000H单元)。

(3)在3500H-3507H单元中存入被加数014527和加数146758。

(4)运行程序后,检查3508H-350BH单元中内容。

(5)反复选择几组被加数和加数,检查结果,验证程序正确性。

2、数据块的搬移

1)程序设计思想和要求

将内存中一数据区中数据(源数据块)传送到另一数据区(目的数据块)。

源数据块和目的数据块区在内存中的位置有两种情况:

两区重叠和不重叠,如下图所示。

对于两个数据块不重叠的情况,数据的传送可从数据块的首址开始,也可从数据块的末址开始;

对于两个数据块重叠的情况,则要加以分析,否则重叠部分会因搬移而遭破坏。

处理方法可以是:

在源数据块首址>目的数据块首址时,从数据块的首址开始传送,在数据块首址<目的数据块首址时,从数据块的末址开始传送。

若源数据块首址存放于SI中,目的数据块首址存放于DI中,块字节数存放于CX中。

要求设计的程序能够实现不同情况下的数据块传送。

源数

源 

据块

数 

据 

目的

块 

目的数

2)实验步骤

(2)在DEBUG下键入程序并检查(程序可存放于2000H-8000H单元)。

 (3)确定源数据块和目的数据块区不重叠时的首址,确定数据块个数为16个。

并在源数据区送入任意16个数据。

(4)运行程序后,检查目的数据区的内容。

 (5)确定源数据块和目的数据块区重叠时,源区首址>目的区首址时的首址,以及数据块个数为16个,并在源数据区送入任意16个数据。

运行程序后,检查目的数据区的内容。

 (6)确定源数据块和目的数据块区重叠时,源区首址<目的区首址时的首址,以及数据块个数为16个,并在源数据区送入任意16个数据。

3、无序数据块的递增排序

1)程序设计思想和要求

在首址为3000H的数据区中存放着一组无符号数,数据的长度存于3500H单元内,要求用冒泡法对该区中的数据按递增次序排列。

冒泡法的基本思想是从最后一个数(或从第一个数)开始,依次把相邻两个数比较,即第N个数与第N-1个数比较…,若大则交换,否则不交换,直到N个数都比较完为止。

此时,其中最小数排在最前列。

然后将剩下的N-1个数再按前述方法进行,找到N-1个数中最小的数。

以后重复进行,直到全部按序排列。

 (1)编写程序。

 (2)在DEBUG下键入程序并检查(程序可存放于2000H-8000H单元,只要不与数据区重叠即可)。

 (3)确定数据个数并输入3500H单元中,在首址为3500H的数据区中存入任意无符号数。

 (4)运行程序并检查运行结果。

(6)反复修改数据个数和数据区中的数,运行程序、观察结果,验证程序的正确性。

4、求数的平方根

减奇数法是一种求取近似平方根和平方根的整数部分的方法。

有公式:

n

(2K-1)=N2

k=1

若要求数S的平方根S,则可以从S中减去奇数1、3、5…直到减为零或不够减下一个奇数为止,然后统计减去的奇数个数,它就是S的近似平方根。

被开方数为一个足够大的二进制数,存于首址为4000H的单元内,它的方根存放在以4500H为首的单元内。

(2)在DEBUG下输入程序并检查(程序可存放于2000H-8000H单元,和数据存放单元不要重叠)。

(3)在4000H为首的单元中存入一个任意大的数。

(4)运行程序并检查运行结果。

(6)反复修改被开方数,运行程序、观察结果,验证程序的正确性。

5、思考题

①如果二进制加数和被加数不限于四字节而为任意字节时,程序应作如何改动?

 ②修改原有的无符号数的排序程序为带符号数的排序程序。

③被开方数是一压缩型的BCD码十进制数时,程序应作如何修改?

(二)MASM汇编程序和LINK连接程序的使用操作

在DEBUG中,使用A命令建立程序,一般不能使用标号和伪指令,并不能保存汇编语言源程序,适用于简单程序。

MASM宏汇编程序可以将编辑程序建立的源程序文件进行汇编,汇编后在盘上建立目标文件、列表文件和交叉参考文件。

而目标文件经LINK程序连接以后成为可执行的文件,它可以在DOS下执行也可在DEBUG下调试。

1、计算机钢琴程序

1)实验内容

根据乐曲中不同的音符是由输出不同频率的声波而产生的原理,通过设置PC机中8253定时器不同的计数值,可由扬声器发出不同的曲调。

以下是实现PC机作为一架可弹奏的钢琴演奏预定的曲调。

程序中采用了INT21H软中断调用了DOS的常用子程序。

源程序为:

DATASEGMENT

MESSDB‘Pushanykeytostop!

’,0dH,0aH,’$’

TABLEDW524,588,660,698,784,880,988,1048,1176,1320,0

TABLELDB31H,31H,32H,31H,34H,33H,3BH

DB31H,31H,32H,31H,35H,34H,3BH

DB31H,31H,38H,36H,34H,33H,32H,3BH

DB36H,36H,36H,34H,35H,34H,3BH,0AAH

DATAENDS

STACKSEGMENTPARASTACK‘STACK’

STADB256DUP(?

STACKENDS

CODESEGMENT

ASSUMECS:

CODE,DS:

DATA,SS:

STACK,ES:

DATA

STARTPROCFARDIVWORDPTR[TABLE+BX]

PUSHDSMOVBX,AX

XORAX,AXMOVAL,10110110B

PUSHAXOUT43H,AL

MOVAX,DATAMOVAX,BX

MOVDS,AXOUT42H,AL

MOVES,AXMOVAL,AH

MOVAH,09HOUT42H,AL

LEADX,MESSINAL,61H

INT21HORAL,03H

KK:

LEASI,TABLELOUT61H,AL

CALLDELAY

INAL,61H

ANDAL,0FCH

OUT61H,AL

QQ:

INCSI

SING:

MOVAH,06HJMPSING

MOVDL,0FFHFINISH:

RET

INT21HSTARTENDP

JNEFINISH

MOVAL,[SI]DELAYPROCNEAR;

延时子程序

CMPAL,3BHPUSHCX

JNEDDDPUSHAX

CALLDELAYMOVAX,500H;

大循环次数

JMPQQX1:

MOVCX,0FFFFH;

小循环次数

DDD:

CMPAL,0AAHX2:

DECCX

JEKKJNZX2

SUBAL,31HDECAX

SHLAL,01HJNZX1

MOVBL,ALPOPAX

MOVAX,0000HPOPCX

MOVDX,12HRET

MOVBH,00HDELAYENDP

CODEENDS

ENDSTART

(1)利用EDIT全屏幕编辑程序或TURBOPASCAL中的编辑功能输入以上程序,以文件名为PLAYPIA.ASM存盘。

(2)在DOS系统下执行子目录MASM中的执行文件MASM.EXE,用宏汇编程序将PLAYPIA.ASM.汇编成目标文件PLAYPIA.OBJ。

操作过程如下:

显示键入

C:

\MASM>

MASM

MICROSOFT(R)…………

COPYRIGHT(C)……………

SOURCEFILENAME[.ASM]PLAYPIA

OBJECTFILENAME[PLAYPIA.OBJ]

SOURCELISTING[NUL.LST]PLAYPIA

CROSS-REFERENCE[NUL.CRF]

WARNIINGERRORS0

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

当前位置:首页 > 小学教育 > 语文

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

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