logo资料库

《微机原理与汇编》实验指导参考(主.doc

第1页 / 共22页
第2页 / 共22页
第3页 / 共22页
第4页 / 共22页
第5页 / 共22页
第6页 / 共22页
第7页 / 共22页
第8页 / 共22页
资料共22页,剩余部分请下载后查看
《微机原理与汇编语言程序设计》实验指导
实验一 汇编语言上机环境及基本操作
一、实验目的及要求
二、实验内容
1.汇编语言源程序的建立
2. 将源程序文件汇编成目标程序文件
3.用连接程序生成可执行程序文件
4.程序的执行
三、实例分析
1.用EDIT建立汇编语言源程序
2.用MASM汇编生成目标文件
3.用LINK进行连接生成可执行文件
4.程序的运行
实验二 DEBUG调试程序的应用
1.直接启动DEBUG程序
2.启动DEBUG程序的同时装入被调试文件
3.退出DEBUG
4.在DEBUG环境下建立和汇编程序
二、常用DEBUG命令
1.汇编命令A
2.比较命令C
3.显示内存单元命令D
4.修改内存单元命令E
5.填充内存命令F
6.连续执行命令G
7.跟踪命令T
8.反汇编命令U
9.执行过程命令P
10.定义待装入文件命令N
11.装入文件命令L
12.内存单元搬家命令M
13.写盘命令W
14.显示命令R
15.端口输出命令O
16.搜索指定内存命令S
17.十六进制算术运算指令H
18.端口输入命令I
19.结束DEBUG返回DOS命令Q
实验三 多精度十进制加法程序设计
一、实验目的
二、实验内容
三、编程思路
四、程序框图
五、参考程序清单
实验四 数学表达式计算
一、实验目的
二、实验内容
三、编程思路
四、程序框图
实验五 分支结构程序设计
一、实验目的
二、实验内容
三、编程思路
四、参考程序清单
实验六 循环结构程序设计
一、实验目的
二、实验内容
三、编程思路
四、参考程序清单
1 《微机原理与汇编语言程序设计》实验指导 实验一 汇编语言上机环境及基本操作 一、实验目的及要求 1.学习及掌握汇编语言源程序的书写格式和要求,明确程序中各段的功能和相互之间的 关系。 2.学会使用 EDIT、MASM、LINK、DEBUG 等软件工具。 3.熟练掌握在计算机上建立、汇编、连接、调试及运行程序的方法。 二、实验内容 1.汇编语言源程序的建立 本例中给出的程序是要求从内存中存放的 10 个无符号字节整数数组中找出最小数,将其 值保存在 AL 寄存器中。设定源程序的文件名为 ABC。 DATA DATA STACK DB 23H,16H,08H,20H,64H,8AH,91H,35H,2BH,7FH EQU $-BUF SEGMENT BUF CN ENDS SEGMENT STACK ’STACK’ STA DB 10 DUP(?) TOP EQU $-STA ENDS SEGMENT ASSUME START: PUSH DS STACK CODE XOR AX,AX PUSH AX CS:CODE,DS:DATA,SS:STACK
2 MOV AX,DATA MOV DS,AX MOV BX,OFFSET BUF MOV CX,CN DEC CX MOV AL,[BX] INC BX LP: CMP AL,[BX] JBE NEXT MOV AL,[BX] INC BX DEC CX JNZ LP MOV AH,4CH INT 21H ENDS END START NEXT: CODE 键入以下命令: C:\>EDIT ABC.ASM 此时屏幕的显示状态如图 1 所示。 图 1 用 EDIT 编辑 ABC.ASM 程序窗口 程序输入完毕后一定要将源程序文件存入盘中,以便进行汇编及连接,也可以再次调出 源程序进行修改。 2. 将源程序文件汇编成目标程序文件 一般情况下,MASM 汇编程序的主要功能有以下 3 点: (1)检查源程序中存在的语法错误,并给出错误信息。 (2)源程序经汇编后没有错误,则产生目标程序文件,扩展名为.OBJ。 (3)若程序中使用了宏指令,则汇编程序将展开宏指令。
源程序建立以后,在 DOS 状态下,采用宏汇编程序 MASM 对源程序文件进行汇编,其 操作过程如图 2 所示。 3 图 2 MASM 宏汇编程序工作窗口 汇编过程的错误分警告错误(Warning Errors)和严重错误(Severe Errors)两种。其中警 告错误是指汇编程序认为的一般性错误;严重错误是指汇编程序认为无法进行正确汇编的错 误,并给出错误的个数、错误的性质。这时,就要对错误进行分析,找出原因和问题,然后再 调用屏幕编辑程序加以修改,修改以后再重新汇编,一直到汇编无错误为止。 3.用连接程序生成可执行程序文件 经汇编以后产生的目标程序文件(.OBJ 文件)并不是可执行程序文件,必须经过连接以 后,才能成为可执行文件(即扩展名为.EXE)。 连接过程如图 3 所示。 图 3 LINK 连接程序工作窗口 上述提示行回答以后,连接程序开始连接,如果连接过程中出现错误,则显示出错误信 息,根据提示的错误原因,要重新调入编辑程序加以修改,然后重新汇编,再经过连接,直到
4 没有错误为止。连接以后,便可以产生可执行程序文件(.EXE 文件)。 4.程序的执行 当我们建立了正确的可执行文件以后,就可以直接在 DOS 状态下执行该程序。 如:C:\>ABC 本程序当中没有用到 DOS 中断调用指令,所以在屏幕上看不到程序执行的结果。 我们可以采用调试程序 DEBUG 来进行检查,相关内容请参见实验二。 三、实例分析 下面通过一个汇编语言源程序的实际例子,来了解汇编语言源程序的建立、汇编、连接、 运行的完整过程。给出的程序是从键盘输入 10 个字符,然后以与键入相反的顺序将 10 个字符 输出到显示屏幕上。设定源程序名为 STR.ASM。 1.用 EDIT 建立汇编语言源程序 在 DOS 状态下,调用 EDIT 编辑程序建立文件名为 STR.ASM 的汇编源程序,如图 4 所 示。 图 4 用 EDIT 建立汇编语言源程序 2.用 MASM 汇编生成目标文件 源程序文件建立完毕后,调用宏汇编程序 MASM 对 STR.ASM 进行汇编,如图 5 所示。
5 图 5 用 MASM 汇编生成目标文件 3.用 LINK 进行连接生成可执行文件 汇编完毕,程序正确,则可调用 LINK 进行连接,以生成可执行文件 STR.EXE,连接过 程如图 6 所示。 图 6 用 LINK 连接生成可执行文件 4.程序的运行 在 DOS 状态下,直接键入可执行的程序文件名 STR,然后从键盘输入“0123456789”10 个数字,输入回车键后,计算机将 10 个数字倒序排列输出,即“9876543210”。再次键入可执 行的程序文件名 STR,从键盘输入“abcdefghIj”10 个字符,输入回车键后,计算机将 10 个 字符倒序排列输出,即“jihgfedcba”。 运行过程及其结果如图 7 所示。
6 图 7 程序的运行状态及结果 实验二 DEBUG 调试程序的应用 1.直接启动 DEBUG 程序 如 DEBUG.COM 在 C 盘的根目录下,启动的方法是: C:\>DEBUG _ 这时屏幕上会出现“_”提示符,等待键入 DEBUG 命令。 2.启动 DEBUG 程序的同时装入被调试文件 命令格式如下: C:\>DEBUG [d:][PATH]filename[.EXT] [d:][PATH]是被调试文件所在盘及其路径,filename 是被调试文件的文件名,[.EXT]是被 调试文件的扩展名。 例如:BCDSUM.EXE 可执行文件在 A 盘,用 DEBUG 对其进行调试的操作命令如下。 C:\>DEBUG A:\BCDSUN.EXE↙ DOS 在调用 DEBUG 程序后,再由 DEBUG 把被调试文件装入内存,当被调试文件的扩 展名为 COM 时,装入偏移量为 100H 的位置,当扩展名为 EXE 时,装入偏移量为 0 的位置, 并建立程序段前缀 PSP,为 CPU 寄存器设置初始值。
3.退出 DEBUG 在 DEBUG 命令提示符“_”下键入 Q 命令,即可结束 DEBUG 的运行,返回 DOS 操作 7 系统。 4.在 DEBUG 环境下建立和汇编程序 在 DEBUG 环境下用户可以直接建立汇编语言源程序,并可以进行编辑修改,还可以进行 汇编。 比如,在 DEBUG 下运行如下程序: MOV DL,33H MOV AH,2 21H INT INT 20H ;字符 3 的 ASCII 码送 DL ;使用 DOS 的 2 号功能调用 ;进入功能调用,输出‘3’ ;BIOS 中断服务,程序正常结束。 该程序运行结果是在显示器上输出一个字符‘3’。如果要输出其它字符,请改变程序中 ‘33H’为相应字符的 ASCII 码。其中涉及 DOS 和 BIOS 功能调用。因为我们是在 DOS 的支 持下运行汇编语言程序,所以一般情况下,不能轻易使用输入/输出指令直接通过端口输入/ 输出,而必须使用 DOS 内部提供的子程序完成输入/输出。 DOS 功能调用就是为诸如此类的目的设置的。DOS 功能调用要求在进入 INT 21H 调用前, 首先将功能调用号送 AH 寄存器,并根据功能调用号准备初始数据。也就是说 INT 21H 的 2 号功能调用是输出 DL 寄存器中的字符。INT 20H 是 BIOS 中断服务,这一软中断用来正常结 束程序。 运行步骤: (1)进入 DEBUG 设 C 盘上有 DEBUG.COM 程序,进入 DOS 环境后键人 DEBUG,即 C:\>DEBUG 随后屏幕显示: _ “_”号是进入 DEBUG 的提示符,在该提示符下可键入任意 DEBUG 命令。现在用 A 命 令输入程序如下: (2)输入程序并汇编 _A 100 169C:0100 169C:0102 169C:0104 169C:0106 169C:0108 MOV MOV INT INT DL,33 AH,2 2l 20 至此程序已输入完毕,并汇编成机器指令。现在用 G 命令运行程序如下:
8 (3)运行程序 _G 3 Program terminated normally 如果现在想分析一下该程序的指令,可以用反汇编命令 U 作如下操作: (4)反汇编 _U 100,108 169C:0100 169C:0102 169C:0104 169C:0106 169C:0108 B233 B402 CD21 CD20 MOV MOV INT INT DL,33 AH,02 21 20 (5)将机器指令程序送到起始地址为 200H 的若干单元 _E 200 B2,33,B4,02,CD,21,CD,20 (6)执行机器指令程序 _G=200 3 Program terminated normally 二、常用 DEBUG 命令 DEBUG 命令是在命令提示符“_”下由键盘键入的。每条命令以单个字母的命令符开头, 然后是命令的操作参数,操作参数与操作参数之间,用空格或逗号隔开,操作参数与命令符之 间用空格隔开,命令的结束符是回车键(ENTER)。命令及参数的输入可以是大小写的结合。 Crtl+Break 键可中止命令的执行。Crtl+NumLock 键可暂停屏幕卷动,按任一键继续。所用的 操作数均为十六进制数,不必写 H。 1.汇编命令 A 格式: (1)A <段寄存器名>:<偏移地址> (2)A <段地址>:<偏移地址> (3)A <偏移地址> (4)A 功能:汇编命令是将用户输入的汇编语言指令,汇编为可执行的机器指令。键人该命令 后显示段地址和偏移地址并等待用户从键盘逐条键入汇编语言指令。每当输入一行语句后按 “ENTER”键,输入的语句有效。若输入的语句中有错,DEBUG 会显示“^ Error”,要求用 户重新输入,直到显示下一地址时用户直接键入回车键返回到提示符“_”。
分享到:
收藏