汇编实验报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
汇编语言程序设计
实验报告
学号:*********
班级:电气信息类1005
******
指导老师:***
实验一、汇编语言上机的基本过程及环境
【实验目的】
(1)熟悉汇编语言的编辑、汇编、连接及调试的全过程,重点掌握使用DEBUG调试程序的方法。
(2)了解汇编语言的程序结构。
【实验内容】
(1)在数据段中定义两个数(数据自拟,包含有正数和负数),要求编写程序分别计算出这两个数的和、差、积、商,并用Debug的相关命令查询计算结果(包括对CF,OF,SF,ZF的影响)。
(2)首先对AX,BX,CX寄存器赋初值(数据自拟),再将AX寄存器的中间八位,BX的低四位和CX的高四位拼接成一个新的字,并把结果存入偏移地址为0000H的存储单元。其中BX的低四位作为结果字的高四位,CX的高四位作为结果字的低四位。并用Debug的相关命令查询内存单元的结果字。
源代码:
DA TA SEGMENT
val1 DW 1000h
val2 DW 2000h
maxv DW ?
DA TA ENDS
STACK SEGMENT STACK 'STACK'
DB 100H DUP(?)
STACK ENDS
CODE SEGMENT 'CODE'
ASSUME CS:CODE, DS:DATA,SS:STACK
.386
MAIN:
MOV AX, DATA;
MOV DS, AX
PUSH val1
PUSH val2
CALL MAX ;
POP maxv ;栈顶返回值出栈
MOV AX, 4c00H
INT 21H
MAX PROC
PUSH BP ;执行该指令前堆栈情况
MOV BP, SP ;执行后堆栈情况
MOV AX, [BP+4]
CMP AX, [BP+6]
JA EXIT
MOV AX, [BP+6]
EXIT: MOV [BP+6], AX ;用栈顶返回值
POP BP
RET 2 ;执行后堆栈情况
MAX ENDP
CODE ENDS
END MAIN
【实验步骤】
(1)用编辑软件(记事本、UltraEdit等)编辑一个扩展文件名为ASM的汇编语言源程序。
(2)用汇编程序MASM汇编上述的汇编语言源程序,形成目标代码文件。(扩展名为OBJ)
(3)用连接程序LINK连接目标代码文件,形成可执行文件。(扩展名为EXE)(4)用DEBUG32调试可执行文件,观察执行结果,以验证其正确性。
【实验要求】
(1)在程序的调试过程中,有意识地学习及掌握DEBUG程序的各种操作命令,以便掌握程序的调试方法及技巧。
(2)实验报告编写要规范,应包括:实验名称、目的、内容、实验步骤、实验原始记录(采用的实验数据及得到的结果,对Debug的显示截图)和实验总结。实验报告还要附有源程序清单。实验总结主要包括上机调试的情况、调试所遇到的问题是如何解决的,并对调试过程中的问题进行分析,对执行结果进行分析。【实验总结】
第一次做汇编实验,主要是要熟悉汇编语言的编辑、汇编、连接及调试的全过程,重点掌握使用DEBUG调试程序的方法。由于是第一次,我没有准备好,对汇编语言的一系列命令不懂,让我很难做,但在可后通过复习和同学的帮助,我慢慢的清楚了汇编语言的编辑和汇编,以及调试的全过程。下次我会在实验前做好充足的准备。
实验二、分支及循环程序设计
【实验目的】
(1)掌握分支及循环结构程序设计的方法。
(2)进一步熟悉汇编语言源程序的编辑、汇编、连接及调试过程。
【实验内容】
(1)在数据段中定义若干个有符号字数据(初始值自拟)存放在以BUF为首址的存贮区中,编写程序求最大值和最小值,并保存到MAX,MIN变量中。
源代码:
DA TA SEGment
BUF DW 0E34AH,1432,1945H,0FFFFH,-32768,3344
COUNT EQU ($-BUF)/2
MAX DW 8000H
MIN DW 7FFFH
DA TA ENDS
CODE SEGMENT
assume CS:CODE, DS:DA TA
MAIN:
MOV AX, DATA
MOV DS, AX
MOV CX, COUNT
MOV BX, 0
MOV AX, MAX
MOV DX, MIN
LP:
CMP AX, BUF[BX]
JG BRA0
MOV AX, BUF[BX]
BRA0:
CMP DX, BUF[BX]
JL BRA1
MOV DX, BUF
bra1:
add BX, 2
LOOP LP
MOV MAX,AX
MOV MIN,DX
MOV AX, 4C00H
IN T 21H
CODE ends
end MAIN
【实验步骤】
(1)用编辑软件(记事本、UltraEdit等)编辑一个扩展文件名为ASM的汇编语言源程序。
(2)用汇编程序MASM汇编上述的汇编语言源程序,形成目标代码文件。(扩展名为OBJ)
(3)用连接程序LINK连接目标代码文件,形成可执行文件。(扩展名为EXE)(4)用DEBUG32调试可执行文件,观察执行结果,以验证其正确性。
【实验要求】
(1)在程序的编写过程中,有意识地学习掌握各种分支和循环跳转方法。(2)实验报告编写要规范,应包括:实验名称、目的、内容、实验步骤、实验原始记录(采用的实验数据及得到的结果,对Debug的显示截图)和实验总结。实验报告还要附有源程序清单。实验总结主要包括上机调试的情况、调试所遇到的问题是如何解决的,并对调试过程中的问题进行分析,对执行结果进行分析。【实验总结】
这次做实验主要是掌握分支及循环结构程序设计的方法,还有进一步了解汇编语言的调试方法。在实验中调试要使用debug,先可进行反汇编用—U,在用单步执行用t,多步执行用-g.经过这次实验学会了汇编语言的debug调试,下次我会继续努力。
实验三、子程序设计
【实验目的】