计算机在金属材料 中的应用实验
山东科技大学材料学院
目 录
一、调试程序DEBUG 二、熟悉80486指令系统
三、熟悉汇编语言汇编程序上机过程 四、汇编程序分支程序设计一 五、汇编程序分支程序设计二 六、汇编程序循环程序设计一 七、汇编程序循环程序设计二 八、汇编综合程序
实验一 调试程序DEBUG
一、实验题目: 调试程序DEBUG
二、实验目的:
1. 熟悉调试程序DEBUG
2. 掌握调试程序DEBUG的操作步骤 调试程序DEBUG:
调试程序 DEBUG.EXE是DOS提供的一个调试汇编语言程序的程序,每个版本的DOS都带有该程序,具有跟踪程序运行、设置断点、显示修改内存与寄存器的内容等功能,还可对小段程序进行汇编调试。 动态调试程序 DEBUG.COM
在编写和运行汇编程序的过程中,会遇到一些错误和问题,需要对程序进行分析和调试,调试程序 DEBUG 就是专为汇编语言设计的一种调试工具。它在调试汇编语言程序时有很强的功能,能使程序设计者接触到机器内部,能观察和修改寄存器和存储单元内容,并能监视目标程序的执行情况,使用户真正接触到 CPU 内部,与计算机产生最紧密的工作联系。 DEBUG 的执行 DEBUG 命令格式 主要 DEBUG 命令 DEBUG 的执行
在操作系统( DOS 或 WIndows )命令行方式下,直接调入 DEBUG 程序,
键入命令的格式如下:
D>DEBUG [d:][Path][filename[.ext]][Parm1][Parm2] 其中 [] 的内容为可选项,可以有也可以缺省。
[d:] 为驱动器号,指要调入 DEBUG 状态的可执行文件在哪个驱动器中,如
A: 、 B: 、 C: 等。
[Path] 为路径,指要调入 DEBUG 状态的可执行文件是在哪个目录下或子目录
下。
[filename[.ext]] ,指要调入 DEBUG 状态下的可执行文件的文件名,该文件可
以是通过编辑、汇编、连接后产生的可执行文件,也可以是在 DEBUG 状态下汇编的程序 段,通过写盘命令 W 写入磁盘的文件。
[Parm1][Parm2] 为任选参数,是给定文件的说明参数。 在启动 DEBUG 时,如果输入 filename (文件名),则 DEBUG 程序把指定文
件装入内存,用户可以通过 DEBUG 的命令对指定文件进行修改、显示或执行。如果没有文件名,则是以当前内存的内容工作,或者用命名命令或装入命令把需要的文件装入内存,然后再通过 DEBUG 命令进行修改、显示或执行。
当启动 DEBUG 程序后,屏幕上出现“—”,说明系统已进入 DEBUG 状态。 DEBUG 命令格式
( 1 ) DEBUG 命令都是一个英文字母,后面跟着一个或多个有关参数。多个
操作参数之间用“ , ”或空格隔开。
( 2 ) DEBUG 命令必须接着按 ENTER 键,命令才有效。
( 3 )参数中不论是地址还是数据,均用十六进制数表示,但十六进制数据后
面不要用“ H ”。
( 4 )可以用 Ctrl 和 Break 键来停止一个命令的执行,返回到 DEBUG 的提
示符“—”下。
( 5 )用 Ctrl - Num Lock 键中止正在上卷的输出行,再通过按任意键继续
输出信息。
主要 DEBUG 命令 ( 1 )汇编命令 A
格式: a. A [ 段寄存器名 ]:[ 偏移地址 ] b. A [ 段地址 ]:[ 偏移地址 ] c. A [ 偏移地址 ] d. A
功能:用该命令可以将汇编语言程序直接汇编进入内存。
当键入 A 命令后,显示段地址和偏移地址等待用户键入汇编指令,每键入一条
汇编指令回车后,自动显示下一条指令的段地址和偏移地址,再键入下一条汇编指令,直到汇编语言程序全部键入,又显示下一地址时可直接键入回车返回到提示符“-”为止。
其中 a 的段地址在段地址寄存器中,因此在使用该命令时必须将段地址寄存器
送入段地址, c 的地址在 CS 中, d 的段地址在 CS 中,偏移地址为 100H 。
( 2 )显示内存命令 D 格式: a. D [ 地址 ] b. D [ 地址范围 ] c. D
功能:显示指定内存范围的内容。
显示的内容为两种形式:一种为十六进制内容,一种为与十六进制相对应的
ASCII 码字符,对不可见字符以“·”代替。
对于 a 、 c 每次显示 128 个字节内容, b 显示的字节数由地址范围来决定。 若命令中有地址,则显示的内容从指定地址开始,若中中无地址(如 c )则从
上一个 D 命令所显示的最后一个单元的下一个单元开始。若以前没有使用过 D 命令,则以 DEBUG 初始化的段寄存器的内容为起始段地址,起始偏移地址为 100H ,即 CS:100 。
对于 a 中的地址为偏移地址,段地址为 CS 的内容,对 b 中的地址范围,可
以指定段地址和起始偏移地址和终止偏移地址。
( 3 )修改存储单元内容命令 E 格式: a · E [ 地址 ] [ 内容表 ] b · E [ 地址 ]
功能: a ·用命令所给定的内容表去代替指定地址范围的内存单元内容。 b ·一个单元一个单元地连续修改单元内容。
其中:内容表为一个十六进制数,也可以是用单引号括起的一串字符。 ( 4 )填充内存命令 F
格式: F [ 范围 ][ 单元内容表 ]
功能:将单元内容表中的内容重复装入内存的指定范围内。
( 5 )内存搬家命令 M
格式: M [ 源地址范围 ][ 目标起始地址 ]
其中源地址范围和目的起始地址为偏移地址,段地址为 DS 的内容。 功能:把源地址范围的内容搬至以目标起始地址开始的存储单元中。 ( 6 )比较命令 C
格式: C [ 源地址范围 ] , [ 目标地址 ]
其中源地址范围是由起始地址和终止地址指出的一片连续的存储单元,目标地址
为与源地址所指单元对比的目标地址起始地址。
功能:从源地址范围是由起始的地址单元开始逐个与目标起始地址往后的单元顺
序比较每个单元内容,比较到源终止地址为止。比较结果如果一致则不显示任何信息,如果不一致,则以 [ 源地址 ][ 源内容 ][ 目的内容 ][ 目的地址 ] 的形式显示失败单元地址及内容。
( 7 )搜索指定内容命令 S 格式: S [ 地址范围 ][ 表 ]
功能:在指定地址范围内搜索表中内容,搜索到就显示表中元素所在地址。 ( 8 )检查和修改寄存器内容命令 R 格式: a · R
b · R [ 寄存器名 ]
功能: a ·显示 CPU 内部所有寄存器的内容和全部标志位的状态。 b ·显示和修改一个指定寄定器的内容和标志位的状态。
其中对状态标志寄存器 FLAG 以位的形式显示,显示时, 8 个状态标志的显
示次序和符号如表 B - 1 所示。
表 B - 1 状态标志显示形式 标 志 位 状 态 显示形式(置位 / 复位) 溢出标志 OF 有 / 无 OV/NV 方向标志 DF 增 / 减 DN/UP 中断标志 IF 开 / 关 EI/DI 符号标志 SF 负 / 正 NG/PL 零标志 ZF 零 / 非 ZR/NZ 辅助进位 AF 有 / 无 AC/NA 奇偶标志 PF 偶 / 奇 PE/PO 进位标志 CF 有 / 无 CY/NC ( 9 )跟踪与显示命令 T
格式: a · T[ =地址 ] 或 T [ 地址 ]
b · T[ =地址 ][ 条数 ] 或 T [ 地址 ][ 条数 ]
功能: a ·执行一条指定地址处的指令,停下来,显示 CPU 所有寄存器内容
和全部标志位的状态,以及下一条指令的地址和内容。
b ·为多条跟踪命令,从指定地址开始;若命令中用 [ 地址 ] 给定了起始地址,
则从起始地址开始,若未给定,则从当前地址( CS:IP )开始,执行命令中的 [ 条数 ] 决定一共跟踪几条指令后返回 DEBUG 状态。
( 10 )反汇编命令 U 格式: a · U [ 地址 ] b · U [ 地址范围 ]
功能:将指定范围内的代码以汇编 语言形式显示,同时显示该代码位于内存的
地址和机器。
若在命令中没有指定地址则以上一个 U 命令的最后一条指令地址的下一个单
元作为起始地址;若没有输入过 U 命令,则以 DEBUG 初始化段寄存器的值作为段地址,以 0100H 作为偏移地址。
(11) 命名命令 N 格式: N 文件名
功能:在调用 DEBUG 时,没有文件名,则需要用 N 命令将要调用的文件名
格式化到 CS:5CH 的文件控制块中,才能用 L 命令把它调入内存进行调试(其它形式参考 DOS 手册)。
( 12 )读盘命令 L
格式: a · L [ 地址 ][ 驱动器号 ][ 起始扇区号 ][ 所读扇区个数 ] b · L [ 地址 ] c · L
功能: a ·把指定驱动器和指定扇区范围的内容读到内存的指定区域中。其中
地址是读入内存的起始地址,当输入时没有给定地址,则隐含地址为 CS:100H 。起始扇区号指逻辑扇区号的起始位置。所读扇区个数是指从起始扇区号开始读到内存几个扇区的内容。驱动器号为 0 或 1 , 0 表示 A 盘, 1 表示 B 盘。
b ·读入已在 CS:5CH 中格式化的文件控制块所指定的文件。在使用该命令前
用 N 命令命名即可将要读入的文件名格式化到 CS:5CH 的文件控制块中,其中地址为内存地址。
c ·同 b ·地址隐含在 CS : 100H 中。
当读入的文件有扩展名 .COM 或 .EXE ,则始终装入 CS:100H 中,命令中指
定了地址也没用。
其中 BX 和 CX 中存放所读文件的字节数。 (13) 写盘命令 W
格式: a · W[ 地址 ][ 驱动器号 ][ 起始扇区号 ][ 所写扇区个数 ] b · W[ 地址 ] c · W 功能: a · 把在 DEBUGU 状态下调试的程序或数据写入指定的驱动器中 , 起
始扇区号 , 所写扇区个数为要占盘中几个扇区。
写盘指定扇区的操作应十分小心,如有差错将会破坏盘上的原有内容。 如果在命令行中的地址只包含偏移地址, W 命令认为段地址在 CS 中。 b ·当键入不带参数的写盘命令时, ( 或只键入地址参数的写盘命令 ) ,写盘
命令把文件写到软盘上。该文件在用 W 命令之前用命名命令 N 将文件格式化在 CS:5CH 的文件控制块中。
c ·只有 W 命令以前而没有任何参数时,与 N 配合使用进行写盘操作。 在用 W 命令以前在 BX 和 CX 中应写入文件的字节数。 ( 15 )输出命令 O
格式: O[ 端口地址 ] [ 字节值 ]
功能:向指定端口地址输出一个字节。 ( 16 )运行命令 G
格式: G [ =地址 ][ 地址 [ 地址„ ]]
功能:执行用户正在调试的程序。
其中地址为执行的起始地址,以 CS 中内容作为段地址,以等号后面的地址为
偏移地址。再后面的地址为断点地址。在命令行中只有起始地址,没有断点地址,则程序在执行时不中断。 DEBUG 规定最多设置 10 个断点地址。设置多个断点用于调试较大的程序,即程序中有多个模块、多个通路时用,比较方便,在执行时不论走哪条通路,程序都可以在断点处停下来,以便调整程序。
断点地址为程序中断处的偏移地址,段地址在 CS 中。
当执行在 DEBUG 状态下汇编的小段程序时,只用 G 命令即可。 ( 17 )十六进制运算命令 H 格式: H 数据 1 数据 2
其中数据 1 和数据 2 为十六进制数据。
功能:将两个十六进制数进行相加、减,结果显示在屏幕上。 ( 18 )结束 DEBUG 返回到 DOS 命令 Q 格式: Q
功能:程序调试完退出 DEBUG 状态,返回到 DOS 状态下。
Q 命令不能把内存的文件存盘,要想存盘必须在退出 DEBUG 之前用 W 命令
写盘。
三、实验内容:
1. 参考教材,熟悉DEBUG的使用方法
2. 掌握调试程序DEBUG的基本命令,运行各种命令,观察运行后的情况并作记录。
实验报告内容
1、实验题目
2、实验目的
3、实验内容
实验 二 熟悉80486指令系统
一、 实验题目 熟悉80486指令系统
二、 实验目的
1. 熟练掌握DEBUG的常用命令
2. 熟练掌握80486指令系统中各指令的具体功能以及简单指令的执行过程 3. 掌握数据在内存中的存放方式和内存操作数的几种寻址方式 4. 学会使用DEBUG进行小段程序的汇编与调试
加深对汇编语言指令、机器码、寻址方式等基本内容的理解,为后续程序编制和调试打下基础。
三、 实验内容 1. 数据传送类指令 程序1:
MOV AX, 1000H MOV CX, AX MOV BL, 00H MOV BH, 30H XCHG CX, BX MOV [BX], CH XLAT
执行程序,观察相关寄存器及内存单元的数据变化,记录运行结果。 步骤:(1)启动DEBUG程序,用A命令输入上述程序,并用T命令单步运行程序。(2)每运行一条有关内存操作数的指令,要用D命令检查并记录有关内存单元的内容并注明是什么寻址方式。 2. 算术运算类指令 程序2:
MOV AX, 1234H MOV BX, 9876H INC BX ADD AX, BX DAA
执行程序,观察相关寄存器及各状态位的变化,记录运行结果。步骤同上。 3. 逻辑运算与移位指令 程序3:
MOV AL,59H MOV CL,04H MOV BL,AL SHR AL,CL OR AL,30H
AND BL,0FH OR BL,30H 4. 控制转移类指令
将AX与BX中的数据进行比较,若AX〉BX,则CX=0000H;若AX〈BX,CX=FFFFH。 程序4:
MOV AX,3000H MOV BX,4000H CMP AX,BX JC L1 MOV CX,0 JMP L2
L1:MOV CX,FFFFH L2:HLT
四、 思考题
分析各指令对标志寄存器中状态位的影响,说明状态位中溢出和进位的区别。
实验报告内容
1、实验题目
2、实验目的
3、实验内容
4、回答问题
实验三 熟悉汇编语言汇编程序上机过程
一、 实验题目
熟悉汇编语言汇编程序上机过程
二、 实验目的
1. 掌握汇编语言编程的基本格式
2. 熟悉汇编程序的上机过程
3. 学会汇编语言的编辑、汇编、连接、及调试的方法
汇编程序设计及调试的过程:
1、 编辑汇编语言源程序:利用MS-DOS 下的 EDIT 文本编辑程序或Windows 下的写字板( WORDPAD.EXE )等文本编辑软件在磁盘上建立一个后缀为.ASM的汇编语言源程序文件。
2、 汇编:调用宏汇编程序MASM把源程序汇编成目标程序(扩展名为.OBJ),在汇编过程中将对源程序进行语法检查。如果源程序有语法错误,屏幕上将出现出错提示信息。此时需要返回到编辑程序,对有语法错误的语句进行修改,然后重新汇编,直到源程序无语法错误为止。
3、 连接:由汇编后产生的目标程序通过连接程序LINK,转换为一个可执行文件(扩展名为.EXE)
4、 调试运行:利用DEBUG程序,对可执行文件进行调试,查看程序的运行是否正确。
三、 实验内容
编写程序计算2A-B+2C的值,设A=12,B=5,C=10。
按照汇编程序设计及调试的过程对该程序进行设计、编辑(EDIT)、汇编(MASM)、连接(LINK)、调试(DEBUG)。附程序清单注释语句功能及记录调试运行结果。
四、 思考题
对比源程序与DEBUG中反汇编程序,说明伪指令的作用。
实验报告内容
1、实验题目
2、实验目的
3、实验内容
4、回答问题
实验四 汇编程序分支程序设计一
一、实验题目:
汇编程序分支程序设计1
二、实验目的:
1. 掌握分支结构程序设计方法及技巧
2. 进一步熟练掌握汇编程序的设计调试方法
三、实验内容:
编一程序计算函数值Y,当X〉0时,Y=X+10;当X=0时,Y=10;当X〈0时,Y=X-10。附程序清单注释语句功能,记录出错信息及运行结果。
四、思考题:
总结分支程序的特点及设计方法
实验报告内容
1、实验题目:
2、实验目的:
3、实验内容:
程序清单
4、思考题
实验五 汇编程序分支程序设计2
一、实验题目:
汇编程序分支程序设计2
二、实验目的:
1.进一步掌握分支结构程序设计方法及技巧
2.了解DOS系统功能调用的作用和使用方法
3.学会用DOS系统功能调用的编程。
三、实验内容:
设在A、B两个存储单元各有一个无符号数,比较两个无符号数的大小,并根据判断结果,在屏幕上显示A〉B或B〉A或A=B。要求附程序清单;注释语句功能。
实验报告内容
1、实验题目:
2、实验目的:
3、实验内容:
程序清单
实验六 汇编程序循环程序设计1
一、实验题目:
汇编程序循环程序设计1
二、实验目的:
掌握循环结构程序设计方法及技巧
三、实验内容:
多字节加法:将分别存放在DATA1和DATA2中的两个多字节十进制数(压缩BCD码)相加,结果仍存于DATA1中。
四、思考题:
总结循环结构程序的特点及设计方法。
实验报告内容
1、实验题目:
2、实验目的:
3、实验内容:
程序清单
4、思考题
实验七 汇编程序循环程序设计2
一、实验题目:
汇编程序循环程序设计2
二、实验目的:
进一步理解掌握循环结构程序设计方法
三、实验内容:
在以BUF为首址的字节存储区中存放有几个元素,试统计其中正元素的个数。编程序实现这一功能,附程序清单并记录调试运行结果。
实验报告内容
1、实验题目:
2、实验目的:
3、实验内容:
程序清单
实验八 汇编综合程序设计
一、实验题目:
汇编综合程序设计
二、实验目的:
1、掌握汇编程序编写执行过程。
2、复习所学知识,掌握汇编程序结构和编程方法。
三、实验内容:
从键盘输入两个4位十进制正数,转换成二进制数后,对这两个数进行相加、相乘运算,并将结果以十六进制数形式显示在屏幕上。编程要求采用模块化结构,每个功能模块采用子程序的编程方法。本实验要求分析编程要求,画出程序流程图,并完成各功能模块的编程。附上子程序清单。
实验报告内容
1、实验题目:
2、实验目的:
3、实验内容:
程序清单
计算机在金属材料 中的应用实验
山东科技大学材料学院
目 录
一、调试程序DEBUG 二、熟悉80486指令系统
三、熟悉汇编语言汇编程序上机过程 四、汇编程序分支程序设计一 五、汇编程序分支程序设计二 六、汇编程序循环程序设计一 七、汇编程序循环程序设计二 八、汇编综合程序
实验一 调试程序DEBUG
一、实验题目: 调试程序DEBUG
二、实验目的:
1. 熟悉调试程序DEBUG
2. 掌握调试程序DEBUG的操作步骤 调试程序DEBUG:
调试程序 DEBUG.EXE是DOS提供的一个调试汇编语言程序的程序,每个版本的DOS都带有该程序,具有跟踪程序运行、设置断点、显示修改内存与寄存器的内容等功能,还可对小段程序进行汇编调试。 动态调试程序 DEBUG.COM
在编写和运行汇编程序的过程中,会遇到一些错误和问题,需要对程序进行分析和调试,调试程序 DEBUG 就是专为汇编语言设计的一种调试工具。它在调试汇编语言程序时有很强的功能,能使程序设计者接触到机器内部,能观察和修改寄存器和存储单元内容,并能监视目标程序的执行情况,使用户真正接触到 CPU 内部,与计算机产生最紧密的工作联系。 DEBUG 的执行 DEBUG 命令格式 主要 DEBUG 命令 DEBUG 的执行
在操作系统( DOS 或 WIndows )命令行方式下,直接调入 DEBUG 程序,
键入命令的格式如下:
D>DEBUG [d:][Path][filename[.ext]][Parm1][Parm2] 其中 [] 的内容为可选项,可以有也可以缺省。
[d:] 为驱动器号,指要调入 DEBUG 状态的可执行文件在哪个驱动器中,如
A: 、 B: 、 C: 等。
[Path] 为路径,指要调入 DEBUG 状态的可执行文件是在哪个目录下或子目录
下。
[filename[.ext]] ,指要调入 DEBUG 状态下的可执行文件的文件名,该文件可
以是通过编辑、汇编、连接后产生的可执行文件,也可以是在 DEBUG 状态下汇编的程序 段,通过写盘命令 W 写入磁盘的文件。
[Parm1][Parm2] 为任选参数,是给定文件的说明参数。 在启动 DEBUG 时,如果输入 filename (文件名),则 DEBUG 程序把指定文
件装入内存,用户可以通过 DEBUG 的命令对指定文件进行修改、显示或执行。如果没有文件名,则是以当前内存的内容工作,或者用命名命令或装入命令把需要的文件装入内存,然后再通过 DEBUG 命令进行修改、显示或执行。
当启动 DEBUG 程序后,屏幕上出现“—”,说明系统已进入 DEBUG 状态。 DEBUG 命令格式
( 1 ) DEBUG 命令都是一个英文字母,后面跟着一个或多个有关参数。多个
操作参数之间用“ , ”或空格隔开。
( 2 ) DEBUG 命令必须接着按 ENTER 键,命令才有效。
( 3 )参数中不论是地址还是数据,均用十六进制数表示,但十六进制数据后
面不要用“ H ”。
( 4 )可以用 Ctrl 和 Break 键来停止一个命令的执行,返回到 DEBUG 的提
示符“—”下。
( 5 )用 Ctrl - Num Lock 键中止正在上卷的输出行,再通过按任意键继续
输出信息。
主要 DEBUG 命令 ( 1 )汇编命令 A
格式: a. A [ 段寄存器名 ]:[ 偏移地址 ] b. A [ 段地址 ]:[ 偏移地址 ] c. A [ 偏移地址 ] d. A
功能:用该命令可以将汇编语言程序直接汇编进入内存。
当键入 A 命令后,显示段地址和偏移地址等待用户键入汇编指令,每键入一条
汇编指令回车后,自动显示下一条指令的段地址和偏移地址,再键入下一条汇编指令,直到汇编语言程序全部键入,又显示下一地址时可直接键入回车返回到提示符“-”为止。
其中 a 的段地址在段地址寄存器中,因此在使用该命令时必须将段地址寄存器
送入段地址, c 的地址在 CS 中, d 的段地址在 CS 中,偏移地址为 100H 。
( 2 )显示内存命令 D 格式: a. D [ 地址 ] b. D [ 地址范围 ] c. D
功能:显示指定内存范围的内容。
显示的内容为两种形式:一种为十六进制内容,一种为与十六进制相对应的
ASCII 码字符,对不可见字符以“·”代替。
对于 a 、 c 每次显示 128 个字节内容, b 显示的字节数由地址范围来决定。 若命令中有地址,则显示的内容从指定地址开始,若中中无地址(如 c )则从
上一个 D 命令所显示的最后一个单元的下一个单元开始。若以前没有使用过 D 命令,则以 DEBUG 初始化的段寄存器的内容为起始段地址,起始偏移地址为 100H ,即 CS:100 。
对于 a 中的地址为偏移地址,段地址为 CS 的内容,对 b 中的地址范围,可
以指定段地址和起始偏移地址和终止偏移地址。
( 3 )修改存储单元内容命令 E 格式: a · E [ 地址 ] [ 内容表 ] b · E [ 地址 ]
功能: a ·用命令所给定的内容表去代替指定地址范围的内存单元内容。 b ·一个单元一个单元地连续修改单元内容。
其中:内容表为一个十六进制数,也可以是用单引号括起的一串字符。 ( 4 )填充内存命令 F
格式: F [ 范围 ][ 单元内容表 ]
功能:将单元内容表中的内容重复装入内存的指定范围内。
( 5 )内存搬家命令 M
格式: M [ 源地址范围 ][ 目标起始地址 ]
其中源地址范围和目的起始地址为偏移地址,段地址为 DS 的内容。 功能:把源地址范围的内容搬至以目标起始地址开始的存储单元中。 ( 6 )比较命令 C
格式: C [ 源地址范围 ] , [ 目标地址 ]
其中源地址范围是由起始地址和终止地址指出的一片连续的存储单元,目标地址
为与源地址所指单元对比的目标地址起始地址。
功能:从源地址范围是由起始的地址单元开始逐个与目标起始地址往后的单元顺
序比较每个单元内容,比较到源终止地址为止。比较结果如果一致则不显示任何信息,如果不一致,则以 [ 源地址 ][ 源内容 ][ 目的内容 ][ 目的地址 ] 的形式显示失败单元地址及内容。
( 7 )搜索指定内容命令 S 格式: S [ 地址范围 ][ 表 ]
功能:在指定地址范围内搜索表中内容,搜索到就显示表中元素所在地址。 ( 8 )检查和修改寄存器内容命令 R 格式: a · R
b · R [ 寄存器名 ]
功能: a ·显示 CPU 内部所有寄存器的内容和全部标志位的状态。 b ·显示和修改一个指定寄定器的内容和标志位的状态。
其中对状态标志寄存器 FLAG 以位的形式显示,显示时, 8 个状态标志的显
示次序和符号如表 B - 1 所示。
表 B - 1 状态标志显示形式 标 志 位 状 态 显示形式(置位 / 复位) 溢出标志 OF 有 / 无 OV/NV 方向标志 DF 增 / 减 DN/UP 中断标志 IF 开 / 关 EI/DI 符号标志 SF 负 / 正 NG/PL 零标志 ZF 零 / 非 ZR/NZ 辅助进位 AF 有 / 无 AC/NA 奇偶标志 PF 偶 / 奇 PE/PO 进位标志 CF 有 / 无 CY/NC ( 9 )跟踪与显示命令 T
格式: a · T[ =地址 ] 或 T [ 地址 ]
b · T[ =地址 ][ 条数 ] 或 T [ 地址 ][ 条数 ]
功能: a ·执行一条指定地址处的指令,停下来,显示 CPU 所有寄存器内容
和全部标志位的状态,以及下一条指令的地址和内容。
b ·为多条跟踪命令,从指定地址开始;若命令中用 [ 地址 ] 给定了起始地址,
则从起始地址开始,若未给定,则从当前地址( CS:IP )开始,执行命令中的 [ 条数 ] 决定一共跟踪几条指令后返回 DEBUG 状态。
( 10 )反汇编命令 U 格式: a · U [ 地址 ] b · U [ 地址范围 ]
功能:将指定范围内的代码以汇编 语言形式显示,同时显示该代码位于内存的
地址和机器。
若在命令中没有指定地址则以上一个 U 命令的最后一条指令地址的下一个单
元作为起始地址;若没有输入过 U 命令,则以 DEBUG 初始化段寄存器的值作为段地址,以 0100H 作为偏移地址。
(11) 命名命令 N 格式: N 文件名
功能:在调用 DEBUG 时,没有文件名,则需要用 N 命令将要调用的文件名
格式化到 CS:5CH 的文件控制块中,才能用 L 命令把它调入内存进行调试(其它形式参考 DOS 手册)。
( 12 )读盘命令 L
格式: a · L [ 地址 ][ 驱动器号 ][ 起始扇区号 ][ 所读扇区个数 ] b · L [ 地址 ] c · L
功能: a ·把指定驱动器和指定扇区范围的内容读到内存的指定区域中。其中
地址是读入内存的起始地址,当输入时没有给定地址,则隐含地址为 CS:100H 。起始扇区号指逻辑扇区号的起始位置。所读扇区个数是指从起始扇区号开始读到内存几个扇区的内容。驱动器号为 0 或 1 , 0 表示 A 盘, 1 表示 B 盘。
b ·读入已在 CS:5CH 中格式化的文件控制块所指定的文件。在使用该命令前
用 N 命令命名即可将要读入的文件名格式化到 CS:5CH 的文件控制块中,其中地址为内存地址。
c ·同 b ·地址隐含在 CS : 100H 中。
当读入的文件有扩展名 .COM 或 .EXE ,则始终装入 CS:100H 中,命令中指
定了地址也没用。
其中 BX 和 CX 中存放所读文件的字节数。 (13) 写盘命令 W
格式: a · W[ 地址 ][ 驱动器号 ][ 起始扇区号 ][ 所写扇区个数 ] b · W[ 地址 ] c · W 功能: a · 把在 DEBUGU 状态下调试的程序或数据写入指定的驱动器中 , 起
始扇区号 , 所写扇区个数为要占盘中几个扇区。
写盘指定扇区的操作应十分小心,如有差错将会破坏盘上的原有内容。 如果在命令行中的地址只包含偏移地址, W 命令认为段地址在 CS 中。 b ·当键入不带参数的写盘命令时, ( 或只键入地址参数的写盘命令 ) ,写盘
命令把文件写到软盘上。该文件在用 W 命令之前用命名命令 N 将文件格式化在 CS:5CH 的文件控制块中。
c ·只有 W 命令以前而没有任何参数时,与 N 配合使用进行写盘操作。 在用 W 命令以前在 BX 和 CX 中应写入文件的字节数。 ( 15 )输出命令 O
格式: O[ 端口地址 ] [ 字节值 ]
功能:向指定端口地址输出一个字节。 ( 16 )运行命令 G
格式: G [ =地址 ][ 地址 [ 地址„ ]]
功能:执行用户正在调试的程序。
其中地址为执行的起始地址,以 CS 中内容作为段地址,以等号后面的地址为
偏移地址。再后面的地址为断点地址。在命令行中只有起始地址,没有断点地址,则程序在执行时不中断。 DEBUG 规定最多设置 10 个断点地址。设置多个断点用于调试较大的程序,即程序中有多个模块、多个通路时用,比较方便,在执行时不论走哪条通路,程序都可以在断点处停下来,以便调整程序。
断点地址为程序中断处的偏移地址,段地址在 CS 中。
当执行在 DEBUG 状态下汇编的小段程序时,只用 G 命令即可。 ( 17 )十六进制运算命令 H 格式: H 数据 1 数据 2
其中数据 1 和数据 2 为十六进制数据。
功能:将两个十六进制数进行相加、减,结果显示在屏幕上。 ( 18 )结束 DEBUG 返回到 DOS 命令 Q 格式: Q
功能:程序调试完退出 DEBUG 状态,返回到 DOS 状态下。
Q 命令不能把内存的文件存盘,要想存盘必须在退出 DEBUG 之前用 W 命令
写盘。
三、实验内容:
1. 参考教材,熟悉DEBUG的使用方法
2. 掌握调试程序DEBUG的基本命令,运行各种命令,观察运行后的情况并作记录。
实验报告内容
1、实验题目
2、实验目的
3、实验内容
实验 二 熟悉80486指令系统
一、 实验题目 熟悉80486指令系统
二、 实验目的
1. 熟练掌握DEBUG的常用命令
2. 熟练掌握80486指令系统中各指令的具体功能以及简单指令的执行过程 3. 掌握数据在内存中的存放方式和内存操作数的几种寻址方式 4. 学会使用DEBUG进行小段程序的汇编与调试
加深对汇编语言指令、机器码、寻址方式等基本内容的理解,为后续程序编制和调试打下基础。
三、 实验内容 1. 数据传送类指令 程序1:
MOV AX, 1000H MOV CX, AX MOV BL, 00H MOV BH, 30H XCHG CX, BX MOV [BX], CH XLAT
执行程序,观察相关寄存器及内存单元的数据变化,记录运行结果。 步骤:(1)启动DEBUG程序,用A命令输入上述程序,并用T命令单步运行程序。(2)每运行一条有关内存操作数的指令,要用D命令检查并记录有关内存单元的内容并注明是什么寻址方式。 2. 算术运算类指令 程序2:
MOV AX, 1234H MOV BX, 9876H INC BX ADD AX, BX DAA
执行程序,观察相关寄存器及各状态位的变化,记录运行结果。步骤同上。 3. 逻辑运算与移位指令 程序3:
MOV AL,59H MOV CL,04H MOV BL,AL SHR AL,CL OR AL,30H
AND BL,0FH OR BL,30H 4. 控制转移类指令
将AX与BX中的数据进行比较,若AX〉BX,则CX=0000H;若AX〈BX,CX=FFFFH。 程序4:
MOV AX,3000H MOV BX,4000H CMP AX,BX JC L1 MOV CX,0 JMP L2
L1:MOV CX,FFFFH L2:HLT
四、 思考题
分析各指令对标志寄存器中状态位的影响,说明状态位中溢出和进位的区别。
实验报告内容
1、实验题目
2、实验目的
3、实验内容
4、回答问题
实验三 熟悉汇编语言汇编程序上机过程
一、 实验题目
熟悉汇编语言汇编程序上机过程
二、 实验目的
1. 掌握汇编语言编程的基本格式
2. 熟悉汇编程序的上机过程
3. 学会汇编语言的编辑、汇编、连接、及调试的方法
汇编程序设计及调试的过程:
1、 编辑汇编语言源程序:利用MS-DOS 下的 EDIT 文本编辑程序或Windows 下的写字板( WORDPAD.EXE )等文本编辑软件在磁盘上建立一个后缀为.ASM的汇编语言源程序文件。
2、 汇编:调用宏汇编程序MASM把源程序汇编成目标程序(扩展名为.OBJ),在汇编过程中将对源程序进行语法检查。如果源程序有语法错误,屏幕上将出现出错提示信息。此时需要返回到编辑程序,对有语法错误的语句进行修改,然后重新汇编,直到源程序无语法错误为止。
3、 连接:由汇编后产生的目标程序通过连接程序LINK,转换为一个可执行文件(扩展名为.EXE)
4、 调试运行:利用DEBUG程序,对可执行文件进行调试,查看程序的运行是否正确。
三、 实验内容
编写程序计算2A-B+2C的值,设A=12,B=5,C=10。
按照汇编程序设计及调试的过程对该程序进行设计、编辑(EDIT)、汇编(MASM)、连接(LINK)、调试(DEBUG)。附程序清单注释语句功能及记录调试运行结果。
四、 思考题
对比源程序与DEBUG中反汇编程序,说明伪指令的作用。
实验报告内容
1、实验题目
2、实验目的
3、实验内容
4、回答问题
实验四 汇编程序分支程序设计一
一、实验题目:
汇编程序分支程序设计1
二、实验目的:
1. 掌握分支结构程序设计方法及技巧
2. 进一步熟练掌握汇编程序的设计调试方法
三、实验内容:
编一程序计算函数值Y,当X〉0时,Y=X+10;当X=0时,Y=10;当X〈0时,Y=X-10。附程序清单注释语句功能,记录出错信息及运行结果。
四、思考题:
总结分支程序的特点及设计方法
实验报告内容
1、实验题目:
2、实验目的:
3、实验内容:
程序清单
4、思考题
实验五 汇编程序分支程序设计2
一、实验题目:
汇编程序分支程序设计2
二、实验目的:
1.进一步掌握分支结构程序设计方法及技巧
2.了解DOS系统功能调用的作用和使用方法
3.学会用DOS系统功能调用的编程。
三、实验内容:
设在A、B两个存储单元各有一个无符号数,比较两个无符号数的大小,并根据判断结果,在屏幕上显示A〉B或B〉A或A=B。要求附程序清单;注释语句功能。
实验报告内容
1、实验题目:
2、实验目的:
3、实验内容:
程序清单
实验六 汇编程序循环程序设计1
一、实验题目:
汇编程序循环程序设计1
二、实验目的:
掌握循环结构程序设计方法及技巧
三、实验内容:
多字节加法:将分别存放在DATA1和DATA2中的两个多字节十进制数(压缩BCD码)相加,结果仍存于DATA1中。
四、思考题:
总结循环结构程序的特点及设计方法。
实验报告内容
1、实验题目:
2、实验目的:
3、实验内容:
程序清单
4、思考题
实验七 汇编程序循环程序设计2
一、实验题目:
汇编程序循环程序设计2
二、实验目的:
进一步理解掌握循环结构程序设计方法
三、实验内容:
在以BUF为首址的字节存储区中存放有几个元素,试统计其中正元素的个数。编程序实现这一功能,附程序清单并记录调试运行结果。
实验报告内容
1、实验题目:
2、实验目的:
3、实验内容:
程序清单
实验八 汇编综合程序设计
一、实验题目:
汇编综合程序设计
二、实验目的:
1、掌握汇编程序编写执行过程。
2、复习所学知识,掌握汇编程序结构和编程方法。
三、实验内容:
从键盘输入两个4位十进制正数,转换成二进制数后,对这两个数进行相加、相乘运算,并将结果以十六进制数形式显示在屏幕上。编程要求采用模块化结构,每个功能模块采用子程序的编程方法。本实验要求分析编程要求,画出程序流程图,并完成各功能模块的编程。附上子程序清单。
实验报告内容
1、实验题目:
2、实验目的:
3、实验内容:
程序清单