汇编实验报告

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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调试,下次我会继续努力。

实验三、子程序设计

【实验目的】

相关文档
最新文档