微机原理实验报告
班 级:2012级电子科学与技术卓工班级电子科学与技术卓工班
姓 名: 黄中一黄中一 学 号: 201236460273
序 号:
评阅分数:评阅分数:
实验一
一、实验目的
1、学会如何建立汇编源文件ASM
2、学会调用MASM 宏汇编程序对源文件进行汇编,获得目标程序宏汇编程序对源文件进行汇编,获得目标程序 OBJ 及LST 列表文件列表文件
3、学会调用LINK 连接程序汇编后的目标文件OBJ 连接成可执行的文件连接成可执行的文件
EXE 4、学会使用DEBUG 调试程序把可执行文件装入内存并调试运行,用D 命令显示目标程序,用U 命令对可执行文件反汇编,用G 命令运行调试。命令运行调试。
二、实验设备
装有MASM 软件的IBM PC 机
三、实验内容
1、汇编程序对源程序进行编译,生成扩展名为OBJ 的目标文件;连接程序是将目标程序和库文件进行连接、定位,生成扩展名为EXE 的可执行文件;调试程序是对目标文件进行调试,验证它的正确性。是对目标文件进行调试,验证它的正确性。
2、DEBUG 程序各种命令的使用方法程序各种命令的使用方法
功能功能
命令格式命令格式 使用说明使用说明
显示内存单元内容显示内存单元内容
D 地址地址
从指定地址开始显示40H 个
字节或80H 个字节个字节 修改内存单元内容修改内存单元内容 E 地址地址
先显示地址和单元内容等待输入修改的内容输入修改的内容
检查和修改寄检查和修改寄
存器的内容存器的内容
R 显示全部寄存器和标志位及
下条指令单元十六进制数码和反汇编格式和反汇编格式
反汇编反汇编
U 地址地址
从指定地址开始反汇编16个或32个字节个字节 汇编汇编 A 地址地址
从指定地址直接输入语句并从指定指定汇编装入内存从指定指定汇编装入内存
跟踪跟踪 T =地址=地址 从指定地址开始逐条跟踪指
令
运行运行 G =地址=地址
无断点,执行正在调试的指令执行正在调试的指令 退出退出
Q
退出DEBUG 返回DOS
3、实验过程
①、在edit 环境,写字板,记事本等中输入源程序。或双击屏幕上“未来汇编”快捷方式进入编辑环境输入源程序。捷方式进入编辑环境输入源程序。
②、保存,输入文件名如A1.asm,并将其与MASM 的三个可执行文件放在同一目录下。下。
③、在DOS 环境下(可用windows 下的命令提示符进入),用MASM 生成目标文件A1.OBJ
进入DOS 环境,将当前目录设置为存放MASM 的路径.如图所示:
如果MASM 的软件放在C:\TOOLS\WJYL 则先要进入到该子目录下,进入该子目录的方法为,cd c:\ 退到c 盘的根目录下,cd tools
cd WJYL
则如上所述进入该目录下,然后然后 输入MASM ,可见屏幕上有四个提问,按如下格式回答:可见屏幕上有四个提问,按如下格式回答:
Source filename [.ASM]:a1↙ Object filename [A1.OBJ]: ↙
Source listing [NUL.LST]: a1↙ Cross-reference [NUL.CRF]:a1 ↙
④、键入DIR/W 可见目标文件A1.OBJ 和列表文件A1.LST 。 ⑤、在DOS 环境下,用连接文件LINK 连接程序生成可执行文件A1.EXE 输入LINK,
可见屏幕有四个提问,按以下格式回答:可见屏幕有四个提问,按以下格式回答:
Object Modules [.OBJ]:A1↙ RUN File [A1.EXE]: ↙
List File [NUL.MAP]:↙ Libraries [.LIB]:A1↙
用DIR 命令,查看生成的各文件命令,查看生成的各文件
⑥、用TYPE A1.LST ↙ 命令观看列表文件命令观看列表文件
⑦、在DOS 环境下,用DEBUG 跟踪程序来安装运行A1.EXE 程序程序 1) 输入DEBUG A1.EXE ↙可见有提示符“—”↙可见有提示符“—”
2)输入-R ↙可见CPU 内所有寄存器内容和标志位状态如下:内所有寄存器内容和标志位状态如下:
AX=0000 BX=0000 CX=0100 DX=0000 SP=0028 BP=0000 SI=0000 DI=0000 DS=1112 ES=1112 SS=
1126 CS=1129 IP=0000 NV UP DI PL NZ NA PO NC 1129:0000 B82211 MOV AX,1122
3)输入-U ,可看到11行指令,再用U 命令可看到余下的各指令。命令可看到余下的各指令。 4)输入运行命令-G =00 28 可见程序执行到可见程序执行到 INT 21H 句便停下来,屏幕展示此刻各寄存器的内容如下:刻各寄存器的内容如下:
AX=4C00 BX=0007 CX=0001 DX=0000 SP=0028 BP=0000 SI=0000 DI=0000 DS=1122 ES=1112 SS=1126 CS=1129 IP=0028 NV UP DI PL ZR AC PE CY 1129:0028 CD21 INT 21
5)输入-R IP 可修改指令指针可修改指令指针
6)输入-T ↙可看到执行第一条指令的结果↙可看到执行第一条指令的结果 输入-T =0 3↙ 可看到3条指令执行的过程条指令执行的过程 7)输入-Q ↙退出DEBUG ,回到DOS 状态。状态。
注:如果masm 的过程中出现错误,的过程中出现错误,可参看错误提示,可参看错误提示,可参看错误提示,在相应的行和列去寻错误。在相应的行和列去寻错误。可直接在dos 环境下键入edit 进入编辑环境。进入编辑环境。
附:标志寄存器对应的含义附:标志寄存器对应的含义
NV OF=0 OV OF=1 UP DF=0
DN DF=1 DI IF=0
NZ ZF=0
ZR ZF=1
NA AF=0 AC AF=1 P0 PF=0 {{{
{
{
{{{
实验例程1:
DA DATA SEGMENT TA SEGMENT ARRAY1 DB 2,5,0,3,-4,5,0,0AH,0FH ARRAY2 DB 3,5,4,-2,0,8,3,-0AH,20H COUNT DB $-ARRAY2 LEN DB ? SUM DB 20H DUP(0) DA DAT T A
ENDS STACK1 SEGMENT PARA STACK 'STACK'
DW 20H
DUP(0) STACK1 ENDS CODE
SEGMENT
ASSUME CS:CODE,DS:DA TA,SS:STACK1 START: MOV AX,DA TA
dos命令运行exe程序MOV DS,AX MOV BX,-1 MOV CX,0 MOV CL,COUNT
NOZERO: INC BX
MOV AL,ARRAY1[BX]
ADD AL, ARRAY2[BX] MOV SUM [BX],AL LOOPNE NOZERO JE ENDO INC BL
ENDO: MOV LEN,BL
MOV AH,4CH INT 21H CODE
ENDS
END START
实验例程2:显示字符串:显示字符串
;SAMPLE PROGRAM DISPLAY MESSAGE ;注释行 STACK SEGMENT PARA STACK ‘STACK’ ;定义堆栈段 DB 1024 DUP (0) ;在存储器的某个区域建立一个堆栈区 STACK ENDS DATA SEGMENT
;定义数据段
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论