微机原理实验指导书.docx
- 文档编号:6407337
- 上传时间:2023-01-06
- 格式:DOCX
- 页数:40
- 大小:60.18KB
微机原理实验指导书.docx
《微机原理实验指导书.docx》由会员分享,可在线阅读,更多相关《微机原理实验指导书.docx(40页珍藏版)》请在冰豆网上搜索。
微机原理实验指导书
微机原理实验指导书
东华大学信息信息科学与技术学院
二○○八年十月
目录
实验一DEBUG的启动及其基本命令的使用1
实验二内存操作数及寻址方法5
实验三汇编语言程序的调试与运行7
实验四查表程序设计9
实验五系统功能调用11
实验六分支程序设计12
实验七循环程序设计14
实验八子程序设计16
实验九综合程序设计19
附录一DEBUG命令详解31
附录二实验报告48
实验的基本要求与方法
一、实验目的
学习程序设计的基本方法和技能,熟练掌握用汇编语言设计、编写、调试和运行程序的方法。
为后续课程打下坚实的基础。
二、实验要求
1.上机前做好充分的准备,包括程序框图、源程序清单、调试步骤、测试方法,对运行结果的分析等。
2。
上机时要遵守实验室的规章制度,爱护实验设备。
要熟悉与实验有关的系统软件(编辑程序、汇编程序、连接程序和调试程序等)的使用方法。
在程序的调试过程中,有意识地学习及掌握debug程序的各种操作命令,以便掌握程序的调试方法及技巧。
3.每个实验完成后,应写出实验报告,实验报告为word文档。
实验报告要求:
(1)设计说明:
用来说明程序的功能、结构。
它包括:
程序名、功能、原理及算法说明、程序及数据结构、主要符号名的说明等。
(2)调试说明:
便于学生总结编程经验提高编程及高度能力。
它包括:
调试情况,如上机时遇到的问题及解决办法,观察到的现象及其分析,对程序设计技巧的总结及分析等;程序的输出结果及对结果的分析;实验的心得体会。
(3)程序框图
(4)程序清单
4.为了更好地进行上机管理,要求用硬盘存储程序,并建立和使用子目录,以避免文件被别人删除。
为便于统一管理硬盘中的文件,要求实验者在e:
\学号目录下建立自己的文件,文件按以下格式命名:
字母学号.扩充名,其中字母取a~z的26个英文字母,按实验顺序从a至z排列,学号取后面的6位。
如学号为20043727的学生第三个实验第一个源程序所对应的文件名为c1043727.ASM,本次实验的第二个源程序为c2043727,实验报告对应的文件名为c043727.doc。
实验报告写完后,将源程序文件及实验报告上传到教师机上相应的目录中。
具体目录上机时由指导老师告之。
三、实验的基本方法
1.从教师机下载汇编程序MASM.EXE和连接程序LINK.EXE到学生机的相应文件夹(文件夹以学号命名)下。
2.进入DOS环境中相应的目录下。
如学生的文件来为:
d:
\20043727,则对应的操作为
(1)选择windows的“开始”→“程序”→“附件”→“命令提示符”
(2)在DOS命令提示符下输入如下命令(其中带下划线部分为输入内容)。
C:
\DocumentsandSettings\new>d:
D:
\>cd20043727
D:
\20043727>edita1043727.asm
进入编辑程序,在其环境下输入编好的源程序,然后在盘上生成一个扩展名为.asm的文件。
3.用宏汇编程序MASM,将扩展名为.ASM的源程序汇编成目标程序,即生成盘上扩展名为.OBJ的文件。
若编过程出现错误,则无法生成目标程序,需要回到编辑程序进行修改,修改后重新汇编直到无错出现。
4.用连接程序LINK,将扩展名为.OBJ的目标程序连接装配成可执行文件,即在盘上生成扩展名为.EXE的文件。
5.用调试程序DEBUG,调试扩展名为.EXE的文件,以发现程序中的逻辑错误并进行排除。
实验一DEBUG的启动及其基本命令的使用
一.实验目的:
掌握DEBUG的基本命令及其功能
二.实验内容:
DEBUG是专门为汇编语言设计的一种调试工具,它通过步进,设置断点等方式为汇编语言程序员提供了非常有效的调试手段。
1、DEBUG程序的启动
在DOS提示符下,可键入命令:
C>DEBUG[d:
][path][文件名][参数1][参数2]
其中文件名是被调试文件的名称,它须是执行文件(EXE),两个参数是运行被调试文件时所需要的命令参数,在DEBUG程序调入后,出现提示符“-”,此时,可键入所需的DEBUG命令。
在启动DEBUG时,如果输入了文件名,则DEBUG程序把指定文件装入内存。
用户可以通过DEBUG的命令对指定文件进行修改、显示和执行。
如果没有文件名,则是以当前内存的内容工作,或者用命名命令和装入命令把需要的文件装入内存,然后再用DEBUG的命令进行修改、显示和执行。
2、DEBUG的主要命令
汇编命令A,格式为:
-A[地址]
该命令从指定地址开始允许输入汇编语句,把它们汇编成机器代码相继存放在从指定地址开始的存储器中。
反汇编命令U,有两种格式:
1)-U[地址]
该命令从指定地址开始,反汇编32个字节,若地址省略,则从上一个U命令的最后一条指令的下一个单元开始显示32个字节。
2)-U范围
该命令对指定范围的内存单元进行反汇编,例如:
-U04BA:
01000108或–U04BA:
0100L9
此二命令是等效的。
运行命令G,格式为:
-G[=地址1][地址2[地址3。
。
。
]]
其中地址1规定了运行起始地址,后面的若干地址均为断点地址。
追踪命令T,有两种格式:
1)逐条指令追踪:
-T[=地址]
该命令从指定地址起执行一条指令后停下来,显示寄存器内容和状态值。
2)多条指令追踪:
-T[=地址][值]
该命令从指定地址起执行n条命令后停下来,n由[值]确定。
显示内存单元内容的命令D,格式为:
-D[地址]或-D[范围]
修改内存单元内容的命令E,它有两种格式:
1)用给定的内容代替指定范围的单元内容:
-E地址内容表
例如:
-E2000:
0100F3“XYZ”8D
其中F3,“X”“Y”“Z”和8D各占一个字节,用这五个字节代替原内存单元2000:
0100到0104的内容,“X”“Y”“Z”将分别按它们的ASCII码值代入。
2)逐个单元相继地修改:
-E地址
例如:
-E100:
18E4:
010089.78
此命令是将原100号单元的内容89改为78。
78是程序员键入的。
检查和修改寄存器内容的命令R,它有三种方式:
1)显示CPU内部所有寄存器内容和标志位状态;格式为:
-R
R命令显示中标志位状态的含义如下表所示:
标志名
置位
复位
溢出Overflow(是/否)
OV
NV
方向Direction(减量/增量)
DN
UP
中断Interrupt(允许/屏蔽)
EI
DI
符号Sign(负/正)
NG
PL
零Zero(是/否)
ZR
NZ
辅助进位AuxiliaryCarry(是/否)
AC
NA
奇偶Parity(偶/奇)
PE
PO
进位Carry(是/否)
CY
NC
2)显示和修改某个指定寄存器内容,格式为:
-R寄存器名
例如打入:
-RAX
系统将响应如下:
AXFIF4
:
表示AX当前内容为F1F4,此时若不对其作修改,可按ENTER键,否则,打入修改后内容,如:
-RBX
BX0369
:
059F
则BX内容由0369改为059F
3)显示和修改标志位状态,命令格式为:
-RF
系统将给出响应,如
OVDNEINGZRACPECY-
这时若不作修改可按ENTER键,否则在“-”号之后键入修改值,键入顺序任意。
如
OVDNEINGZRACPECY-PONZDINV
命名命令N,格式为:
-N文件名
此命令将文件名格式化在CS:
5CH的文件控制块内,以便使用L或W命令把文件装入内存进行调试或者存盘。
装入命令L,它有两种功能:
1)把磁盘上指定扇区的内容装入到内存指定地址起始的单元中,格式为:
-L地址驱动器扇区号扇区数
2)装入指定文件,格式为:
-L[地址]
此命令装入已在CS:
5CH中格式化的文件控制块所指定的文件。
在用L命令前,BX和CX中应包含所读文件的字节数。
写命令W,有两种格式:
1)把数据写入磁盘的指定扇区:
-W地址驱动器扇区号扇区数
2)把数据写入指定文件中:
-W[地址]
此命令把指定内存区域中的数据写入由CS:
5CH处的FCB所规定的文件中。
在用W命令前,BX和CX中应包含要写入文件的字节数。
退出DEBUG命令Q,该命令格式为
Q
它退出DEBUG程序,返回DOS,但该命令本身并不把在内存中的文件存盘,如需存盘,应在执行Q命令前先执行写命令W。
三.操作步骤
1.调用字处理程序建立源程序文件如图1-1所示。
DATASEGMENT
STRING1DB'Movethecursorbackward'
STRING2DB'Movethecursorbackward'
MESS1DB'Match.',13,10,'$'
MESS2DB'NoMatch.',13,10,'$'
DATAENDS
STACKSEGMENTSTACK
DB40DUP(?
)
STACKENDS
PROGNAMSEGMENT
ASSUMECS:
PROGNAM,DS:
DATA,ES:
DATA,SS:
STACK
MAINPROCFAR
START:
XORAX,AX
PUSHAX
PUSHDS
MOVAX,DATA
MOVDS,AX
MOVES,AX
MOVAX,STACK
MOVSS,AX
LEASI,STRING1
LEADI,STRING2
CLD
MOVCX,25
REPZCMPSB
JZMATCH
LEADX,MESS2
JMPSHORTDISP
MATCH:
LEADX,MESS1
DISP:
MOVAH,09h
INT21H
RET
MAINENDP
PROGNAMENDS
ENDSTART
图1-1
2.在DOS环境下,用汇编程序MASM对源文件汇编产生目标文件OBJ,命令格式如下:
D:
\ASM\MASM源程序文件名.asm
如汇编程序指示出错则需要重新调用编辑程序修改错误,直至汇编通过为止。
3.用连接程序link产生执行文件exe
D:
\ASM\LINK源程序文件名.obj
4.执行程序
可直接从DOS执行程序如下:
D:
\ASM\源程序文件名
Match
此时可看到程序的运行结果。
为了调试程序的另一部分,可重新进行编辑程序修改两个字符串的内容,使它们互不相同,如修改后的数据段为
DATASEGMENT
STRINT1DB‘Movethecursorbackward.’
STRINT2DB‘Movethecursorfordward.’
Mess1DB‘Match.’,13,10,’$’
Mess2DB‘NoMatch.’,13,10,’$’
DATAENDS
然后,重新汇编、连接、执行,结果为:
Nomatch!
至此,程序已调试完毕,运行结果正确。
5.用DEBUG调试程序
另一种调试程序的方法是使用DEBUG程序。
调用格式如下:
D:
\asm\DEBUG源程序文件名.exe
此时,DEBUG已将执行程序装入内存,可直接用g命令运行程序。
-g
Match.
为了调试程序的另一部分,可在DEBUG中修改字符串内容。
可先用u命令显示程序,以便了解指令地址。
显示结果如图1-2所示
-u
14F0:
00001EPUSHDS
14F0:
000133C0XORAX,AX
14F0:
000350PUSHAX
14F0:
0004B8E814MOVAX,14E8
14F0:
00078ED8MOVDS,AX
14F0:
00098EC0MOVES,AX
14F0:
000BB8ED14MOVAX,14ED
14F0:
000E8ED0MOVSS,AX
14F0:
00108D360000LEASI,[0000]
14F0:
00148D3E1800LEADI,[0018]
14F0:
0018FCCLD
14F0:
0019B91900MOVCX,0019
14F0:
001CF3REPZ
14F0:
001DA6CMPSB
14F0:
001E7406JZ0026
-u
14F0:
00208D163900LEADX,[0039]
14F0:
0024EB04JMP002A
14F0:
00268D163000LEADX,[0030]
14F0:
002AB409MOVAH,09
14F0:
002CCD21INT21
14F0:
002ECBRETF
图1-2
将断点设置在程序的主要部分运行以前,并查看数据区的内容。
如图1-3所示。
-g0b
AX=14E8BX=0000CX=00AFDX=0000SP=FFFCBP=0000SI=0000DI=0000
DS=14E8ES=14E8SS=14E8CS=14F0IP=000BNVUPEIPLZRNAPENC
14F0:
000BB8ED14MOVAX,14ED
-d0
14E8:
00004D6F766520746865-20637572736F7220Movethecursor
14E8:
00106261636B77617264-2E4D6F7665207468backward.Moveth
14E8:
00206520637572736F72-206261636B776172ecursorbackwar
14E8:
0030642E4D617463682E-0D0A244E6F204D61d.Match...$NoMa
14E8:
00407463682E0D0A2400-0000000000000000tch...$.........
14E8:
00500000000000000000-0000000000000000................
14E8:
00600000000000000000-0000000000000000................
14E8:
00700000000000000000-0000000000000000................
图1-3
用e命令修改数据区的字符串,操作如下:
-e29
14E8:
002962.6661.6f63.726B.7777.6161.7272.64
14E8:
003064.2e2E.20
再次用d命令查看修改结果。
-d0
14E8:
00004D6F766520746865-20637572736F7220Movethecursor
14E8:
00106261636B77617264-2E4D6F7665207468backward.Moveth
14E8:
00206520637572736F72-20666F7277617264ecursorforward
14E8:
00302E204D617463682E-0D0A244E6F204D61.Match...$NoMa
14E8:
00407463682E0D0A2400-0000000000000000tch...$.........
14E8:
00500000000000000000-0000000000000000................
14E8:
00600000000000000000-0000000000000000................
14E8:
00700000000000000000-0000000000000000................
图1-4
用g命令运行程序,结果为:
-g
NoMatch....
用q命令退出debug.
-q
至此,程序已调试完毕。
为了进一步说明debug命令的使用方法,我们再次重复上述程序的调试过程,只是使用e、a、f来修改数据区的内容而已。
必须注意,由于在用debug调试程序时,只能修改当时有关的内存单元内容,因此重新用debug装入执行程序时,仍是原来在磁盘文件中的内容。
操作如下:
命令提示符:
debuga1.exe
-g0b
AX=14E8BX=0000CX=00AFDX=0000SP=FFFCBP=0000SI=0000DI=0000
DS=14E8ES=14E8SS=14E8CS=14F0IP=000BNVUPEIPLZRNAPENC
14F0:
000BB8ED14MOVAX,14ED
-d0
14E8:
00004D6F766520746865-20637572736F7220Movethecursor
14E8:
00106261636B77617264-2E4D6F7665207468backward.Moveth
14E8:
00206520637572736F72-206261636B776172ecursorbackwar
14E8:
0030642E4D617463682E-0D0A244E6F204D61d.Match...$NoMa
14E8:
00407463682E0D0A2400-0000000000000000tch...$.........
14E8:
00500000000000000000-0000000000000000................
14E8:
00600000000000000000-0000000000000000................
14E8:
00700000000000000000-0000000000000000................
-e29'forward.'20
-d0
14E8:
00004D6F766520746865-20637572736F7220Movethecursor
14E8:
00106261636B77617264-2E4D6F7665207468backward.Moveth
14E8:
00206520637572736F72-20666F7277617264ecursorforward
14E8:
00302E204D617463682E-0D0A244E6F204D61.Match...$NoMa
14E8:
00407463682E0D0A2400-0000000000000000tch...$.........
14E8:
00500000000000000000-0000000000000000................
14E8:
00600000000000000000-0000000000000000................
14E8:
00700000000000000000-0000000000000000................
图1-5
可见这种e命令方式避免使用ASCII码进入,对用户是比较方便的。
其中最后一个20是空格争的ASCII码,以补足原来的字节数。
也可使用a命令把数据区恢复原状,具体如下:
-d0
14E8:
00004D6F766520746865-20637572736F7220Movethecursor
14E8:
00106261636B77617264-2E4D6F7665207468backward.Moveth
14E8:
00206520637572736F72-20666F7277617264ecursorforward
14E8:
00302E204D617463682E-0D0A244E6F204D61.Match...$NoMa
14E8:
00407463682E0D0A2400-0000000000000000tch...$.........
14E8:
00500000000000000000-0000000000000000................
14E8:
00600000000000000000-0000000000000000................
14E8:
00700000000000000000-0000000000000000................
-a14e8:
29
14E8:
0029db'backward.'
14E8:
0032
-d0
14E8:
00004D6F766520746865-20637572736F7220Movethecursor
14E8:
00106261636B77617264-2E4D6F7665207468backward.Moveth
14E8:
00206520637572736F72-206261636B776172ecursorbackwar
14E8:
0030642E4D617463682E-0D0A244E6F204D61d.Match...$NoMa
14E8:
00407463682E0D0A2400-0000000000000000tch...$.........
14E8:
00500000000000000000-0000000000000000..............
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 微机 原理 实验 指导书