贵 州 大 学 实 验 报 告 纸
系 别 工学部 班 级 通信101 姓 名 成 绩 评 定 何其肖 学号 1020040613 课 程 名 称 实 验 时 间 实验一
微机原理与汇编语言 如果在DOS提示符下,可键入命令,包含文件名: C>debug name.exe
段寄存器DS和ES指向PSP。寄存器BX和CX含有程序长度。 2、DEBUG的主要命令
教师签名 (1) 汇编命令A,格式为:
-A[地址]
该命令从指定地址开始允许输入汇编语句,把它们汇编成机器代码相继存放在从指定地址开
2012年 12 月 25 日 DEBUG命令实验
例如: -a
始的存储器中。
一.实验目的:
掌握DEBUG 的基本命令及其功能
二.实验内容:
DEBUG是专门为汇编语言设计的一种调试工具,它通过步进,设置断点等方式为汇编语言程序员提供了非常有效的调试手段。
1、DEBUG程序的启动 DEBUG的命令格式:
[drive:][path] DEBUG [d:][p][filename][.ext][param...] 其中:
drive: 是指定DEBUG文件的磁盘驱动器标识符,DEBUG是外部DOS命令,所以必须把它从磁盘读入内存。若未指定,DOS将使用当前默认磁盘驱动器。
path: 是DOS查找DEBUG文件的一个子目录串表示的路径。若未指定,DOS将使用当前工作目录。 d: 是DEBUG将要调试的文件所在的磁盘驱动器。
p: 是查找DEBUG将要调试的文件所需的子目录路径,若未指定,DOS使用当前目录。 filename[.ext] 是DEBUG将要调试的文件名。 param 是将被调试的程序(或文件)的命令行参数。 例如:在DOS提示符下,可键入命令: C>debug
DEBUG所完成的初始化动作,假定文件名没有,启动DEBUG: 段寄存器CS、DS、ES和SS置为DEBUG程序后的第一个段。 指令指针寄存器IP置为100H(程序段前缀PSP后的第一个语句)。
堆栈指针SP置为段末或COMMAND.COM暂驻部分的结束地址(其中较小的那个地址)。 其余通用寄存器均置为0,标志寄存器置为下述状态。 NV UP EI PL NE NA PO NC
1
136B:0100 mov ax,100 136B:0103 mov bx,200 136B:0106 mov cx,300 136B:0109 mov dx,400 136B:010C -
(2) 反汇编命令U,有两种格式: 1)-U[地址]
该命令从指定地址开始,反汇编32个字节,若地址省略,则从上一个U命令的最后一条指令的下一个单元开始显示32个字节。 例如: -u
13C9:0000 1E PUSH
DS
13C9:0001 2BC0 SUB AX,AX 13C9:0003 50 PUSH
AX
13C9:0004 B8C313 MOV AX,13C3 13C9:0007 8ED8 MOV DS,AX 13C9:0009 B8C613 MOV AX,13C6 13C9:000C 8EC0 MOV ES,AX 13C9:000E 8D360000 LEA SI,[0000] 13C9:0012 8D3E0000 LEA DI,[0000] 13C9:0016 FC CLD 13C9:0017 B92800 MOV CX,0028 13C9:001A F3 REPZ 13C9:001B A4 MOVSB 13C9:001C CB RETF
13C9:001D 0000 ADD [BX+SI],AL 13C9:001F 0000 ADD [BX+SI],AL 2)-U范围
该命令对指定范围的内存单元进行反汇编, 例如:
-u 13c9:000e 001b
13C9:000E 8D360000 LEA SI,[0000] 13C9:0012 8D3E0000 LEA DI,[0000] 13C9:0016 FC CLD 13C9:0017 B92800 MOV CX,0028 13C9:001A F3 REPZ 13C9:001B A4 MOVSB
-
(3) 运行命令G,格式为:
-G [=地址1][地址2[地址3。。。]]
其中地址1规定了运行起始地址,后面的若干地址均为断点地址。
例如: -g1c
AX=13C6 BX=0000 CX=0000 DX=0000 SP=FFFC BP=0000 SI=0028 DI=0028 DS=13C3 ES=13C6 SS=13C3 CS=13C9 IP=001C NV UP EI PL ZR NA PE NC 13C9:001C CB RETF
-
(4) 追踪命令T,有两种格式: 1)逐条指令追踪:
-T[=地址]
该命令从指定地址起执行一条指令后停下来,显示寄存器内容和状态值。 -t
AX=0000 BX=0000 CX=007D DX=0000 SP=FFFE BP=0000 SI=0000 DI=0000 DS=13B3 ES=13B3 SS=13C3 CS=13C9 IP=0001 NV UP EI PL NZ NA PO NC 13C9:0001 2BC0 SUB AX,AX -
2)多条指令追踪:
-T[=地址][值]
该命令从指定地址起执行n条命令后停下来,n由[值]确定。 -t 3
AX=0000 BX=0000 CX=007D DX=0000 SP=FFFE BP=0000 SI=0000 DI=0000
DS=13B3 ES=13B3 SS=13C3 CS=13C9 IP=0001 NV UP EI PL NZ NA PO NC 13C9:0001 2BC0 SUB AX,AX
AX=0000 BX=0000 CX=007D DX=0000 SP=FFFE BP=0000 SI=0000 DI=0000 DS=13B3 ES=13B3 SS=13C3 CS=13C9 IP=0003 NV UP EI PL ZR NA PE NC 13C9:0003 50 PUSH AX
AX=0000 BX=0000 CX=007D DX=0000 SP=FFFC BP=0000 SI=0000 DI=0000 DS=13B3 ES=13B3 SS=13C3 CS=13C9 IP=0004 NV UP EI PL ZR NA PE NC 13C9:0004 B8C313 MOV AX,13C3 (5) 显示内存单元内容的命令D,格式为:
-D[地址]或-D[范围]
-d ds:0
13C3:0000 61 61 61 61 61 61 61 61-61 61 61 61 61 61 61 61 aaaaaaaaaaaaaaaa 13C3:0010 61 61 61 61 61 61 61 61-61 61 61 61 61 61 61 61 aaaaaaaaaaaaaaaa 13C3:0020 61 61 61 61 61 61 61 61-00 00 00 00 00 00 00 00 aaaaaaaa........ 13C3:0030 61 61 61 61 61 61 61 61-61 61 61 61 61 61 61 61 aaaaaaaaaaaaaaaa 13C3:0040 61 61 61 61 61 61 61 61-61 61 61 61 61 61 61 61 aaaaaaaaaaaaaaaa 13C3:0050 61 61 61 61 61 61 61 61-00 00 00 00 00 00 00 00 aaaaaaaa........ 13C3:0060 1E 2B C0 50 B8 C3 13 8E-D8 B8 C6 13 8E C0 8D 36 .+.P...........6 13C3:0070 00 00 8D 3E 00 00 FC B9-28 00 F3 A4 CB 00 00 00 ...>....(....... -
(6) 修改内存单元内容的命令E,它有两种格式:
1)用给定的内容代替指定范围的单元内容: -E地址 内容表
例如:-E 2000:0100 F3 “XYZ” 8D
其中F3,“X”“Y”“Z”和8D各占一个字节,用这五个字节代替原内存单元2000:0100到0104的内容,“X”“Y”“Z”将分别按它们的ASCII码值代入。 2)逐个单元相继地修改: -E地址 例如:-E 100:
18E4:0100 89.78
此命令是将原100号单元的内容89改为78。78是程序员键入的。
(7) 检查和修改寄存器内容的命令R,它有三种方式:
1)显示CPU内部所有寄存器内容和标志位状态;格式为:-R
R命令显示中标志位状态的含义如下表所示:
2
标 志 名 溢出Overflow(是/否) 方向Direction(减量/增量) 中断Interrupt(允许/屏蔽) 符号Sign(负/正) 零Zero(是/否) 辅助进位Auxiliary Carry(是/否) 奇偶Parity(偶/奇) 进位Carry(是/否)
2)显示和修改某个指定寄存器内容,格式为:
-R 寄存器名 例如打入:-R AX 系统将响应如下:
AX FIF4 :
Q
置 位 OV DN EI NG ZR AC PE CY 复 位 NV UP DI PL NZ NA PO NC -L [地址]
此命令装入已在CS:5CH中格式化的文件控制块所指定的文件。 在用L命令前,BX和CX中应包含所读文件的字节数。
(10)写命令W,有两种格式:
2)把数据写入指定文件中: -W [地址]
此命令把指定内存区域中的数据写入由CS:5CH处的FCB所规定的文件中。在用W命令前,BX和CX中应包含要写入文件的字节数。
(11)退出DEBUG命令Q,该命令格式为
1)把数据写入磁盘的指定扇区: -W 地址 驱动器 扇区号 扇区数
它退出DEBUG程序,返回DOS,但该命令本身并不把在内存中的文件存盘,如需存盘,应在执行Q命令前先执行写命令W。
表示AX当前内容为F1F4,此时若不对其作修改,可按ENTER键,否则,打入修改后内容,如: -R BX BX 0369 :059F
则BX内容由0369改为059F
三.实验报告:
写出在DEBUG状态下编写、运行程序的过程以及调试所中遇到的问题是如何解决的,并对调试过程中的问题进行分析,对执行结果进行分析。
3)显示和修改标志位状态,命令格式为:
-RF
系统将给出响应,如 OV DN EI NG ZR AC PE CY-
这时若不作修改可按ENTER键,否则在“-”号之后键入修改值,键入顺序任意。如 OV DN EI NG ZR AC PE CY-PONZDINV
(8) 命名命令N,格式为:
-N 文件名
此命令将文件名格式化在CS:5CH的文件控制块内,以便使用L或W命令把文件装入内存进行调试或者存盘。
(9) 装入命令L,它有两种功能:
1)把磁盘上指定扇区的内容装入到内存指定地址起始的单元中,格式为: -L 地址 驱动器 扇区号 扇区数 2)装入指定文件,格式为:
3
实验二 汇编语言程序设计的基本方法和基本步骤
C:\\masm>link test613.obj
IBM Personal Computer Linker
Version 2.00 (C)Copyright IBM Corp 1981, 1982, 1983 一、实验内容
6-13 已知在内存中从TAB单元起存放0—100的平方值。在X单元中有一个特查数据,用查表的方法求出X的平方值送到Y单元中。
6-14 通过键盘输入一个2位的十进制数,存入RESULT单元,要求以二进制存放。
通过键盘输入指令接受的数据为十进制数的ASCII码,例如要输入的十进制数35,则先输入字符“3”,计算机接收为33H;输入为“5”,计算机接收为35H。程序中必须作相应的变换才能得到35的二进制值。方法如下:
⑴AL←键盘输入第一个十进制数。 ⑵BL←AL中的内容。
⑶AL←从键盘输入的第二个十进制数字。 ⑷AL←AL*10
⑸AL←(AL)+(BL) ⑹RESULT←(AL)
二、实验目的
设计一个良好的程序应该满足设计要求除了能够正常运行和实现指定的功能之外,还应该满足:
1 程序要结构化,简明,易读和易调试 2 执行速度快
3 占用内存空间小,即存储容量小。
在初期的计算机中,由于存储设备价格昂贵,容量有限,一般要尽量少占用存储空间。随着科学技术和生产技术的发展,半导体存储器的单片容量不断增大,磁盘密度不断提高,而且相应的价格也逐渐下降,因此有时也就不特别注重容量的问题了。但是对有些计算机应用场合,如智能化的仪器仪表、电脑化的家用电器等设备中的监控程序,一般都是采用汇编语言编写程序。这就要求它的功能要强,程序要短,存储容量不能太大,才能达到微型化及价格低的目的。
程序执行速度问题在某些实时控制、跟踪等程序中显得特别突出。例如对一些对象中的某些参数进行实时控制,如果参数变化速度很快,程序执行速度太慢,就会发生失控现象。当然速度和容量有时是矛盾的,要根据实际问题来进行权衡。
用汇编语言设计程序,一般按下述步骤进行:
(1) 分析问题,抽象出描述问题的数学模型。分析问题的目的就是求得对问题有一个确切的理解,
明确问题的环境限制,弄清已知条件、原始数据、输入信息、对运算精度的要求、处理速度的要求以及最后应获得的结果。
(2) 明确解决问题的算法或解题思想。所谓算法,就是确定解决问题的方法和步骤。一类问题可
以同时存在几种算法,评价算法好坏的指标是程序执行的时间和占用存储器的空间、设计该算法和编写程序所投入的人力、理解该算法的难易程度以及可扩充性和可适应性等。
三、实验步骤
1 编译 MASM>test613
Object filename [test613.OBJ]:
Source listing [NUL.LST]: Cross-reference [NUL.CRF]: 2 链接 LINK>test613
4
Run File [TEST613.EXE]: List File [NUL.MAP]: Libraries [.LIB]:
3 DEBUG 源程序
C:\\masm>debug test613.exe -u
1582:0000 B88015 MOV AX,1580 1582:0003 8ED8 MOV DS,AX 1582:0005 BB0000 MOV BX,0000 1582:0008 A01000 MOV AL,[0010] 1582:000B B400 MOV AH,00 1582:000D D1E0 SHL AX,1 1582:000F 8A17 MOV DL,[BX] 1582:0011 8A7701 MOV DH,[BX+01] 1582:0014 89161100 MOV [0011],DX 1582:0018 B44C MOV AH,4C 1582:001A CD21 INT 21
1582:001C 0000 ADD [BX+SI],AL 1582:001E 0000 ADD [BX+SI],AL -u
1582:0000 B88015 MOV AX,1580 1582:0003 8ED8 MOV DS,AX 1582:0005 BB0000 MOV BX,0000 1582:0008 A01000 MOV AL,[0010] 1582:000B B400 MOV AH,00 1582:000D D1E0 SHL AX,1 1582:000F 8A17 MOV DL,[BX] 1582:0011 8A7701 MOV DH,[BX+01] 1582:0014 89161100 MOV [0011],DX 1582:0018 B44C MOV AH,4C 1582:001A CD21 INT 21
1582:001C 0000 ADD [BX+SI],AL 1582:001E 0000 ADD [BX+SI],AL -t
AX=1580 BX=0000 CX=0080 DX=0000 SP=0000 BP=0000 SI=0000 DI=0000 DS=1570 ES=1570 SS=1580 CS=1582 IP=0003 NV UP DI PL NZ NA PO NC 1582:0003 8ED8 MOV DS,AX
四、实验调试后程序清单
例6-13
DATA SEGMENT
TABLE DW 0,1,2,4,9,16,25,36 X DB 4
RESU DW ? DATA ENDS
CODE SEGMENT
ASSUME DS:DATA,CS:CODE START: MOV AX,DATA MOV DS,AX MOV BX,OFFSET TABLE MOV AL,X MOV AH,0 SHL AX,1 MOV DL,[BX] MOV DH,[BX+1] MOV RESU,DX MOV AH,4CH INT 21H CODE ENDS
END START??
例 6-14
DATA SEGMENT
MESS DB 'PLEASE INPUT SECOND NUMBER:',0AH,0DH,'$' RESULT DB ? DATA ENDS
CODE SEGMENT
ASSUME DS:DATA,CS:CODE START:MOV AX,DATA MOV DS,AX MOV DX,OFFSET MESS MOV AH,09H INT 21H MOV AH,01H INT 21H SUB AL,30H XCHG BL,AL MOV CL,10 MUL CL MOV BH,0 ADD AX,BX MOV RESULT,AL MOV AH,4CH
INT 21H
CODE ENDS ENDS START
五、实验结果
六、实验总结
5
百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库汇编实验报告在线全文阅读。
相关推荐: