微机原理实验.docx
- 文档编号:3494627
- 上传时间:2022-11-23
- 格式:DOCX
- 页数:14
- 大小:212.08KB
微机原理实验.docx
《微机原理实验.docx》由会员分享,可在线阅读,更多相关《微机原理实验.docx(14页珍藏版)》请在冰豆网上搜索。
微机原理实验
实验一数据传送实验
实验目的
1.熟练掌握汇编语言上机步骤
2.掌握数据传送指令的使用规则
3.了解汇编语言程序格式
4.掌握汇编语言程序调试方法
实验步骤
题目一:
数据段定义如下:
DATASEGMENT
arr1DB'abcdefghr"
MIDDB'********'
arr2DB9DUP(?
)
DATAENDS编写程序,将arr1起始的100个字节倒序存放到arr2起始的存储区中。
实验步骤:
1.在文本编辑器中编辑程序。
例如,在将程序输入到记事本中,保存时文件的扩展名应为ASM。
文件名其他字符自定,注意要少于8个英文字符。
例如,文件名可以是:
1.ASM或qwe.asm等等。
2.进入DOS方式。
如果是windowsxp和windows2000系统,使用“开始”|“运行”命令,在运行框中输入CMD,然后单击“确定”按钮。
如果是WINDOWS98系统,则命令应为“command”。
3.将编辑好的ASM文件汇编成目标文件(OBJ文件)
在DOS提示符下,进入MASM文件夹。
(若MASM文件夹在C盘,则在DOS下进入该文件夹的命令为:
CD\MASM)。
进入之后,在提示符下键入命令:
masm并按回车键。
然后在屏幕的提示下,键入要汇编的文件的文件全名。
例如,键入第一步中建立的1.asm文件。
如果源文件没有错误,那么就可以生成OBJ文件(例如,生成了1.obj),如果有错误,就要修改源程序文件。
4.将生成的目标文件连接成可执行文件(EXE文件)
在提示符下键入命令:
LINK并按回车键,在提示下输入要连接的目标文件的文件名(1.obj),成功后则会生成1.EXE文件。
5.运行生成的可执行文件。
可以在DOS的提示符下或者WINDOWS下运行程序,观察程序的运行结果。
但是如果程序的运行结果不显示在屏幕上,或者程序的结果与预期的不符,那么就需要使用调试工具来调试程序。
6.调试程序。
在提示符下键入DEBUG1.exe来调试程序。
调试命令
U——反汇编
G——执行程序
D——查看存储器
E——修改存储器
R——查看/修改寄存器
Q——退出调试环境
命令用法:
U——使用U命令时,先用U0从程序最开始处反汇编。
如果一个屏幕没有完全显示下全部指令,则以后用U命令继续反汇编。
G——使用G命令时,可以直接用G来执行所有指令,也可以在G后面跟上一个偏移地址x,使程序执行到x处然后暂停,再次用G命令则程序继续执行。
当G后面有偏移地址时,执行到了该处,屏幕同时给出当前寄存器的内容。
例如,使程序从指令偏移地址为0000处执行到001F处,所用的指令为G001F。
D——查看存储器内容的时候,要同时给出段地址和偏移地址。
例如本例中查看数据段的命令为D13F3:
0000
如果存储单元的内容表示某个字符的ASCII码,则注释区会有该字符的提示;否则注释区的内容没有意义。
E——修改存储器的内容
使用方法与D命令类似
R——查看/修改寄存器内容
直接用R命令可以查看所有寄存器的内容,如果后面,上某个寄存器名,则可修改它例如RAX。
7.调试时,要查看程序执行前和执行后存储器的变化。
所以在程序执行前后都要查看存储器的内容。
8.参考程序
DATASEGMENT
arr1DB'abcdefghr'
MIDDB'********'
arr2DB9DUP(?
)
DATAENDS
codesegment
assumecs:
code,ds:
data
mainprocfar
begin:
pushds
movax,0
pushax
movax,data
movds,ax
movcx,100
movsi,offsetarr1
movdi,offsetarr2
adddi,9
contin:
moval,[si]
mov[di],al
incsi
decdi
deccx
jnzcontin
ret
mainendp
codeends
endbegin
题目2编程从键盘上输入一个十以内的数字n,则屏幕显示n个‘a’。
这个程序不需要调试,因为它在屏幕上有输出结果。
参考程序:
codesegment
assumecs:
code
mainprocfar
begin:
pushds
movax,0
pushax
xorax,ax
movah,01h
int21h
andal,0fh
movcl,al
movdl,'a'
contin:
movah,02h
int21h
deccl
jnzcontin
ret
mainendp
codeends
endbegin
实验二算术/逻辑运算指令
实验目的
1.掌握算术/逻辑运算指令的规则和使用方法。
2.熟练掌握程序调试步骤。
3.熟练汇编语言程序格式
4.了解结构化程序设计思想
实验步骤
题目一:
数据段定义如下:
DATASEGMENT
FIRSTDB90H,5FH,6EH,69H,4AH,3BH
SECONDDB6DUP(?
)
DATAENDS
编写程序,将FIRST开始的6个字节十六进制数左移两位,结果存放在SECOND开始的存储区中。
按照实验一的步骤调试此程序,在实验报告中要给出程序的运行结果。
参考程序
DATASEGMENT
FIRSTDB90H,5FH,6EH,69H,4AH,3BH
SECONDDB6DUP(?
)
DATAENDS
codesegment
assumecs:
code,ds:
data
mainprocfar
begin:
pushds
movax,0
pushax
movax,data
movds,ax
movsi,offsetfirst
movdi,offsetsecond
movch,6
movcl,2
contin:
moval,[si]
salal,cl
mov[di],al
incsi
incdi
decch
jnzcontin
ret
mainendp
codeends
endbegin
题目二:
设有如下定义:
datasegment
str1db'abcdefghijk'
str2db'abcdefghikk'
resultdb?
dataends
编写一个程序,比较两个字符串是否相等。
若两个字符串相等,则在RESULT单元存放字符'E';否则存放字符'N'。
按照实验一的步骤调试此程序,并在实验报告中给出结果。
当把语句“str2db'abcdefghikk'”改为“str2db'abcdefghijk'”时,给出程序的另一个结果。
参考程序:
datasegment
str1db'abcdefghijk'
str2db'abcdefghikk'
resultdb?
dataends
codesegment
assumecs:
code,ds:
data
mainprocfar
begin:
pushds
movax,0
pushax
movax,data
movds,ax
moves,ax
movsi,offsetstr1
movdi,offsetstr2
movcx,11
cmpsb
andcx,0
jzgoon
moval,'E'
movresult,al
jmpover
goon:
moval,'N'
movresult,al
over:
ret
mainendp
codeends
endbegin
实验三8259A中断控制器实验
1.实验中所用8259A介绍
实验四8253计数器实验
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 微机 原理 实验