资源描述
试验一 Debug程序的使用
一、试验目的
1. 学习使用DEBUG调试命令。
2. 学习用DEBUG调试简朴程序。
3. 通过程序验证码制及其对标志位的影响。
4. 通过调试熟悉和掌握个寄存器的作用与特点。
二、试验内容
用DEBUG调试简朴程序。
三、试验仪器
微机一台
四、试验环节
1.由DOS进入DEBUG调试环境。
(1) C:>DEBUG将调试程序装入内存
注意:当机器控制权由DOS成功地转移给调试程序后,将显示“-”号,它是DEBUG的状态提醒符,表达可以接受调试子命令了。
(2) -R 显示CPU中各寄存器目前初始内容,请记录下列各项:
AX=0000
BX=0000
CX=0000
DX=0000
BP=0000
SI=0000
DI=0000
DS=13D4
ES=13D4
SS=13D4
SP=FFEE
CS=13D4
IP=0100
FLAG寄存器中的8个标志位状态值是:
OF
DF
IF
SF
ZF
AF
PF
CF
0
1
0
0
0
0
0
0
DEBUG用符号给出标志寄存器中8个标志位的目前状态,其含义如下表所示。
标志位含义
‘1’的对应符号
‘0’的对应符号
OF溢出
OV有
NV无
DF方向
DN递减
UP递增
IF中断
EI容许
DI严禁
SF符号
NG负
PL正
ZF全零
ZR零
NZ非零
AF辅助进位
AC有
NA无
PF奇偶性
PE偶
PO奇
CF进位
CY有
NC无
2.用DEBUG调试简朴程序
例1 -A CS:0106
MOV AX,1234
MOV BX,2345
MOV CX,0
ADD AX,BX
MOV CX,AX
INT 20
运行程序
(注:执行程序时IP应指向要执行的指令,需要修改时
-RIP
目前值
输入需要值 该处为0106
当然也可以在T或G命令中指出程序起始地址)
-R 显示各寄存器目前内容及首条指令
-T 3 跟踪执行三条赋值传送指令,观测寄存器及标志位变化
-T 2跟踪执行相加及送和数指令,观测寄存器及标志位变化
-G 执行软件中断指令INT 20,机器将显示“程序正常终止”的信息,并显示“-”,表明仍处在DEBUG的调试控制状态下,注意未用T命令,由于我们不想进入到20H中断处理程序中去,P命令也可实现相似操作
试验现象记录:观测每条指令执行后各有关寄存器值及标志位状态
例2 -A CS:116
MOV AX,[0124]
MOV BX ,[0126]
ADD AX,BX
MOV [0128],AX
INT 20
DW 2222
DW 8888
DW 0
设置断点分段运行程序
-G=CS:116 11D 从指定入口运行程序,至断点11D停,可见两个数已取至AX,BX,但还没有求和
-G122 从上一断点运行至新断点停,已完毕求和并存入指定成果单元
-G 完毕程序
观看内存内容
-DCS:116 12A 显示本程序小段目的代码和数据单元内容
-UCS:116 12A 反汇编指定范围的内存内容-
试验现象记录:通过反汇编,记录程序执行前指定范围的内存内容,并记录每条指令执行后各有关寄存器值及指定范围的内存内容)
例3 -A CS:0192
MOV DX,19B
MOV AH,9
INT 21
INT 20
DB ‘HELLO,WORLD! $’
-P 命令单步执行
试验现象记录:观测每条指令执行后各寄存器的变化,记录DX,AX的变化。
思索:根据程序输入状况,考虑‘HELLO,WORLD!$’在内存中的ASCⅡ码和地址范围
-D 0194 01A7
ASCⅡ码为: 48 45 4C 4C 4F 20 57 4F 52 4C 44 21 ;
例4 自己设计一段小程序验证补码的加法、进位、溢出的概念;
参照程序(可对数据进行修改):
-A CS:0100
MOV AL,74
ADD AL,70
MOV AL,7A
ADD AL,94
MOV AL,43
ADC AL,65
INT 20
-P命令单步执行
试验现象记录:记录每条指令执行后AX及标志位变化
例5
1. 使用R命令,实现AX=0108,BX=F1AA
-R AX -R BX
0108 F1AA
2.编辑下列程序
-A CS:0100
MOV AL,05
MOV BL,09
MUL BL
AAM
INT 20
-P 命令执行单步执行
试验现象记录:记录每条指令执行后,AX、BX以及标志位的变化。
例6 执行下列程序,用P命令或T命令跟踪
-A CS:0100
MOV AX,0200
MOV DX,1E4F
CALL AX ;调用子程序
MOV DX,167C
ADD DH,DL
MOV [0300],DX
INT 20
;********下面是子程序段********
-A CS:0200
PUSH AX
MOV AX, 010B
POP AX
RET
试验现象记录:1)跟踪执行程序,观测在子程序调用过程中
IP 0103 SP FFEE 堆栈区域内容 BA4F1E
0106 FFEE FFD0
0108 FFEE BA7C16
2)程序运行完毕后DS:[0300]中的内容为 0000
3)假如去掉POP AX,程序执行后DS:[0300]中内容为 4F6D
试验二. 汇编语言上机环境及基本环节
一、试验目的:
1. 掌握编写汇编源程序的基本格式。
2. 熟悉汇编语言上机环境。
3. 掌握汇编源程序的编辑和修改,熟悉EDIT或记事本的使用措施。
4. 掌握汇编源程序编译、连接成可执行文献的过程,熟悉MASM,LINK的使用措施。
二、试验内容:
在屏幕上显示并打印字符串“This is a sample program.”
三、试验仪器
微机一台
四、试验环节:
1.在E盘以自己的名字的汉语拼音建立一种工作目录(文献夹,名称不要太长,不超过8个字符例如zhangsan),将文献MASM.EXE,LINK.EXE复制到该目录下,编辑的源文献也保留到该目录下。
从WINDOWS进入DOS环境:C:\>
2.用EDIT编辑SW1.ASM源文献。
(1). 从目前目录进入自己的目录下,
C:\>E: 回车
E:\> CD zhangsan ↙回车
键入EDIT并回车:
E:\ zhangsan>EDIT
根据菜单提醒进行多种操作。
(2)进入EDIT编辑------EDIT是一种全屏幕编辑软件,可输入、编辑、修改、保留、另存源程序非常以便。
阐明:也可在WIDNDOWS环境下用记事本编辑源文献,在保留时,保留类型应选择所有文献,不能选择文本文献(*.txt),否则在编译时会找不到源文献的。
(3).编辑新文献:
a、在EDIT编辑器中输入汇编源程序。
b、检查输入有无错误。
c、打开文献菜单FILEà选择另存为SAVE AS┅à输入文献名为:SW1.ASMà保留。
注意:保留到你自己的文献夹中
d、若需要修改此文献,用FILE菜单à选择打开OPENà输入文献名SW1.ASM,即可修改。修改后注意重新再存盘。
(4).编辑汇编源程序
a、在EDIT(或记事本)中输入源程序。
b、检查。
c、存盘。可保留为SW1.ASM
3.用汇编程序MASM将SW1.ASM文献汇编,生成SW1.OBJ目的文献。
(1).一般简朴程序只需生成.OBJ文献,可键入简化命令:
E:\zhangsan>MASM SW1;↙
若有错误,则显示错误行号及错误性质,如:
SW1.ASM(5):error A:undefined symbor:xxxx
(2).若有错重新进入EDIT进行修改。修改后并再存盘,退出编辑,回到DOS,再汇编。
E:\ zhangsan >MASM SW1;↙
(3).没有任何错误时,显示:
Assembling:SW1.asm
表达汇编成功,生成SW1.OBJ文献。
(4).用DIR命令查看应有SW1.OBJ:
E:\ zhangsan >DIR SW1.*
4.用连接程序LINK将SW1.OBJ文献连接,生成SW1.EXE可执行文献。
(1).一般仅生成SW1.EXE文献, 可键入简化命令:
E:\ zhangsan >LINK SW1;↙
若有错误,则显示错误信息,则应返回编辑、修改、存盘,再汇编、连接直到连接成功,生成SW1.EXE可执行文献。
(2).用DIR命令查看应有SW1.EXE:
E:\ zhangsan >DIR SW1.*↙
5.运行SW1.EXE文献
E:\ zhangsan> SW1 ↙
执行SW1.EXE文献,屏幕应显示:“This is a sample program.”。由连接程序生成的.EXE,在DOS下,直接键入文献名(不要扩展名.EXE)就可以把文献装入内存,并立即执行。但有的程序没有直接显示成果;对于较复杂程序难免会出现错误,直接观测很难找到错误所在,这样就要借用调试程序进行调试。
试验现象记录:记录调试过程中出现的问题及修改措施,并记录程序执行成果。
五、试验源程序
DATA SEGMENT
DA1 DB 'This is a simple program.'
DB 0DH,0AH,' $'
DATA ENDS
STACK SEGMENT
ST1 DB 100 DUP(?)
STACK ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA,SS:STACK
START:MOV AX, STACK
MOV SS, AX
MOV AX, DATA
MOV DS, AX
MOV AH, 9
MOV DX, OFFSET DA1
INT 21H
MOV AH,4CH
INT 21H
CODE ENDS
END START
展开阅读全文