当前位置:文档之家› 实验二 汇编语言程序的运行与调试一

实验二 汇编语言程序的运行与调试一

实验二汇编语言程序的运行与调试一.实验目的:1、掌握汇编语言源程序的书写格式。

2、掌握EDIT、MASM、LINK、DEBUG等软件的使用方法。

3、掌握上机编辑、汇编、连接及运行汇编语言程序。

二&实验环境:微型计算机一台DOS或WINDOWS操作系统,MASM开发套件。

三.实验原理:1、完整的段定义伪操作data segment ; 定义数据段…data endsextra segment ; 定义附加段…extra endsstack segment stack ; 定义堆栈段…stack endscode segment ; 定义代码段assume cs:code, ds:data, es:extrastart:mov ax, datamov ds, ax ; 段地址 段寄存器...… ; 在代码段填入指令序列mov ah,4chint 21h ; 程序终止,返回DOS code endsend start ; 汇编结束2、汇编语言源程序的汇编过程汇编语言源程序的汇编过程是是利用汇编程序(MASM)对已编辑好的源程序文件(.ASM)进行汇编,将源程序文件中的助记符指令逐条翻译成机器码指令,并完成源程序中的伪指令所指出的各种操作,最后可以建立3个文件:扩展名为.OBJ的目标文件、扩展名为.LST 的列表文件和扩展名为.CRF 的交叉索引文件。

目标文件(.OBJ)是必须建立的,列表文件(.LST)和交叉索引文件(.CRF)两个文件可有可无,可以通过汇编时的命令加以选择。

3、目标程序的连接过程汇编后产生的目标程序(OBJ文件)并不是可执行程序文件(EXE文件),还不能直接运行,它必须通过连接程序(LINK)连接成一个可执行程序(EXE 文件)后,才能运行。

连接程序给出的“无堆栈段的警告性错误”并不影响程序的运行。

4、为运行汇编语言程序至少要在磁盘上建立以下文件:(1)编辑程序,如EDIT.EXE,编辑汇编源程序(2)汇编程序,如MASM.EXE,生成目标代码文件。

(3)连接程序,如LINK.EXE,生成可执行程序文件。

(4)调试程序,如DEBUG.EXE。

四.实验内容:1、将edit、masm、link等程序拷贝在C盘根目录下;鼠标左键单击开始→运行,键入command命令,进入DOS方式。

2、汇编语言源程序的建立在DOS状态下键入以下命令:C:\ > EDIT,进入EDIT后,选择File 主菜单下的“new”命令,输入如下汇编源程序;选择File主菜单下的“save”命令保存文件至C盘根目录下,文件名为abc.asm;选择File菜单下的Exit 项,退出EDIT编辑环境。

assume cs:codecode segments1: db 'Good,better,best,','$'s2: db 'Never let it rest,','$'s3: db 'Till good is better,','$'s4: db 'And better,best.','$'s: dw offset s1,offset s2,offset s3,offset s4row: db 2,4,6,8start: mov ax,csmov ds,axmov bx,offset smov si,offset rowmov cx,4ok: mov bh,0mov dh,[si]mov dl,0mov ah,2int 10hmov dx,[bx]mov ah,9int 21hadd bx,2inc siloop okmov ax,4c00hint 21h code ends end start3、将源程序文件汇编成目标程序文件在DOS状态下键入以下命令:C:\> MASM,按照系统提示逐步输入汇编源程序文件名:abc.asm,目标程序文件名:abc.obj,其他忽略。

MASM在汇编过程中将检查源程序中存在的语法错误,并给出错误信息;若源程序经汇编后没有语法错误,则产生扩展名为abc.obj的目标程序文件,位于C盘根目录下。

4、用连接程序生成可执行程序文件在DOS状态下键入以下命令:C:\> LINK,按照系统提示逐步输入目标程序文件名:abc.obj,可执行程序文件名:abc.exe,其他忽略。

若LINK在最后一行给出“LINK : warning L4021: no stack segment”的警告信息,将不影响可执行程序的生成和正常运行。

5、程序的执行当我们建立了正确的可执行文件以后,就可以直接在DOS状态下执行该程序。

在DOS状态下首先键入以下命令:C:\> cls,此为清屏命令,然后再键入C:\> abc.exe,则在屏幕上显示出程序运行结果。

6、上机编辑、汇编、连接、运行下列汇编源程序,试说明程序功能。

CODE SEGMENTASSUME CS:CODESTART: MOV AL,3EHMOV BL,ALMOV DL,ALMOV CL,4SHR DL,CLCMP DL,9JBE NEXT1ADD DL,7 NEXT1: ADD DL,30HMOV AH,2INT 21HMOV DL,BLAND DL,0FHCMP DL,9JBE NEXT2ADD DL,7 NEXT2: ADD DL,30HMOV AH,2INT 21HMOV AH,4CHINT 21H CODE ENDSEND START7、下面程序完成将HEX为起始地址的2位十六进制(ASCII码)转换成8位二进制数存入BIN单元中,请阅读程序,找出其中的错误之处。

DA TA SEGMENTORG 1000HBIN DB ? ;存放转换后的二进制数HEX DB '6B' ;待转换的十六进制数6BHORG 1030HDB 00H,01H,02H,03H,04H,05H,06H,07H,08H,09H;0-9对应的二进制数转换表ORG 1041HDB 0AH,0BH,0CH,0DH,0EH,0FH ;A-F对应的二进制数转换表DA TA ENDSCODE SEGMENTSTART: MOV AX, DA TAMOV DS, AXMOV AL, HEX ;十六进制高位36H→ALMOV BX, OFFSET BIN ;BIN的偏移地址1000H→BXSUB AH, AH ;AH清0ADD BX, AX ;1036H→BX形成转换表地址MOV DL, [BX] ;DL=(1036H)=06HSHL DL, 4 ;将DL左移至高4位,DL=60HMOV AL, HEX+1 ;十六进制低位42H→ALMOV BX, OFFSET BIN ;BIN的偏移地址1000H→BXXOR AH, AH ;AH清0ADD BX, AX ;1042H→BX形成转换表地址MOV AL, BX ;AL=(1042H)=0BHOR AL, DL ;AL=0BH∨60H=6BHMOV BIN, AL ;6BH→BIN单元MOV AH, 4CHINT 21HCODE ENDS8、编程练习:(按照汇编语言源程序的书写格式)在存储单元A中有2字节无符号加数85H、5CH,在存储单元B中有2字节无符号加数0ABH、42H。

将两变量相加,结果存回存储单元A(低字节数在前,高字节数在后)。

五.实验报告:1、程序说明:按照实验内容要求回答问题,给出程序清单和执行结果。

2、调试说明:包括上机调试的情况、上机调试步骤、调试所遇到的问题是如何解决的,并对调试过程中的问题进行分析,对执行结果进行分析3、实验心得及建议。

实验三 循环程序设计一.实验目的1、加深对循环结构的理解。

2、掌握循环程序的设计方法。

3、熟悉汇编语言程序的汇编、连接及调试技术。

二.实验环境微型计算机一台DOS 或WINDOWS 操作系统,MASM 开发套件。

三.实验要求1、建立正确循环程序的结构形式:初始化部分工作部分修改部分控制部分初始化部分工作部分修改部分控制部分Y NYN (a) W H IL E 结构循环(b) D O -W H IL E 结构循环循环一般由以下4个部分组成: (1)初始化部分:为循环做准备,如累加器清零,设置地址指针和计数器的初始值等。

(2)工作部分:实现循环的基本操作,也就是需要重复执行的一段序。

(3)修改部分:修改指针、计数器的值,为下一次循环做准备。

(4)控制部分:判断循环条件,结束循环或继续循环。

2、确立正确循环条件:计数循环:循环的次数事先已经知道,用一个变量(寄存器或存储器单元)记录循环的次数(称为“循环计数器”)。

进行减法计数时,循环计数器的初值直接设为循环次数,每循环一次将计数器减1,计数器减为0时,循环结束。

条件循环:循环的次数事先并不确定,每次循环开始时或结束后测试某个条件,根据这个条件是否满足来决定是否继续下一次循环。

四.实验内容:1、编写程序:根据流程图,编程计算1~100的和。

2、编写程序:设内存中以BUFFER为首地址的缓冲区中有若干个以非压缩BCD码形式存放的十进制数,并以符号“$”结束。

它们的值可能是0~9中的任意一个。

根据流程图,编程将这些十进制数顺序显示在屏幕上。

3、编写程序:根据流程图,编程计算S=1+2×3+3×4+4×5+…N×(N+1),直到N﹥200为止,并将结果由屏幕上显示出来。

五.实验报告1、程序说明:分析功能并写出编程练习中源程序清单和执行结果。

2、调试说明:包括上机调试的情况、上机调试步骤、调试所遇到的问题是如何解决的,并对调试过程中的问题进行分析,对执行结果进行分析。

3、实验心得及建议。

实验四分支程序设计一.实验目的:1、掌握分支程序的结构。

2、掌握分支程序的设计、调试方法。

3、进一步熟悉汇编语言程序的汇编、连接及调试技术。

二.实验环境微型计算机一台DOS或WINDOWS操作系统,MASM开发套件。

三.实验要求1、建立正确分支程序的结构形式:四.实验内容:1、上机输入下列程序,运行并分析功能。

data segmentmessage db 'This is a sample program of keyboard and display'db 0dh,0ah,'Please strike the key!',0dh,0ah,'$' data endscode segmentassume cs:code,ds:datastart: mov ax,datamov ds,axmov dx,offset messagemov ah,9int 21hagain: mov ah,1int 21hcmp al,1bhje exitcmp al,61hjc ndcmp al,7ahja ndmov al,'*'mov cx,2ok: mov dl,almov ah,2int 21hloop oknd: mov dl,almov ah,2int 21hjmp againexit: mov ah,4chint 21hcode endsend start2、上机输入下列程序,运行并分析功能。

相关主题