微机原理试验报告.docx

上传人:b****5 文档编号:4714951 上传时间:2022-12-07 格式:DOCX 页数:41 大小:319.18KB
下载 相关 举报
微机原理试验报告.docx_第1页
第1页 / 共41页
微机原理试验报告.docx_第2页
第2页 / 共41页
微机原理试验报告.docx_第3页
第3页 / 共41页
微机原理试验报告.docx_第4页
第4页 / 共41页
微机原理试验报告.docx_第5页
第5页 / 共41页
点击查看更多>>
下载资源
资源描述

微机原理试验报告.docx

《微机原理试验报告.docx》由会员分享,可在线阅读,更多相关《微机原理试验报告.docx(41页珍藏版)》请在冰豆网上搜索。

微机原理试验报告.docx

微机原理试验报告

 

微机原理第一次试验

寻址方式与基本指令实验

 

 

10.1寻址方式与基本指令实验

10.1.1实验目的

1、熟悉80x86寻址方式及基本指令的功能,进一步理解和巩固课堂学习内容。

2、掌握汇编语言程序设计上机过程,掌握汇编语言源程序结构,为后续汇编语言程序设计打好基础。

3、熟悉Microsoft的DEBUG或Borland的TurboDEBUG调试工具的使用方法

10.1.2实验预习要求

1、认真阅读本书第一部分第1章,熟悉汇编语言程序设计上机步骤。

2、认真阅读本书第三部分,熟悉DEBUG调试工具的使用方法。

3、复习80x86操作数寻址方式及基本指令(数据传送、算术运算和逻辑运算等)。

4、了解实验内容,并在实验前根据课堂所学知识回答有关问题(个别取决于程序实际运行环境的问题除外),以便在实验时进行验证。

10.1.3实验内容

1、读懂下列源程序,使用EDIT生成名为EX11.ASM的源程序,汇编生成EX11.OBJ文件和EX11.LST文件,连接生成EX11.EXE文件;用EDIT打开EX11.LST文件,了解.LST文件包含的信息;使用DEBUG调试工具单步执行EX11.EXE程序,注意观察IP值的变化,并回答下列问题。

(1)程序装入后,代码段寄存器CS的内容为(08DA)H,代码段第一条可执行指令MOVAX,DATA对应的机器代码为(B87111)H,它是一个(3)字节指令,注意观察执行该指令时IP值的变化情况,该指令源操作数DATA的寻址方式是(立即数寻址方式),其值为(08D9)。

(2)执行完MOVDS,DATA指令后,数据段寄存器DS的内容为(08D9)H,源程序在数据段中定义的数据82H、68H和88H被装入的存储单元的物理地址分别为(08D90)H、(08D91)H和(08D92)H。

(3)程序中第一条ADDAL,[BX]指令对应的机器代码为(0207)H,它是一个

(2)字节指令,注意观察执行该指令时IP值的变化情况;该指令中源操作数的寻址方式为(寄存器间接寻址),该操作数所在存储单元的逻辑地址(DS):

(BX)为(08D9:

0001),其物理地址为(08D91)H;执行完该指令后(AL)=(EA)_H,CF=(NC),OF=(NV),ZF=(NZ),SF=(NG),AF=(NA),PF=(PO);若两操作数为无符号数,计算结果是否正确?

若两操作数为带符号数,计算结果是否正确正确?

若计算结果,结果是正数还是负数?

答:

若两操作数为无符号数,计算结果是正确;若两操作数为带符号数,计算结果正确,结果是负数。

(4)执行完第二条ADDAL,[BX]指令后(AL)=(72)H,CF=(CY),OF=(OV),ZF=(NZ,)SF=(PL),AF=(AC),PF=(PE);若两操作数为无符号数,计算结果是否正确?

若两操作数为带符号数,计算结果是否正确?

答:

若两操作数为无符号数,计算结果是正确;若两操作数为带符号数,计算结果错误。

(5)指令MOVSUM,AL中目的操作数的寻址方式为(存储器直接寻址方式)。

该指令执行完后,注意观察(DS):

0003H单元中值的变化,该单元的值变为(72)H。

DATASEGMENT

NUMDB82H,68H,88H

SUMDB?

DATAENDS

CODESEGMENT

ASSUMECS:

CODE,DS:

DATA

START:

MOVAX,DATA

MOVDS,AX

MOVBX,OFFSETNUM

MOVAL,[BX]

INCBX

ADDAL,[BX]

INCBX

ADDAL,[BX]

MOVSUM,AL

MOVAH,4CH

INT21H

CODEENDS

ENDSTART

10.1.4步骤:

1)使用任意一种文本编辑器输入事先以手工编写好的汇编语言源程序,并将其存储为扩展名为.ASM的文件。

2)使用汇编程序(ASM、MASM或TASM)对.ASM的文件进行汇编。

假如相应YUN.ASM的文件存储在有汇编控制的文件夹中,文件夹在F盘SPSS文件夹中,则相应步骤:

“运行”中输入cmd在命令提示窗中输入F:

CD\文件夹名MASMYUN:

进行语法检查,生成相应.OBJ目标文件。

.

3)再输入;LINKYUN:

生成相应.EXE可执行文件DEBUG.YUN.EXE输入相应命令如:

u、r、t,每次按Enter结束输入。

其中:

-T:

单步运行

-U:

反汇编

-D:

显示内存

-Q:

退出操作

10.1.5实验小结:

本次是学习汇编语言以来的第一次上机实践,在整个实践终于到了很多问题,同时在解决问题时我也受益匪浅。

首先因为第一次上机实践,虽然做了些准备,但由于还不是很清楚具体做法,因此很忐忑。

刚开始做时,不清楚具体步骤,只是模仿老师演示的过程。

将文件放在不同目录C:

下;在模仿时,首先在命令提示窗口输入编辑好的YUN.ASM的文件,遇到报错:

命令提示窗口显示输入的文件名内容不存在;分析得出是由于文件所未放有汇编控制的文件夹中;解决方法:

将YUN.ASM文件直接拖入有汇编控制的文件夹中。

在进行LINKYUN命令时,显示:

warning:

nostacksegment;therewas1errordetected。

此警告和错误显示堆栈段有问题,在此题中可以忽略。

另外通过不断操作,我还学到了一点小技巧:

将文件放在不同目录下时,一开始就在命令提示窗口输入目录名,然后通过“CD\文件夹名”进行操作。

虽然本次实验操作用时较长,效率相对低。

但通过本次实验,我熟练的掌握了汇编语言程序设计上机操作步骤及DEBUG调试工具的使用,成功的达到了实验目的。

10.1.6实验截图:

 

微机原理第二次试验

字符及字符串输入/输出实验

 

 

10.2字符及字符串输入输出与程序设计实验

10.2.1实验目的

1、学习和掌握字符及字符串的输入及输出方法。

2、掌握顺序程序设计的方法。

3、进一步掌握调试工具的使用方法

10.2.2实验预习要求

1、复习DOS功能调用中用于字符输入,输出,字符串输入和输出的调试方法。

2、复习BCD码运算调整指令。

3、根据10.2.3实验内容给出的实验框架,编写完整的源程序,以便实验时调试。

10.2.3实验内容

1从键盘输入两个一位十进制数,计算着两个数之和,并将结果在屏幕上显示出来。

(1)从键盘输入一位十进制数的方法。

通过功能号为1的DOS功能调用实现从键盘输入一个字符,格式如下:

MOVAH,01H

INT21H

SUBAL,30H

(2)提示信息字符串的显示。

通过功能号为9的DOS功能键调用实现字符串显示,注意字符串的最后一个字符必须为$.指令格式如下:

MOV DX,OFFSET INFOR1

MOV AH,09H

INT 21H

(3)非压缩型BCD码加法调整指令的使用。

设从键盘输入的数值已存在寄存器AL,BL中,可用下列程序完成数据相加和调整操作:

XOR AH,AH

ADDALBL

AAA; 

(4)计算结果的显示。

执行完AAA指令后,只需将AH和AL加上30H,并以此调用功能号为2的DOS功能调用来显示字符。

具体指令代码如下:

PUSHAX

MOVDL,AH

ADDDL,30H

MOVAH,02H

INT21H

POPAX

MOVDL,AL

ADDDL,30H

MOVAH,02H

INT21H

2源程序框架

DATASEGMENT

INFOR1DB"pleaseinputthefirstdata(<10):

$"

INFOR2DB0AH,0DH,"pleaseinputtheSeconddata(<10):

$"

INFOR3DB0AH,0DH,"theResultis:

$"

DATAENDS

CODESEGMENT

ASSUMECS:

CODE,DS:

DATA

START:

MOVAX,DATA

MOVDS,AX

MOVDX,OFFSETINFOR1

MOVAH,09H

INT21H

MOVAH,01H

INT21H

SUBAL,30H

MOVBL,AL

MOVDX,OFFSETINFOR2

MOVAH,09H

INT21H

MOVAH,01H

INT21H

SUBAL,30H

XORAH,AH

ADDAL,BL

AAA

PUSHAX

MOVDX,OFFSETINFOR3

MOVAH,09H

INT21H

POPAX

PUSHAX

MOVDL,AH

ADDDL,30H

MOVAH,02H

INT21H

POPAX

MOVDL,AL

ADDDL,30H

MOVAH,02H

INT21H

MOVAH,4CH

INT21H

CODEENDS

ENDSTART

10.2.4实验截图:

 

 

2、从键盘输入两个一位十进制数,计算着两个数之积,并将结果在屏幕上显示出来。

DATASEGMENT

INFOR1DB"PleaseInputtheFirstData(<10):

$"

INFOR2DB0AH,0DH,"PleaseInputtheSecondData(<10):

$"

INFOR3DB0AH,0DH,"TheResultis:

$"

DATAENDS

CODESEGMENT

ASSUMECS:

CODE,DS:

DATA

START:

MOVAX,DATA

MOVDS,AX

MOVDX,OFFSETINFOR1

MOVAH,09H

INT21H

MOVAH,01H

INT21H

SUBAL,30H

MOVBL,AL

MOVDX,OFFSETINFOR2

MOVAH,09H

INT21H

MOVAH,01H

INT21H

SUBAL,30H

XORAH,AH

MULBL

AAM

PUSHAX

MOVDX,OFFSETINFOR3

MOVAH,09H

INT21H

POPAX

PUSHAX

MOVDL,AH

ADDDL,30H

MOVAH,02H

INT21H

POPAX

MOVDL,AL

ADDDL,30H

MOVAH,02H

INT21H

MOVAH,4CH

INT21H

CODEENDS

ENDSTART

 

实验截图:

10.2.5实验小结:

本次上机可以说是第一次实际编程操作,虽然实验指导书上已经给出程序框架,但还需要根据理解填完整程序方可操作。

在加法运算和乘法运算中遇到同一个问题:

首先填完整程序操作时,发现结果显示的是输入的第二个数的平方。

分析认为输入AL的第一个数未存放入BL中,导致第二次输入AL的数覆盖了第一次的数;最终在别的同学的指导下我通过调整MOVBL,AL的位置从而解决了问题。

在进行LINKweiji2命令时,显示:

warning:

nostacksegment;therewas1errordetected。

此警告和错误显示堆栈段有问题,在此题中可以忽略。

另外通过不断操作,我还学到了一点小技巧:

将文件放在不同目录下时,一开始就在命令提示窗口输入目录名,然后通过“CD\文件夹名”进行操作。

由于在做本次试验之前,我进行了很好的预习,所以在实验室只是将程序运行一下,效率较高,通过这次试验,我充分的掌握了DOS功能的调用,提示符、计算结果的显示以及非压缩型BCD码加法指令的使用,这次试验较第一次试验此有了很大的进步,希望以后再接再厉做得更好!

 

微机原理第三次试验

分支程序设计实验

 

 

10.3分支程序设计实验

10.3.1实验目的

1、掌握分支程序的设计方法。

2、掌握宏定义及宏调用的基本方法。

3、了解小写和大写字母的ASCII码表示及其转换方法。

了解数字及其它字符在的ASCII码表示方法。

4、进一步掌握调试工具的使用方法

10.3.2实验预习要求

1、复习比较指令、条件转移指令的用法。

2、复习宏定义及宏调用的基本方法。

3、根据“2.3.3实验内容”中给出的流程图和程序框架编写源程序,以便上机调试。

4、程序框架中显示提示信息的指令序列用宏调用实现。

5、从“2.3.4实验习题”中任选一道题目,编写源程序,以便上机调试。

10.3.3实验内容

从键盘输入一字符,判断该字符是小写字母、大写字母、数字或其它字符。

若输入为小写字母,显示“YouInputaLowercaseLetter!

”;若输入为大写字母,显示“YouInputaUppercaseLetter!

”;若输入为数字,显示“YouInputaDigit!

”;若输入为其它字符,显示“YouInputOtherLetter!

”。

1、编程指导

数字09的ASCII码为30H39H;大写字母的ASCII码为41H5AH,小写字母的ASCII码为61H7AH。

本题目将字符分为小写字母、大写字母、数字及其它字符,根据键入字符的ASCII码值判断其所属类型,并显示相应的信息。

字符串显示使用功能号为09H的DOS功能调用,接收键盘输入的单个字符使用功能号为01H的DOS功能调用。

2、

流程图及程序框图

(1)流程图

(2)程序

DATASEGMENT

INFOR1DB0AH,0DH,"PleasePressAnyKeytoinputaletter:

$"

INFOR2DB0AH,0DH,"YouInputaLowercaseLetter!

$"

INFOR3DB0AH,0DH,"YouInputaUppercaseLetter!

$"

INFOR4DB0AH,0DH,"YouInputaDigit!

$"

INFOR5DB0AH,0DH,"YouInputOtherLetter!

$"

DATAENDS

CODESEGMENT

ASSUMECS:

CODE,DS:

DATA

START:

MOVAX,DATA

MOVDS,AX

MOVDX,OFFSETINFOR1

MOVAH,09H

INT21H

MOVAH,01H

INT21H

MOVDX,OFFSETINFOR1

MOVAH,09H

CMPAL,'0'

JBOTHER

CMPAL,'9'

JBEDIGIT

CMPAL,'A'

JBOTHER

CMPAL,'Z'

JBEUPPER

CMPAL,'a'

JBOTHER

CMPAL,'z'

JBELOWER

JMPPEND

LOWER:

MOVDX,OFFSETINFOR2

MOVAH,09H

INT21H

JMPPEND

UPPER:

MOVDX,OFFSETINFOR3

MOVAH,09H

INT21H

JMPPEND

DIGIT:

MOVDX,OFFSETINFOR4

MOVDX,OFFSETINFOR4

MOVAH,09H

INT21H

JMPPEND

OTHER:

MOVDX,OFFSETINFOR5

MOVAH,09H

INT21H

PEND:

MOVAH,4CH

INT21H

CODEENDS

ENDSTART

实验截图:

10.3.4实验习题

1、在屏幕上显示信息“Areyoureallywanttoexit?

”,然后从键盘输入一个字符,若输入“Y”或“y”,显示“Thankyouforyourusing!

”后程序结束;若输入“N”或“n”,显示“Let’scontinue!

”后程序结束;若输入其它字符,显示“Youpressanerrorkey!

”后程序结束(要求尽量使用宏指令以便使源程序更加简洁)。

程序:

DATASEGMENT

INFOR1DB0AH,0DH,"Areyoureallywanttoexit?

$"

INFOR2DB0AH,0DH,"thankyouforyourusing!

$"

INFOR3DB0AH,0DH,"Let'scontinue!

$"

INFOR4DB0AH,0DH,"YouInputOtherLetter!

$"

DATAENDS

CODESEGMENT

ASSUMECS:

CODE,DS:

DATA

START:

MOVAX,DATA

MOVDS,AX

MOVDX,OFFSETINFOR1

MOVAH,09H

INT21H

MOVAH,01H

INT21H

CMPAL,'Y'

JEYES

CMPAL,'y'

JEYES

CMPAL,'N'

JENO

CMPAL,'n'

JENO

JMPOTHER

YES:

MOVDX,OFFSETINFOR2

MOVAH,09H

INT21H

JMPPEND

NO:

MOVDX,OFFSETINFOR3

MOVAH,09H

INT21H

JMPPEND

OTHER:

MOVDX,OFFSETINFOR4

MOVAH,09H

INT21H

JMPPEND

PEND:

MOVAH,4CH

INT21H

CODEENDS

ENDSTART

实验截图:

2、在屏幕上显示如下信息:

1------------------------Panda

2------------------------Cat

3------------------------Rabbit

4------------------------Pig

5------------------------EXIT

(Pleasechoose1,2,3,4or5)-----

若输入1,显示“Ilikepanda”后程序结束;若输入2,显示“Ilikecat”后程序结束;若输入3,显示“Ilikerabbit”后程序结束;若输入4,显示“Idon’tlikepig”后程序结束;若输入5,程序直接结束;若输入其它字符,显示“Youpressanerrorkey!

”后程序结束(要求尽量使用宏指令以便使源程序更加简洁)。

程序:

DATASEGMENT

INFOR1DB0AH,0DH,"1------------------------Panda$"

INFOR11DB0AH,0DH,"2------------------------Cat$"

INFOR12DB0AH,0DH,"3------------------------Rabbit$"

INFOR13DB0AH,0DH,"4------------------------Pig$"

INFOR14DB0AH,0DH,"5------------------------EXIT$"

INFOR15DB0AH,0DH,"(Pleasechoose1,2,3,4or5)-----$"

INFOR2DB0AH,0DH,"Ilikepanda$"

INFOR3DB0AH,0DH,"Ilikecat!

$"

INFOR4DB0AH,0DH,"Ilikerabbit!

$"

INFOR5DB0AH,0DH,"Idon’tlikepig$"

INFOR6DB0AH,0DH,"Youpressanerrorkey!

$"

DATAENDS

CODESEGMENT

ASSUMECS:

CODE,DS:

DATA

START:

MOVAX,DATA

MOVDS,AX

MOVDX,OFFSETINFOR1

MOVAH,09H

INT21H

MOVDX,OFFSETINFOR11

MOVAH,09H

INT21H

MOVDX,OFFSETINFOR12

MOVAH,09H

INT21H

MOVDX,OFFSETINFOR13

MOVAH,09H

INT21H

MOVDX,OFFSETINFOR14

MOVAH,09H

INT21H

MOVDX,OFFSETINFOR15

MOVAH,09H

INT21H

MOVAH,01H

INT21H

CMPAL,'1'

JEOTHER

CMPAL,'2'

JEDIGIT

CMPAL,'3'

JEUPPER

CMPAL,'4'

JELOWER

CMPAL,'5'

JEPEND

JMPOTHERS

LOWER:

MOVDX,OFFSETINFOR5

MOVAH,09H

INT21H

JMPPEND

UPPER:

MOVDX,OFFSETINFOR4

MOVAH,09H

INT21H

JMPPEND

DIGIT:

MOVDX,OFFSETINFOR3

MOVAH,09H

INT21H

JMPPEND

OTHER:

MOVDX,OFFSETINFOR2

MOVAH,09H

INT21H

OTHERS:

MOVDX,OFFSETINFOR6

MOVAH,09H

INT21H

JMPPEND

PEND:

MOVAH,4CH

INT21H

CODEENDS

ENDSTART

实验截图:

10.3.5实验小结:

通过本次试验我进一步学习了汇编语言,由于先前试验的经验积累,在本次实践中遇到的问题不多,但在解决问题时我学到了很多。

首先上机实践前,我做了些准备,将不是很清楚的汇编语言命令查

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

当前位置:首页 > 高中教育 > 理化生

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

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