![微机实验作业_第1页](http://file4.renrendoc.com/view3/M03/22/06/wKhkFmZ_RvqAXl-iAABZV62LAQY345.jpg)
![微机实验作业_第2页](http://file4.renrendoc.com/view3/M03/22/06/wKhkFmZ_RvqAXl-iAABZV62LAQY3452.jpg)
![微机实验作业_第3页](http://file4.renrendoc.com/view3/M03/22/06/wKhkFmZ_RvqAXl-iAABZV62LAQY3453.jpg)
![微机实验作业_第4页](http://file4.renrendoc.com/view3/M03/22/06/wKhkFmZ_RvqAXl-iAABZV62LAQY3454.jpg)
![微机实验作业_第5页](http://file4.renrendoc.com/view3/M03/22/06/wKhkFmZ_RvqAXl-iAABZV62LAQY3455.jpg)
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
微机原理实验指导书
东华大学信息信息科学与技术学院
二OO八年十月
目录
实验一DEBUG的启动及其基本命令的使用1
实验二内存操作数及寻址方法17
实验三汇编语言程序的调试与运行20
实验四查表程序设计20
实验五系统功能调用30
实验六分支程序设计33
实验七循环程序设计38
实验八子程序设计47
实验九综合程序设计50
附录一DEBUG命令详解31
附录二实验报告48
实验的基本要求与方法
一、实验目的
学习程序设计的基本方法和技能,熟练掌握用汇编语言设计、编写、调试和运行程序的方法。为后
续课程打下坚实的基础。
二、实验要求
1.上机前做好充分的准备,包括程序框图、源程序清单、调试步骤、测试方法,对运行结果的分析
等。
2。上机时要遵守实验室的规章制度,爱护实验设备。要熟悉与实验有关的系统软件(编辑程序、汇
编程序、连接程序和调试程序等)的使用方法。在程序的调试过程中,有意识地学习及掌握debug
程序的各种操作命令,以便掌握程序的调试方法及技巧。
3.每个实验完成后,应写出实验报告,实验报告为word文档。实验报告要求:
(1)设计说明:用来说明程序的功能、结构。它包括:程序名、功能、原理及算法说明、程序及数
据结构、主要符号名的说明等。
(2)调试说明:便于学生总结编程经验提高编程及高度能力。它包括:调试情况,如上机时遇到的
问题及解决办法,观察到的现象及其分析,对程序设计技巧的总结及分析等;程序的输出结果及对
结果的分析;实验的心得体会。
(3)程序框图
(4)程序清单
4.为了更好地进行上机管理,要求用硬盘存储程序,并建立和使用子目录,以避免文件被别人删除。
为便于统一管理硬盘中的文件,要求实验者在e:\学号目录下建立自己的文件,文件按以下格式命名:
字母学号.扩充名,其中字母取a~z的26个英文字母,按实验顺序从a至z排列,学号取后面的6
位。如学号为20043727的学生第三个实验第一个源程序所对应的文件名为CI043727.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>edital043727.asm
进入编辑程序,在其环境下输入编好的源程序,然后在盘上生成一个扩展名为.asm的文件。
3.用宏汇编程序MASM,将扩展名为.ASM的源程序汇编成目标程序,即生成盘上扩展名为.OBJ的
文件。若编过程出现错误,则无法生成目标程序,需要回到编辑程序进行修改,修改后重新汇编直
到无错出现。
4.用连接程序LINK,将扩展名为.OBJ的目标程序连接装配成可执行文件,即在盘上生成扩展名
为.EXE的文件。
5.用调试程序DEBUG,调试扩展名为.EXE的文件,以发现程序中的逻辑错误并进行排除。
1
实验一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,格式为:
<}[=地址1][地址2[地址3。。。]]
其中地址1规定了运行起始地址,后面的若干地址均为断点地址。
追踪命令T,有两种格式:
I)逐条指令追踪:
-T[=地址]
该命令从指定地址起执行一条指令后停下来,显示寄存器内容和状态值。
2)多条指令追踪:
-T[=地址][值]
该命令从指定地址起执行n条命令后停下来,n由[值]确定。
显示内存单元内容的命令D,格式为:
2
-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(是/否)OVNV
方向Direction(减量/增量)DNUP
中断Interrupt(允许/屏蔽)EIDI
符号Sign(负/正)NGPL
零Zero(是/否)ZRNZ
辅助进位AuxiliaryCarry(是/否)ACNA
奇偶Parity(偶/奇)PEPO
进位Carry(是/否)CYNC
2)显示和修改某个指定寄存器内容,格式为:
-R寄存器名
例如打入:-RAX
系统将响应如下:
AXFIF4
表示AX当前内容为F1F4,此时若不对其作修改,可按ENTER键,否则,打入修改后内
容,如:
-RBX
BX0369
:059F
则BX内容由0369改为059F
3)显示和修改标志位状态,命令格式为:
-RF
系统将给出响应,如
OVDNEINGZRACPECY-
这时若不作修改可按ENTER键,否则在号之后键入修改值,键入顺序任意。如
OVDNEINGZRACPECY-PONZDINV
命名命令N,格式为:
-N文件名
3
此命令将文件名格式化在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」所示。
DATASEGMENT
STRING1DBMovethecursorbackward'
STRING2DBMovethecursorbackward'
MESSIDB'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
4
LEASI,STRING1
LEADI,STRING2
CLD
MOVCX,25
REPZCMPSB
JZMATCH
LEADX,MESS2
JMPSHORTDISP
MATCH:LEADX,MESSI
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/
MessiDB'Match.',13,10,'$'
Mess2DB'NoMatch.'』3,10,'$'
DATAENDS
然后,重新汇编、连接、执行,结果为:
Nomatch!
至此,程序已调试完毕,运行结果正确。
5.用DEBUG调试程序
另一种调试程序的方法是使用DEBUG程序。调用格式如下:
D:\asm\DEBUG源程序文件名.exe
此时,DEBUG已将执行程序装入内存,可直接用g命令运行程序。
-g
Match.
5
为了调试程序的另一部分,可在DEBUG中修改字符串内容。可先用u命令显示程序,以便了
解指令地址。显示结果如图1-2所示
-U
14F0:0000IEPUSHDS
14F0:000133COXORAX,AX
14F0:000350PUSHAX
14F0:0004B8E814MOVAX,14E8
14F0:00078ED8MOVDS,AX
14F0:00098EC0MOVES,AX
14F0:000BB8ED14MOVAXJ4ED
14F0:000E8ED0MOVSS,AX
14F0:00108D360000LEASI,[0000]
14F0:00148D3E1800LEADIJ0018]
14F0:0018FCCLD
14F0:0019B91900MOVCX,0019
14F0:001CF3REPZ
14F0:001DA6CMPSB
14F0:001E7406JZ0026
-u
14F0:00208D163900LEADX40039]
14F0:0024EB04JMP002A
14F0:00268D163000LEADX,[0030]
14F0:002AB409MOVAH,09
14F0:002CCD21INT21
14F0:002ECBRETF
图1-2
将断点设置在程序的主要部分运行以前,并查看数据区的内容。如图1-3所示。
-gOb
AX=14E8BX=0000CX=00AFDX=0000SP=FFFCBP=0000SI=0000DI=0000
DS=14E8ES=14E8SS=14E8CS=14F0IP=000BNVUPEIPLZRNAPENC
14F0:000BB8ED14MOVAX,14ED
-dO
14E8:00004D6F766520746865-20637572736F7220Movethecursor
14E8:00106261636B77617264-2E4D6F7665207468backward.Moveth
14E8:00206520637572736F72-206261636B776172ecursorbackwar
14E8:0030642E4D617463682E-0D0A244E6F204D61d.Match...$NoMa
14E8:00407463682E0D0A2400-0000000000000000tch...$
14E8:00500000000000000000-0000000000000000
14E8:00600000000000000000-0000000000000000
I4E8:OO7O00000000()0000000-0000000000000000
图1-3
用e命令修改数据区的字符串,操作如下:
-e29
I4E81002962.6661.6f63.726B.7777.6161.7272.64
6
14E8:003064.2e2E.20
再次用d命令查看修改结果。
-dO
14E8:00004D6F766520746865-20637572736F7220Movethecursor
14E8:00106261636B77617264-2E4D6F7665207468backward.Moveth
14E8:00206520637572736F72-20666F7277617264ecursorforward
14E8:00302E204D617463682E-0D0A244E6F204D61.Match...$NoMa
14E8:00407463682E0DOA2400-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
-gOb
AX=14E8BX=0000CX=00AFDX=0000SP=FFFCBP=0000SI=0000DI=0000
DS=14E8ES=14E8SS=14E8CS=14F0IP=OOOBNVUPEIPLZRNAPENC
14F0:000BB8ED14MOVAXJ4ED
-dO
14E8:00004D6F766520746865-20637572736F7220Movethecursor
14E8:00106261636B77617264-2E4D6F7665207468backward.Moveth
14E8:00206520637572736F72-206261636B776172ecursorbackwar
14E8:0030642E4D617463682E-0D0A244E6F204D61d.Match...$NoMa
14E8:00407463682E0DOA2400-000000()000000000
14E8:00500000000000000000-0000000000000000
14E8:006000()0000000000000-0000()00000000000
14E8:00700000000000000000-0000000000000000
-e29Yorward/20
-dO
14E8:00004D6F766520746865-20637572736F7220Movethecursor
14E8:00106261636B77617264-2E4D6F7665207468backward.Moveth
14E8:00206520637572736F72-20666F7277617264ecursorforward
14E8:00302E204D617463682E-0DOA244E6F204D61.Match...$NoMa
14E8:00407463682EODOA2400-0000000000000000
14E8:00500000000000000000-0000000000000000
14E8:006000000000()00000()0-0000000000000000
7
14E8:00700000000000000000-0000000000000000
图1-5
可见这种e命令方式避免使用ASCII码进入,对用户是比较方便的。其中最后一个20是空格争
的ASCH码,以补足原来的字节数。
也可使用a命令把数据区恢复原状,具体如下:
-d0
14E8:00004D6F766520746865-20637572736F7220Movethecursor
14E8:00106261636B77617264-2E4D6F7665207468backward.Moveth
14E8:00206520637572736F72-20666F7277617264ecursorforward
14E8:00302E204D617463682E-0DOA244E6F204D61.Match...$NoMa
14E8:00407463682E0D0A2400-0000000000000000
14E8:005000000000()00000()0-0000000000000000
14E8:00600000000000000000-0000000000000000
14E8:00700000000000000000-0000000000000000
-al4e8:29
14E8:0029db'backward/
14E8:0032
-dO
14E8:00004D6F766520746865-20637572736F7220Movethecursor
14E8:00106261636B77617264-2E4D6F7665207468backward.Moveth
14E8:00206520637572736F72-206261636B776172ecursorbackwar
14E8:0030642E4D617463682E-0D0A244E6F204D61d.Match...$NoMa
14E8:00407463682E0D0A2400-0000000000000000
14E8:00500000000000000000-0000000000000000
14E8:00600000000000000000-0000000000000000
14E8:00700000000000000000-0000000000000000
图1-6
由于a是汇编命令,因此信息是用汇编格式进入的。如果修改的是程序中的语句,方法也是相
同的,下面我们还会看到这类的操作。
为了进一步说明程序的调试过程,现假设程序编制错误:在源文件中把jzmatch改为jnz
match。该程序经过汇编、连接后,进入debug调试如下:
-g
Nomatch!
结果是错误的(因为源文件中两个字符串是相同的)。为检查程序的错误,将断点设在比较串之
前。
-gl9
AX=14DFBX=0000CX=0019DX=0000SP=FFFCBP=0000SI=0000DI=0019
DS=14DFES=14DFSS=14DFCS=14E4IP=0019NVUPEIPLNZNAPONC
14E4:0019A6CMPSB
用t命令再执行一条指令以观察ZF标志的状况。
AX=14DFBX=0000CX=0019DX=0000SP=FFFCBP=0000SI=0001DI=001A
DS=14DFES=14DFSS=14DFCS=14E4IP=001ANVUPEIPLZRNAPENC
14E4:00IA7506JNZ0022
8
此时零标志为ZR,即ZF=1,即表示比较结果相等,说明比较结果是正确的。现在可用t令再执
行一条指令以观察指令的转向。
AX=14DFBX=OOOOCX=00I9DX=OOOOSP=FFFCBP=OOOOS1=0001DI=001A
DS=14DFES=14DFSS=14DFCS=14E4IP=001CNVUPEIPLZRNAPENC
14E4:001C8D163B00LEADX,[003BJDS:003B=6F4E
图1-7
为查到003B单元的内容,可查数据区如下:
-d0
14DF:00004D6F766520746865-20637572736F7220Movethecursor
14DF:00106261636B77617264-2E4D6F7665207468backward.Moveth
14DF:00206520637572736F72-206261636B776172ecursorbackwar
14DF:0030642E4D617463682E-0D0A244E6F204D61d.Match...$NoMa
I4DF:OO4O7463682E0D0A2400-0000000000000000tch...$
14DF:00501EB8000050B8DF14-8ED88ECO8D360000P..……6..
14DF:00608D3E1900FCB91900-F3A675068D163B00.>u...;.
14DF:0070EB048D163200B409-CD21CBEB78803EA4
图1-8
可见003B单元的内容为4E,即N的ASCH码,后面跟的是Nomatch!,这说明jnz指令使用错
误,应改为JZMATCH.可用a命令修改,并用u命令检查修改结果。运行结果说明程序修改正确。
-al9
14E4:0019jz0022
14E4:001B
-u0
14E4:0000IEPUSHDS
14E4:0001B80000MOVAX,0000
14E4:000450PUSHAX
14E4:0005B8DF14MOVAXJ4DF
14E4:00088ED8MOVDS,AX
14E4:000A8EC0MOVES,AX
14E4:000C8D360000LEASI,[0000]
14E4:00108D3E1900LEADIJOO19]
14E4:0014FCCLD
I4E4:OO15B91900MOVCX,0019
14E4:0018F3REPZ
14E4:00197407JZ0022
14E4:001B06PUSHES
14E4:001C8D163B00LEADX,[003B]
-rip
IP001C
:0
-g
Match.
图1-9
9
在这里应该注意,在使用a命令修改数据区时,必须给出数据段的地址,而在修改程序区时,
由于a命令的缺省段为代码段,所以直接给出偏移地址就可以了。
在调试过程中,也可以用t命令逐条跟踪程序的执行。下面列出断点停在0b后,用f命令修改
数据区中字符串的内容,然后用t命令逐条执行指令的情况。
首先用u命令查看数据段的段地址。
-u
14E4:0000IEPUSHDS
14E4:0001B80000MOVAX,0000
14E4:000450PUSHAXJ段地址
14E4:0005B8DF14MOVAXJ4DF
14E4:00088ED8MOVDS,AX
14E4:000A8EC0MOVES,AX
14E4:000C8D360000LEASIJOOOO]
14E4:00108D3E1900LEADIJ0019]
14E4:0014FCCLD
14E4:0015B91900MOVCX,0019
14E4:0018F3REPZ
I4E4:OO19A6CMPSB
14E4:001A7506JNZ0022
14E4:001C8D163B00LEADX,[003B]
图1-10
用f命令修改数据区中字符串的内容。其中14df:29为字符串的起始地址,1(字母L)9表示需要
修改的长度为9个字节。
-fl4df:2919'forward.2。
查看修改后的内容:
-dl4df:0
14DF:00004D6F766520746865-20637572736F7220Movethecursor
I4DF:OOIO6261636B77617264-2E4D6F7665207468backward.Moveth
14DF:00206520637572736F72-20666F7277617264ecursorforward
I4DF:OO3O2E204D617463682E-0D0A244E6F204D61.Match...$NoMa
14DF:00407463682E0D0A2400-0000000000000000tch...$
14DF:0050IEB8000050B8DF14-8ED88ECO8D360()00….P.…….6..
用t命令逐条跟踪程序的执行。
AX=0000BX=0000CX=007BDX=0000SP=FFFEBP=0000SI=0000DI=0000
DS=14CFES=14CFSS=14DFCS=I4E4IP=0001NVUPEIPLNZNAPONC
14E4:0001B80000MOVAX,0000
-t
AX=0000BX=0000CX=007BDX=0000SP二FFFEBP=0000SI=0000DI=0000
DS=14CFES=14CFSS=14DFCS=14E4IP=0004NVUPEIPLNZNAPONC
14E4:000450PUSHAX
AX=0000BX=0000CX=007BDX=0000SP=FFFCBP=0000SI=0000DI=0000
DS=14CFES=14CFSS=14DFCS=14E4IP=0005NVUPEIPLNZNAPONC
10
14E4:0005B8DF14MOVAXJ4DF
-t
AX=14DFBX=0000CX=007BDX=0000SP=FFFCBP=OOOOSI=0000DI=0000
DS=14CFES=14CFSS=14DFCS=I4E4IP=0008NVUPEIPLNZNAPONC
14E4:00088ED8MOVDS,AX
-t
AX=14DFBX=0000CX=007BDX=0000SP=FFFCBP=0000SI=0000DI=0000
DS=14DFES=14CFSS=14DFCS=14E4IP=000ANVUPEIPLNZNAPONC
14E4:000A8EC0MOVES,AX
-t
AX=14DFBX=0000CX=007BDX=0000SP=FFFCBP=0000SI=0000DI=0000
DS=14DFES=14DFSS=14DFCS=14E4IP=000CNVUPEIPLNZNAPONC
14E4:000C8D360000LEASI,[0000]DS:0000=6F4D
-t
AX=14DFBX=0000CX=007BDX=0000SP=FFFCBP=0000SI=0000DI=0000
DS=14DFES=14DFSS=14DFCS=14E4IP=0010NVUPEIPLNZNAPONC
14E4:00108D3E1900LEADI,[0019]DS:0019=6F4D
-t
AX=14DFBX=0000CX=007BDX=0000SP=FFFCBP=0000SI=0000DI=0019
DS=14DFES=14DFSS=14DFCS=14E4IP=0014NVUPEIPLNZNAPONC
14E4:0014FCCLD
-t
AX=14DFBX=0000CX=007BDX=0000SP=FFFCBP=0000SI=0000DI=0019
DS=14DFES=14DFSS=14DFCS=14E4IP=0015NVUPEIPLNZNAPONC
14E4:0015B91900MOVCX,0019
-t
AX=14DFBX=0000CX=0019DX=0000SP=FFFCBP=0000SI=0000DI=0019
DS=14DFES=14DFSS=14DFCS=14E4IP=0018NVUPEIPLNZNAPONC
14E4:0018F3REPZ
I4E4:OO19A6CMPSB
-t
AX=I4DFBX=000()CX=0018DX=0000SP=FFFCBP=000()SI=0001DI=001A
DS=14DFES=14DFSS=14DFCS=14E4IP=0018NVUPEIPLNZNAPONC
14E4:0018F3REPZ
14E4:0019A6CMPSB
-t
AX=14DFBX=0000CX=0017DX=0000SP=FFFCBP=0000SI=0002DI=001B
DS=14DFES=14DFSS=14DFCS=14E4IP=0018NVUPEIPLNZNAPONC
14E4:0018F3REPZ
14E4:0019A6CMPSB
-t
AX=14DFBX=0000CX=0016DX=0000SP=FFFCBP=0000SI=0003DI=001C
DS=14DFES=14DFSS=14DFCS=14E4IP=0018NVUPEIPLNZNAPONC
I4E4:OO18F3REPZ
11
14E4:0019A6CMPSB
-t
AX=14DFBX=OOOOCX=0015DX=OOOOSP=FFFCBP=OOOOSI=0004DI=001D
DS=14DFES=14DFSS=14DFCS=14E4IP=0018NVUPEIPLNZNAPONC
14E4:0018F3REPZ
14E4:0019A6CMPSB
-t
AX=14DFBX=OOOOCX=0014DX=0000SP=FFFCBP=0000SI=0005DI=001E
DS=14DFES=14DFSS=14DFCS=14E4IP=0018NVUPEIPLNZNAPONC
14E4:0018F3REPZ
14E4:0019A6CMPSB
-t
AX=14DFBX=OOOOCX=0013DX=0000SP=FFFCBP=0000SI=0006DI=001F
DS=14DFES=14DFSS=14DFCS=14E4IP=0018NVUPEIPLNZNAPONC
14E4:0018F3REPZ
14E4:OOI9A6CMPSB
-t
AX=14DFBX=OOOOCX=00I2DX=0000SP=FFFCBP=0000SI=0007DI=0020
DS=14DFES=14DFSS=14DFCS=14E4IP=0018NVUPEIPLNZNAPONC
14E4:0018F3REPZ
14E4:0019A6CMPSB
-t
AX=14DFBX=OOOOCX=0011DX=0000SP=FFFCBP=0000SI=0008DI=0021
DS=14DFES=14DFSS=14DFCS=14E4IP=0018NVUPEIPLNZNAPONC
14E4:0018F3REPZ
14E4:0019A6CMPSB
-t
AX=14DFBX=OOOOCX=00I0DX=0000SP=FFFCBP=0000SI=0009DI=0022
DS=14DFES=14DFSS=14DFCS=14E4IP=0018NVUPEIPLNZNAPONC
I4E4:OO18F3REPZ
14E4:0019A6CMPSB
-t
AX=14DFBX=OOOOCX=000FDX=0000SP=FFFCBP=0000SI=000ADI=0023
DS=14DFES=14DFSS=14DFCS=14E4IP=0018NVUPEIPLNZNAPONC
14E4:0018F3REPZ
14E4:OOI9A6CMPSB
-t
AX=14DFBX=OOOOCX=000EDX=0000SP=FFFCBP=0000SI=000BDI=0024
DS=14DFES=14DFSS=14DFCS=14E4IP=0018NVUPEIPLNZNAPONC
14E4:0018F3REPZ
14E4:0019A6CMPSB
-t
AX=14DFBX=OOOOCX=000DDX=0000SP=FFFCBP=0000SI=000CDI=0025
DS=14DFES=14DFSS=14DFCS=14E4IP=00I8NVUPEIPLNZNAPONC
12
14E4:0018F3REPZ
14E4:0019A6CMPSB
-t
AX=14DFBX=OOOOCX=OOOCDX=OOOOSP=FFFCBP=OOOOSI=OOODDI=0026
DS=14DFES=14DFSS=14DFCS=14E4IP=0018NVUPEIPLNZNAPONC
14E4:0018F3REPZ
14E4:0019A6CMPSB
-t
AX=14DFBX=0000CX=000BDX=0000SP=FFFCBP=0000SI=000EDI=0027
DS=14DFES=14DFSS=14DFCS=14E4IP=0018NVUPEIPLNZNAPONC
14E4:0018F3REPZ
I4E4:OO19A6CMPSB
-t
AX=14DFBX=0000CX=000ADX=0000SP=FFFCBP=0000SI=000FDI=0028
DS=14DFES=14DFSS=14DFCS=14E4IP=0018NVUPEIPLNZNAPONC
I4E4:OO18F3REPZ
14E4:0019A6CMPSB
-t
AX=14DFBX=0000CX=0009DX=0000SP=FFFCBP=0000SI=0010DI=0029
DS=14DFES=14DFSS=14DFCS=14E4IP=0018NVUPEIPLNZNAPONC
14E4:0018F3REPZ
14E4:0019A6CMPSB
-t
AX=14DFBX=0000CX=0008DX=0000SP=FFFCBP=0000SI=0011DI=002A
DS=14DFES=14DFSS=14DFCS=14E4IP=001ANVUPEINGNZACPECY
I4E4:OO1A75O6JNZ0022
-t
AX=14DFBX=0000CX=0008DX=0000SP=FFFCBP=0000S1=0011DI=002A
DS=14DFES=14DFSS=14DFCS=14E4IP=0022NVUPEINGNZACPECY
14E4:00228D163200LEADX,[0032JDS:0032=6I4D
-t
AX=I4DFBX=0000CX=0008DX=0032SP=FFFCBP=000()S1=0011DI=002A
DS=14DFES=14DFSS=14DFCS=14E4IP=0026NVUPEINGNZACPECY
14E4:0026B409MOVAH,09
-t
AX=09DFBX=0000CX=0008DX=0032SP=FFFCBP=0000SI=0011DI=002A
DS=14DFES=14DFSS=14DFCS=14E4IP=0028NVUPEINGNZACPECY
14E4:0028CD21INT21
-g
Match.
Programterminatednormally
-q
图1-11
从这一过程可以清楚地看出每次比较的结果,一旦比较不相等,则立即从串指令退出,执行下
13
面的指令。应该注意,如果遇到系统功能调用,则不能再使用t命令跟踪,而应该使用断点停在功
能调用完成之后,然后再接着跟踪。本例中,由于不需要再跟踪,所以直接用g命令运行到程序结
束。
前面己经提到,debug调试期间所修改的数据段或代码段的内容只是修改了内存中的内容,而
磁盘文件中的内容并未修改。如果你的执行文件是.com,则可在debug中用n、w命令直接把经修改
后的内存单元中的内容存入磁盘,但是.exe文件则不允许这样做。因此,应该重新进入编辑程序,
根据调试结果把源文件修改正确,经汇编、连接、执行检查正确后再保存下来。
6.设堆栈指针SP=2000H,AX=3000H,BX=5000H;请仿照例程的格式编一程序段将AX和BX
的内容进行交换。请用堆栈作为两寄存器交换内容的中间存储单元,用DEBUG调试程序进行汇编
与调试。
四.实验报告:
写出在DEBUG状态下编写、运行步骤6所要求的程序过程(要求包含源程序)以及调试所中
遇到的问题是如何解决的,并对调试过程中的问题进行分析,对执行结果进行分析。
DATASEGMENT
XDW2000H
YDW3000H
ZDW5000H
DATAENDS
STACKSEGMENTSTACK
DB100DUP(?)
STACKENDS
PROGRAMSEGMENT
ASSUMECS:PROGRAM,DS:DATA
START:
MOVAX,3000H
MOVBX,5000H
MOVDX,DATA
MOVDS,DX
MOVSI,OFFSETX
MOVSP,[SI]
MOVDX,DATA
MOVDS,DX
MOVSI,OFFSETY
MOVDX,[SI]
PUSHDX
MOVDX,DATA
MOVDS,DX
MOVSI,OFFSETZ
MOVDX,[SI]
PUSHDX
POPAX
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 【正版授权】 ISO/IEC TR 19755:2003 EN Information technology - Programming languages,their environments and system software interfaces - Object finalization for programming language COB
- 【正版授权】 ISO/IEC TR 14475:2001 EN Information technology - Telecommunications and information exchange between systems - Private Integrated Services Network - Architecture and sce
- 【正版授权】 ISO/IEC TR 11172-5:1998 EN Information technology - Coding of moving pictures and associated audio for digital storage media at up to about 1,5 Mbit/s - Part 5: Software s
- 【正版授权】 ISO/IEC ISP 15126-1:1999 EN Information technology - International Standardized Profiles FDY1n - Directory data definitions - Part 1: FDY11 - Common directory use (normal)
- 【正版授权】 ISO/IEC ISP 10613-18:1995 EN Information technology - International Standardized Profile RA - Relaying the Connectionless-mode Network Service - Part 18: Definition of profi
- 【正版授权】 ISO/IEC Guide 68:2002 EN Arrangements for the recognition and acceptance of conformity assessment results
- 【正版授权】 ISO/IEC Guide 23:1982 EN Methods of indicating conformity with standards for third-party certification systems
- 【正版授权】 ISO/IEC 9834-6:2005 EN Information technology - Open Systems Interconnection - Procedures for the operation of OSI Registration Authorities - Part 6: Registration of applica
- 【正版授权】 ISO/IEC 9798-5:2009 EN Information technology - Security techniques - Entity authentication - Part 5: Mechanisms using zero-knowledge techniques
- 【正版授权】 ISO/IEC 9636-1:1991 EN Information technology - Computer graphics - Interfacing techniques for dialogues with graphical devices (CGI) - Functional specification - Part 1
- 国家开放大学2022春(202207)《3622矿井粉尘防治》期末考试真题及答案-开放专科
- 2023何凯文长难句突破讲义完整版(含授课内容)
- 血生化报告单
- 葡萄酒酿造标准工艺要点
- 2-甲基-1,3-丁二烯(异戊间二烯;异戊二烯)的理化性质及危险特性表
- hsk汉语考试2级试题真题
- 精神科症状学考试试题含答案
- 检验科医疗废物处置流程图52309
- 居家养老服务项目收费标准一览表完整
- 大学实验室安全教育培训与考核管理办法模版
- TiDB数据库在金融核心系统的应用
评论
0/150
提交评论