南昌大学微机原理与接口技术实验报告.docx
《南昌大学微机原理与接口技术实验报告.docx》由会员分享,可在线阅读,更多相关《南昌大学微机原理与接口技术实验报告.docx(24页珍藏版)》请在冰豆网上搜索。
南昌大学微机原理与接口技术实验报告
实验报告
实验课程:
PC机原理与接口技术
姓名:
学号:
专业班级:
2016年6月
实验一熟悉DOS环境和汇编软件的使用
实验二DEBUG的使用
实验三顺序结构程序设计实验
实验四选择结构程序设计实验
实验五循环结构程序设计实验
实验六综合程序设计实验
实验一:
熟悉DOS环境和汇编软件的使用
一、实验要求:
必做
二、实验类型:
验证
三、实验学时:
2
四、实验地点:
机房
五、实验目的:
1、熟悉DOS环境和DOS基本操作。
2、掌握汇编程序的使用方法:
MASM,LINK,EDIT(TC),DEBUG
六、实验内容:
(一)、熟悉DOS环境
1、MS-DOS的启动
(二)、熟悉一些常用的DOS命令
1、更改盘符。
2、建立子目录(文件夹)。
3、显示/更改当前目录。
4、显示磁盘目录的内容。
(三)、熟悉调试程序DEBUG.EXE的应用,练习DEBUG的常用命令
1.汇编语言源程序的建立
程序要求是:
在屏幕上显示“Hello,world!
”。
设定源程序的文件名为hello.asm。
在DOS状态下键入以下命令:
tc
输入以下源代码并保存
DATASEGMENT
BUFDB'Hello,world!
$'
DATAENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA
START:
MOVAX,DATA
MOVDS,AX
MOVDX,OFFSETBUF
MOVAH,9
INT21H
MOVAH,4CH
INT21H
CODEENDS
ENDSTART
2.将源程序文件汇编成目标程序文件
masm hello.asm
MASM宏汇编程序的主要功能有以下3点:
(1)检查源程序中存在的语法错误,并给出错误信息。
(2)若源程序经汇编后没有语法错误,则产生扩展名为.OBJ的目标程序文件。
(3)若源程序中使用了宏指令,则汇编程序将展开宏指令。
源程序建立以后,在DOS状态下,采用宏汇编程序MASM对源程序文件进行汇编。
3.用连接程序生成可执行程序文件
经汇编以后产生的目标程序文件(.OBJ文件)并不是可执行程序文件,必须经过连接以后,才能成为可执行文件(即扩展名为.EXE)。
linkhello.obj
如果汇编过程中有错误产生,则汇编程序将显示出错行号和错误信息。
最后显示的部分是警告错误及严重错误数。
当程序中没有定义堆栈段或虽然定义但不符合要求时,LINK在最后一行会给出类似“LINK:
warningL4021:
nostacksegment”的警告信息,表示用户程序没有定义堆栈段。
该警告信息不影响可执行程序的生成和正常运行,因为若用户程序没有定义堆栈段,程序运行时会自动使用系统提供的默认堆栈。
4.程序的执行当我们建立了正确的可执行文件以后,就可以直接在DOS状态下执行该程序。
hello.exe如下图所示。
如果使用测试数据均可运行并能看到正确结果,则说明该程序编写正确。
但若得不到正确结果或结果无法看到(没有结果输出的情况下),则需要使用调试工具来调试程序了。
7、写出实验小结,内容包括实验心得(收获)、不足之处和今后应注意的问题。
由于是第一次实验,对整个编程环境和实验内容都不是很熟悉,但经过这次实验,对这些都有一些大致的了解,特别是学会了如何调试程序,也对从汇编课上学习到的理论知识有了更深刻的认识,经过自己动手编程,对汇编语言更加熟悉,通过将理论用于实践,也对学习汇编知识有很大帮助。
实验二:
DEBUG的使用
一、实验要求:
必做
二、实验类型:
验证
三、实验学时:
2
四、实验地点:
机房
五、实验目的:
1、熟悉DEBUG基本操作。
六、实验内容:
1、DEBUG程序的启动
在DOS环境下,键入debug
2、DEBUG的主要命令
(1)汇编命令A
(2)反汇编命令U
(3)运行命令G
(4)追踪命令T
(5)显示内存单元内容的命令D
(6)修改内存单元内容的命令E
略
(7)检查和修改寄存器内容的命令R
(8)命名命令N
略
(9)装入命令L
略
(10)写命令W
略
(11)退出DEBUG命令Q
略
七、实验小结及心得体会
通过本次实验,了解DEBUG调试程序常用命令的基本格式、主要功能和使用方法。
熟悉进入或退出DEBUG调试程序运行界面的步骤。
掌握用DEBUG调试程序进行程序编辑、调试、运行、结果检查的基本方法。
进一步汇编语言上机环境及基本操作。
感觉它比其他高级语言确实要复杂,但是能更一步体会计算机是如何操作的!
通过对debug 的运用,我们了解到了很多关于电脑方面的知识,也知道了debug 的强大功能。
我们应多加练习,以便熟悉的掌握这方面的知识。
实验三顺序结构程序设计实验
一、实验要求:
必做
二、实验类型:
验证
三、实验学时:
2
四、实验地点:
机房
五、实验目的:
1、掌握顺序程序的设计方法。
六、实验内容:
1.编写程序实现:
从键盘输入两个1位的十进制数,计算这两个数之和,并将结果在屏幕上显示出来。
{提示:
数据段的格式可定义为:
dataSEGMENT
infor1DB'Pleaseinputthefirstdata(<10):
$'
infor2DB0ah,0dh,'pleaseinputtheseconddata(<10):
$'
infor3DB0ah,0dh,'theresultis:
$'
dataENDS}
codesegment
assumecs:
code
start:
movcx,2movbl,0
next:
movah,1
int21h
subal,30h
jcnext
cmpal,9h
janext
addal,bl
daa
movbl,al
movdl,13
movah,2
int21h
movdl,10
int21h
loopnext
movcl,4
movdh,2
next1:
rolbl,cl
movdl,bl
anddl,0fh
adddl,30h
movah,2
int21h
decdhjnz
next1
movah,1
int21h
movah,4ch
int21h
codeends
endstart
2.编写程序实现:
从键盘输入0~9中任意一个自然数,将其平方值在屏幕上显示出来(要求使用查表法)。
退出
DATASSEGMENT
TABLEDB00H,01H,04H,09H,16H,25H,36H,49H,64H,81H
DATASENDS
STACKSSEGMENT
STACKSENDS
CODESSEGMENT
ASSUMECS:
CODES,DS:
DATAS,SS:
STACKS
START:
MOVAX,DATAS
MOVDS,AX
MOVAH,07H
INT21H
ANDAL,0FH
MOVDL,AL
XORDH,DH
MOVBX,OFFSETTABLE
ADDBX,DX
MOVAL,[BX]
MOVCL,04H
MOVBL,AL
SHRAL,CL
MOVDL,AL
ADDDL,30H
MOVAH,02H
INT21H
ANDBL,0FH
MOVDL,BL
ADDDL,30H
MOVAH,02H
INT21H
MOVAH,4CH
INT21H
CODESENDS
ENDSTART
七、实验心得
(1)了解了编制汇编语言程序的步骤:
分析题意,确定算法;根据算法画出程序框图; 根据框图编写程序;上机调试程序。
(2)理解了调试过程的反复性,发生错误时,一步步往回验证,直到找到错误,修改后,继续重新执行。
(3)通过单步执行命令t跟踪调试,提高了对寄存器根据指令变化的理解;同时对debug命令格式、功能有了基础的了解。
实验四选择结构程序设计实验
一、实验目的:
1.掌握分支程序的设计方法。
2.了解小写和大写字母的ASCII码表示及其转换方法,了解数字及其他字符的ASCII码表示方法。
二、实验仪器:
PC机一台
三、实验内容
1、从键盘输入一字符,判断该字符是小写字母、大写字母、数字还是其它字符。
若输入为小写字母,则显示“YouInputaLowercaseLetter!
”;若输入为大写字母,则显示“YouInputaUppercaseLetter!
”;若输入为数字,则显示“YouInputaDigit!
”;若输入为其它字符,则显示“YouInputOtherLetter!
”。
2、在屏幕上显示“Areyoureallywanttoexit?
”,然后从键盘输入一字符,若输入“Y”或“y”,则显示“Thankyouforyourusing!
”;若输入“N”或“n”,则显示“Let’scontinue!
”;若输入其它字符,则显示“Youpressanerrorkey!
”后程序结束。
四、实验程序与流程图
实验步骤
(1) 完成汇编语言源程序的编辑和连接过程。
(2) 利用DEBUG进行程序调试和运行。
实验程序
(1):
dsegsegment
msglfdb0ah,0dh,'$'
msgupdb'YouInputaUppercaseLetter!
',0ah,0dh,'$'
msglodb'YouInputaLowercaseLetter!
',0ah,0dh,'$'
msgnumdb'YouInputaDigit!
',0ah,0dh,'$'
msgotdb'YouInputOtherLetter!
',0ah,0dh,'$'
dsegends
csegsegment
assumeds:
dseg,cs:
cseg
begin:
movax,dseg
movds,ax
movah,1
int21h
movbl,al
leadx,msglf
movah,9
int21h
moval,bl
cmpal,'0'
jlOtherC
cmpal,'9'
jgNotNum
leadx,msgnum
jmpOutput
NotNum:
cmpal,'A'
jlOtherC
cmpal,'Z'
jgNotUp
leadx,msgup
jmpOutput
NotUp:
cmpal,'a'
jlOtherC
cmpal,'z'
jgOtherC
leadx,msglo
jmpOutput
OtherC:
leadx,msgot
Output:
movah,9
int21h
movah,4ch
int21h
csegends
endbegin