福建农林大学金山学院实验报告
系: 信息与机电工程 专业: 电子信息技术 年级: 10
姓名: 学号: 1002010 实验课程: 汇编语言 实验室号:____67___ 实验设备号: E 实验时间: 指导教师签字: 成绩:
实验二 顺序程序设计
1.实验目的和要求
1. 学习使用DEBUG的命令;
2. 使用DEBUG命令在数据段中查看程序运行的结果; 3. 利用DEBUG运行简单的程序段。 2.实验环境
实验的硬件环境是: IBM—PC机及其兼容机 实验的软件环境是:
操作系统:DOS 2.0以上;调试程序:DEBUG.COM;文本编程程序:EDIT.EXE、WPS.EXE;宏汇编程序:MASM.EXE(或ASM .EXE);连接装配程序:LINK .EXE;交叉引用程序:CREF.EXE(可有可无)。 3.实验内容及实验数据记录
1)输入程序观察寄存器变化
使用DEBUG,将下面的程序段写入内存,逐条执行,观察每条指令执行后,CPU中相关寄存器的内容变化。注意用T命令执行时,CS: IP寄存器的内容
MOV AX, 4E20 ADD AX, 1416 MOV BX, 2000 ADD AX, BX MOV BX, AX ADD AX, BX MOV AX, 001A MOV BX, 0026
ADD AL, BL ADD AH, BL ADD BH, AL MOV AH, 0 ADD AL, BL ADD AL, 9C
2)下列程序单步运行,注意AL,BX,CX寄存器的变化,并观察数据段字母的变化。
DSEG MSG1 DSEG CSEG
SEGMENT DB ‘abc’ ENDS SEGMENT
ASSUME CS: CSEG, DS: DSEG
START: MOV AX, DSEG
MOV DS, AX LEA
BX, MSG1
MOV CX, 3
S:
MOV AL, [BX]
AND AL, 11011111B ;将AL中的ASCII码的第5位置
0,
;变成大写字母。
MOV [BX], AL INC LOOP
BX S
MOV AL, 0 MOV AH, 4CH INT
21H
CSEG
ENDS
END START
3)程序的跟踪执行操作
在DOS下直接输入文件主名就可以执行文件了,有的程序会显示结果,可能执行后什么结果都没有,是因为程序中没有显示命令。那么如何查看程序的运行结果呢?
程序执行过程的跟踪操作步骤如下: (1)在DOS下输入:DEBUG 文件名.EXE (2)在DEBUG提示符下输入U命令
(3)可以用T命令单步执行指令,执行到 MOV AH, 4CH时结束,也可以用G命令执行整个程序,输入:G=B地址(如:G=0000)
(4)用D命令查看程序执行后数据段的变化 输入:D K地址:0 (如:D1260:0)
在显示的数据中,对照源程序或LST文件查看结果所在的偏移地址的内容。 4)输入下面程序,按实验一和上面步骤运行一遍 DSEG MSG1 MSG2 DSEG CSEG
SEGMENT
DW 7856H,2038H DW ? ENDS SEGMENT
CS:CSEG,DS:DSEG
AX,DSEG
DS,AX AX,MSG1 AX,MSG1+2 MSG2,AX AL,0 AH,4CH
21H
ASSUME
START: MOV
MOV MOV AND MOV MOV MOV INT
CSEG
ENDS END START
5)编写调试下面的程序,用DEBUG查看数据段中的结果
?((W?X)*10?5)/(X?Y)(1)Z,X,Y,W为字节类型变量,结果存于Z
单元,写出数据段和代码段。(无符号数)
?((X?Y)*8?(X?Y)*2)/16(2)X,Y为字节类型数,求Z,写出完整的
数据段和代码段,不用乘除指令。(无符号数) 4.算法描述及实验步骤
1)
(1)、dos进入debug环境,输入a进行程序段写入内存操作,如图:
(2)、输入t单步运行跟踪观察到各寄存器的变化如图:
(3)、在执行第一条指令MOV AX, 4E20后寄存器AX内容随即变为4E20,而当执行第二条指令ADD
AX, 1416后AX变为了6236,运行随后的指令各寄存器
的变化完全吻合程序段所实现的功能,并且不难看到IP由0103不断的增加,而CS保留为13A1不变。 2)
(1)、由文本编辑内容2中的程序段存为II2.txt文件,并masm编译link连接通过,如图: