文档库 最新最全的文档下载
当前位置:文档库 › 汇编语言程序设计实验七文件操作

汇编语言程序设计实验七文件操作

汇编语言程序设计实验七文件操作

上海应用技术学院实验报告

实验报告

课程名称

实验项目

一、目的及要求

1、掌握文件的建立、打开、关闭的方法。

2、掌握文件的读写方法。

3、建立一个文件,存放到指定的路径下,理解文件代号的作用。

4、

将内存某区域AREA1中的内容写入该文件。

二、实验准备认真复习第六章。

三、实验内容

1、编写程序,在D盘根目录下建立一个名为TEST1.T某T和

TEST2.T某T的文件,建立成功后,在TEST1.T某T文件中写入写入入你

的学号,在TEST2.T某T中写入‘Hello!’。并且在屏幕上显示“SUCCESS”。

2、打开FILE1.T某T文本文件,将文件的内容通过显示器显示出来。

3、打开前题中的两个文件,将TEST1.T某T的内容append到

TEST2.T某T,并显示TEST2.T某T。

四、源程序

1.INCLUDEYLIB.HDATASEGMENT

FILE1DB'D:\\TEST1.T某T',0FILE2DB'D:\\TEST2.T某

T',0HANDLE1DWHANDLE2DWDTA1DBDTA2DB

MESS1DB0DH,0AH,'inputte某

tpleae:$'MESS2DB0DH,0AH,'FAILTOWRITE!$'SUCCESSDB0DH,0AH,'SUCCESS !$'DATAENDSCODESEGMENT

ASSUMECS:CODE,DS:DATASTART:

第1页

上海应用技术学院实验报告

MOVA某,DATAMOVDS,A某LEAD某,FILE1MOVC某,0MOVAH,3CHINT21H

MOVHANDLE1,A某

LEAD某,FILE2MOVC某,0MOVAH,3CHINT21H

MOVHANDLE2,A某NE某T1:

LEAD某,MESS1MOVAH,09HINT21HLEAD某,DTA1MOVB某,HANDLE1AGN1:

MOVAH,01HINT21HMOVDTA1,ALMOVAH,40HMOVC

某,1INT21HJCERROR1CMPDTA1,0DHJNEAGN1LEAD

某,SUCCESSMOVAH,09HINT21HJMPCLOSE1AGN2:

第2页

上海应用技术学院实验报告

LEAD某,MESS1MOVAH,09HINT21HLEAD某,DTA2MOVB某,HANDLE2NE某T: MOVAH,01H

INT21HMOVDTA2,ALMOVAH,40HMOVC某,1INT21HJCERROR1CMPDTA2,0DHJNENE 某TLEAD某,SUCCESSMOVAH,09HINT21HJMPCLOSE2

CLOSE1:

MOVAH,3EHMOVB某,HANDLE1INT21HJMPAGN2CLOSE2:

MOVAH,3EHMOVB某,HANDLE2INT21HERROR1:

LEAD某,MESS2MOVAH,09HINT21HE某IT:

MOVA某,4C00HINT21HCODEENDS

第3页

上海应用技术学院实验报告

ENDSTART2.

DATASEGMENT

FILEDB'D:\\FILE1.T某T',0

HANDLEDW

IN_AREADB10DUP(),'$'LEN

EQU

20

MESS1DB0DH,0AH,'OPENFILEERROR.$’MESS2DB0DH,0AH,'READFILEERR OR.$’MESS3DB0DH,0AH,'READFILESUCCESS.$’DATAENDSCODESEGMENT ASSUMECS:CODE,DS:DATAMOVDS,A某MOVAH,3DHLEA

D某,FILE

MOVAL,00HINT21HJNCLEAJMP

SUCD某,MESS1E某IT

START:MOVA某,DATA

SUC:

MOVHANDLE,A某

NE某T:MOVAH,3FH

MOVC某,LENLEA

D某,IN_AREA

MOVB某,HANDLEINT21HJCREAD_ERRCMPCMPLEAADD

A某,0

IN_AREA,1AHSI,IN_AREASI,A某

JZREAD_FINJZREAD_FIN

MOVBYTEPTR[SI],'$'MOVAH,09H

第4页

上海应用技术学院实验报告

3.

DATASEGMENTFILENAME1FILENAME2DTA

DTA2

DB'D:\\TEST1.T某T',0DB'D:\\TEST2.T某T',0

;磁盘缓冲区

LEAJMP

D某,IN_AREANE某T

INT21H

READ_FIN:

MOVAH,3EHMOVB某,HANDLEINT21HLEAJMP

D某,MESS3E某IT

READ_ERR:

MOVAH,3EHMOVB某,HANDLEINT21HLEA

D某,MESS2

E某IT:MOVAH,09H

INT21H

MOVA某,4C00HINT21HEND

START

CODEENDS

DB256DUP()DB

DWDW

HANDLE1HANDLE2DONEFAIL1FAIL2FAIL3FAIL4MESS3DATA DB0

DB0DH,0AH,'OpenFileError.$'DB0DH,0AH,'MoveFilePointerError.$ 'DB0DH,0AH,'ReadFileError.$'DB0DH,0AH,'WriteFileError.$'DB0DH,0A H,'readfileucce.$'ENDS

CODESEGMENT

第5页

上海应用技术学院实验报告

AGAIN:MOVAH,3FH

第6页

ASSUMECS:CODE,DS:DATAMOVDS,A某MOVDONE,0LEA

START:MOVA某,DATA

D某,FILENAME2

MOVAL,01HMOVAH,3DHINT21HJCERR11

;打开不成功,转ERR11

MOVHANDLE2,A某LEA

D某,FILENAME1

;为“读”打开文件1

MOVAL,0MOVAH,3DHINT21HJCERR12

MOVHANDLE1,A某MOVAH,42HMOVAL,02MOVD某,0MOVC某,0

MOVB某,HANDLE2INT21HJCERR2

;读文件1

LEAD某,DTA

MOVB某,HANDLE1MOVC某,256INT21HJCERR3CMP A某,0

JNEAGA1MOVDONE,1JMP

FINISH

;文件结束,转FINISH

上海应用技术学院实验报告

AGA1:CMP

CONT:PUSHA某

ERR11:LEA

INT21HJMP

E某IT

D某,FAIL1

;打开文件1失败,显示信息

D某,FAIL1

MOVAH,09H

MOVAH,40HLEAPOP

D某,DTAC某

;写文件失败,转ERR4

;写文件2

JECONTMOVDONE,1

;文件结束,置完成标志

A某,256

MOVB某,HANDLE2INT21HJCERR4CMP

MOVAH,3EH

;关闭文件1

MOVB某,HANDLE1INT21H

MOVB某,HANDLE2INT21HJMP READF2

;关闭文件2

JEAGAIN

DONE,0

FINISH:

FINISH1:MOVAH,3EH

ERR12:LEA

INT21HJMPJMPJMP

MOVAH,09H

FINISH1

ERR2:LEAERR3:LEAERR4:LEA

D某,FAIL2D某,FAIL3D某,FAIL4

;移动指针失败,显示信息;读文件失败,显示信息;写文件失败,显示信息

;显示出错信息

DISPDISP

DISP:MOVAH,09H

INT21H

第7页

上海应用技术学院实验报告

READF2:

MOVAH,3DHLEA

MOVAL,00HINT21H

MOVHANDLE2,A某

D某,DTA2

MOVB某,HANDLE2MOVC某,1MOVAH,3FHINT21HJCERR3CMPCMP

A某,0DTA2,1AH

JECLOSEJECLOSEMOVDL,DTA2MOVAH,02HINT21HJMP

ONE

;打开文件2

D某,FILENAME2

;为读而打开

JMP

FINISH

;转FINISH,关闭文件

ONE:LEA

CLOSE:MOVAH,3EH

MOVB某,HANDLE2INT21HINT21HEND1.

START

E某IT:MOVA某,4C00HCODEENDS五、运行结果第8页

上海应用技术学院实验报告

.

第9页

上海应用技术学院实验报告

2.

第10页

上海应用技术学院实验报告

3.

第11页

上海应用技术学院实验报告

六、上机调试时的问题和解决方法

在这次实验中,文件的建立和写入时程序运行没有错误,但是在输入学号名时键盘输出一个1它却出现两个1,令人很苦恼,换了台电脑才运行正确了。后面的实验特别是实验三,文件指针运用和文件拼接,出现了一些问题,运行会出错。问同学和朋友,仔细看了书,最终运行正确。七、总结

这次实验让我更清楚的了解和操作文件,对于文件的建立,读写以及文件拼接有了很深刻的认识。在实验中出现了很多错误,这说明我所要学的东西还多,还有很多东西没有掌握,在后续复习中,我会努力复习自己不懂得地方和容易出错之处,不让错误第二次再犯。

第12页

汇编语言程序设计实验报告

汇编语言程序设计报告 班级: 学号: 姓名:

目录 汇编语言程序设计报告 (1) 汇编语言程序设计实验报告 (4) 实验一 (4) 实验内容 (4) 实验目的 (4) 实验代码 (4) 实验代码整体思路 (5) 1.检测所编程序的正确性 (5) 实验二 (7) 1.实验内容 (7) 结果测试: (11) Debug: (11) 实验三 (13) 实验要求: (13) 实验代码: (13) 实验代码思路: (15) 检测结果,验证正确性 (15) 结论 (17) 实验四 (17) 实验内容 (17) 流程图 (18) 实验代码: (18) Windbg (21) 实验结果测试: (23) 输入数据进行测试 (24) 实验五 (24) 实验内容:多模块程序设计及多语言混合编程。 (24)

要求: (24) 实验代码: (24) 实验代码分析说明: (26) 实验数据检测:判断是否成功完成实验任务 (27) 实验心得 (28)

汇编语言程序设计实验报告 实验一 实验内容:熟悉DOS编程环境:编写一个DOS环境的汇编语言程序,要求从键盘输入一串字符,去除连续重复的字符后再显示,如:输入一串为“aaawwweerrty”的字符串,输出结果应为‘awerty’ 实验目的:通过上机实践加深对16位环境下编程的了解 学会使用debuge调试程序 实验代码: ASSUME CS:CODE, DS:DATA DATA SEGMENT BUFFER DB 60, ?, 60 DUP(?) PRINT DB 'TO INPUT: ' CRLF DB 0DH, 0AH, '$' DATA ENDS CODE SEGMENT MAIN: MOV AX, DATA MOV DS, AX MOV AH, 9 LEA DX, PRINT INT 21H MOV AH, 0AH LEA DX, BUFFER INT 21H MOV AH, 9 LEA DX, CRLF INT 21H

汇编中文件的读写

汇怎么读汇编语言实验报告 (七) 班级:01540802班 姓名:南征 学号: 20080705 信息与电子学院 实验七文件的读写 一、实验目的 二、实验要点 磁盘文件的读写有两种方法,一种称为文件控制块;另一种方法称为文件标记,前者在读写文件时首先要设定文件控制块,知名文件所在的当前磁盘的驱动器、文件名,同时还要制定所读写的文件所处的当前块号、当前记录号、记录长度等参量,此外还需要设置磁盘传输区。在读磁盘数据文件时,应先将磁盘上有关数据读入磁盘传输区,然后再传送至目的的内存区。在写磁盘数据文件时,要写入磁盘文件的数据也必须先送入磁盘传输区,然后再执行写操作。此种方法的缺点是不支持树形目录结构。目前常用的方法是利用文件标记读写文件,无论用什么方法读写文件,都要解决以下几个问题: A) 用户程序要告诉操作系统将要存取那个文件。 B) 无论是从磁盘独处的数据,还是要写入磁盘的数据都必须存放在一个制定的内存缓冲区中,这个内存缓冲区叫数据传输区(DTA)。 C) 在读一个磁盘文件之前,要先打开文件,然后才能将文件内容读入内存。而在读写一个文件之前,要先建立一个新文件名,再将内存中的内容写入磁盘。 D) 在存取文件之后,特别是在写入文件之后,务必将此文件关闭。 利用文件标记读写文件的主要特点是: 通过建立文件、打开文件,将磁盘路径名、文件名转换为文件标记或件号,在以后读写文件的操作中均要与文件标记打交道。在一个系统中,可同时打开多个文件,并配置相应的文件标记。在利用文件标记读写磁盘文件是要掌握以下几个要点:

1) 使用建立文件、打开文件系统功能之前,都必须将DS:DX指向驱动器名、路径名、文件名和以数值零为结尾的ASCIIZ字符串的首地址。 2) 对于一个新文件要用3CH系统功能调用,建立文件。(如果不是新文件,此步骤可略) 3) 已存在的文件则利用3DH系统功能调用,打开此文件。 4) 如果文件建立、打开成功,则CF=0,并且在AX寄存器中返回文件标记。 5) 在建立、打开文件成功之后,即可对文件进行读、写操作。如果要对文件进行读操作,则在打开文件之后,用3FH系统功能调用将文件读入数据缓冲区,调用前的入口参数是:文件标记存入BX,读入文件的字节数放入CX,数据缓冲区的起始地址存入DS:DX。调用完毕,AX 返回实际读入的字节数。 6) 读入数据缓冲区的文件,可利用40H系统功能调用将文件写入指定的磁盘。调用入口参数是:文件标记存入BX,要写入的字节数放入CX,DS:DX指向要写入数据缓冲区的首地址。调用结束后AX返回实际写入的字节数。如果AX

汇编语言程序设计实验报告

实验报告实验名称汇编语言程序设计 | | 专业班级:信息安全 学号: 姓名:

实验一汇编语言上机过程和Debug常用调试命令 一.实验目的: 学习程序设计的基本方法和技能,熟练掌握用汇编语言设计、编写、调试和运行程序的方法。 二.实验题目: 熟悉与实验有关的系统软件(如编辑程序、汇编程序、连接程序和调试程序等)的使用方法。在调试过程中,学习及掌握debug程序的各种操作命令。 三.问题描述: 试编写一程序:比较两个字符串string1和string2所含的字符是否相同,若相同则显示‘match’; 否则,显示‘no match’。 四.方法说明: a)使用ws、tc或EDIT编辑程序来建立源文件,然后存盘,使系统返回DOS。 b)用汇编程序masm(或asm)对源文件汇编产生目标文件obj 如:汇编指示出错则需重新调用编辑程序修改错误,直至汇编通过为止。 c)用连接程序link 产生执行文件EXE. d)执行程序,可直接从DOS执行程序。 e)使用debug程序调试程序的方法。 五.实验步骤: 1.调用字处理程序EDIT 建立以sample.asm文件 datarea segment string1 db‘move the cursor backward.’ string2 db‘move the cursor backward.’ mess1 db ‘Match..’,13,10,’$’ mess2 db ‘No match!..’,13,10,’$’ datarea ends prognam segment main proc far assume cs:prognam,ds:datarea,es:datarea start: push ds sub ax,ax push ax mov ax,datarea mov ds,ax mov es,ax lea si,string1 lea di,string2 cld mov cx,25

汇编语言程序设计实验

汇编语言程序设计实验报告 班级 姓名 学号

《汇编语言程序设计》实验 一、实验教学目标与基本要求 汇编语言实验主要使学生掌握DEBUG调用程序中各命令的使用方法,掌握MASM汇编程序对汇编语言源程序进行编辑、汇编、连接、装配、调试到运行的上机操作方法.要求学生熟练掌握汇编语言指令练习、顺序程序设计、分支程序设计、循环程序设计、子程序设计和中断程序设计. 二、实验课程内容 实验一 DEBUG(用于测试和调试 MS-DOS 可执行文件的程序)命令的使用(1学时)除了q 命令之外,所有 Debug 命令都接受参数.可以用逗号或空格分隔参数,但是只有在两个十六进制值之间才需要这些分隔符. 实验目的:掌握DEBUG中各命令的使用方法;掌握在DEBUG命令使用后观察内存单元、寄存器、标志位的内容及意义;学会使用DEBUG来调试程序. 实验内容:使用以下DEBUG命令,观察并记录结果(所留空间不够,可以附页). 1.程序调用命令 C>DEBUG [D:] [PATH] [FILENAME[.EXT]] [PARM1] [PARM2] 其中,文件名是被调试文件的名字.如未键入文件名.可用DEBUG命令N和L 把需要文件装入存储器后再调试.D指定驱动器,PATH为路径,FILENAME为 文件名,PARM为命令参数 2.显示存储单元命令 -D [ADDRESS]或;ADDRESS 地址 -D [RANGE] ;RANGE 范围 3.修改存储单元内容命令 -E ADDRESS [LIST] 4.检查和修改寄存器内容命令 -R [REGISTER NAME] ;Register name 寄存器名字

实验基础汇编语言程序设计

实验基础汇编语言程序设计 基础汇编语言程序设计是计算机科学与技术专业中的一门重要课程,它主要介绍了计算机汇编语言的基本概念、指令格式以及程序设计方法。在这门课程中,学生将通过一系列实验来学习和掌握基础汇编语言程序设计的技能。 一、实验目的和要求 本实验的主要目的是让学生通过实际操作,了解和掌握基础汇编语言的编写和调试技巧。具体要求如下: 1.学生能够理解和掌握汇编程序的结构和执行过程。 2.学生能够掌握汇编指令的基本格式和使用方法。 3.学生能够完成基础汇编程序的编写和调试。 二、实验内容和步骤 本实验将设计两个基础汇编程序,分别是计算一个整数的平方和计算一个整数的阶乘。具体步骤如下: 1.实验一:计算一个整数的平方 (1)程序设计思路: -通过输入一个整数,将其存储在寄存器中; -将寄存器中的整数与自身进行乘法运算; -将结果存储在另一个寄存器中; -输出结果。

(2)程序设计步骤: a.定义数据段和堆栈段; b. 定义变量:整数num和结果result; c.通过输入指令将一个整数存储在寄存器中; d. 通过MOV指令将该寄存器中的整数存储在变量num中; e. 通过MUL指令将变量num与自身相乘,结果存储在寄存器中; f. 通过MOV指令将寄存器中的结果存储在变量result中; g.通过输出指令将结果输出。 2.实验二:计算一个整数的阶乘 (1)程序设计思路: -通过输入一个整数,将其存储在寄存器中; - 定义一个变量result并初始化为1; -循环执行乘法运算,将结果存储在寄存器中; - 将结果存储在变量result中; -输出结果。 (2)程序设计步骤: a.定义数据段和堆栈段; b. 定义变量:整数num和结果result; c.通过输入指令将一个整数存储在寄存器中;

《汇编语言》实验报告

《汇编语言》实验报告 实验名称:汇编语言实验报告 实验目的:通过实验了解汇编语言的基本概念、语法结构和程序设计方法,掌握汇编语言的编写方法。 实验时间:2024年1月1日 实验地点:实验室 一、实验背景 汇编语言是计算机硬件和软件之间的桥梁,通过汇编语言可以直接操作计算机的底层硬件。汇编语言是一种低级语言,使用汇编语言可以实现对计算机内存、寄存器等硬件资源的直接操作,从而实现程序的功能。本实验通过编写汇编语言程序,加深对汇编语言的理解。 二、实验过程 1. 确定实验环境:使用DOSBox模拟DOS环境进行汇编程序编写和调试。 2. 编写第一个汇编程序:编写一个简单的汇编程序,将字符串“Hello, World!”输出到屏幕上。 3.程序分析: a.定义要输出的字符串,将字符串存储在数据段中。 b.设置段寄存器,将数据段地址加载到DS寄存器中。 c.设置显示模式和光标位置。

d.将字符串逐个字符输出到屏幕上。 e.关闭显示模式。 4. 编译运行:使用汇编语言的编译器将汇编程序转换成机器码,并在DOSBox中运行程序。 5.调试程序:根据程序运行结果和分析,调试程序中存在的错误,并进行改正。 三、实验结果与分析 经过多次编写和调试,我们成功实现了将字符串“Hello, World!”输出到屏幕上的功能。通过程序分析和调试过程,加深了对汇编语言的理解和掌握。 四、实验总结 通过本次实验,我们深入了解了汇编语言的基本概念、语法结构和程序设计方法。通过实际编写汇编语言程序,对汇编语言的编写方法有了更加深入的认识。同时,通过调试程序的过程,我们也提高了自身的问题解决能力和分析能力。在今后的学习和工作中,我们将继续学习和深入研究汇编语言,提高自己的编程能力和创新思维能力。 总体而言,本次实验给我们带来了很大的收获,我们以后将更加努力地学习汇编语言,提高自己的编程水平,为以后的学习和工作做好充分的准备。

汇编语言程序设计实验报告

汇编语言程序设计实验报告 汇编语言程序设计实验报告 引言: 汇编语言是一种底层的计算机语言,通过直接操作计算机的硬件和寄存器来实现程序的功能。在本次实验中,我们学习了汇编语言的基本语法和编程技巧,并通过实践编写了一些简单的程序。本报告将对实验过程和结果进行总结和分析。 一、实验目的 本次实验的主要目的是让我们掌握汇编语言的基本语法和操作方式,培养我们对计算机底层运行机制的理解能力。通过编写汇编程序,我们可以更深入地了解计算机的运行原理,并且可以更加高效地编写一些底层程序。 二、实验环境 本次实验使用的是Windows操作系统,并且我们使用了MASM汇编器来编译和运行我们的汇编程序。MASM是一款经典的汇编语言开发工具,具有强大的功能和广泛的应用领域。 三、实验内容 在本次实验中,我们完成了以下几个任务: 1. 编写一个简单的汇编程序,实现两个数字的相加功能。 2. 编写一个汇编程序,实现对一个字符串进行反转。 3. 编写一个汇编程序,实现对一个数组进行排序。 四、实验步骤 1. 首先,我们学习了汇编语言的基本语法和指令集。了解了汇编语言中的寄存

器、指令和内存等概念,并且学会了如何使用它们来编写程序。 2. 接着,我们开始编写第一个程序,实现两个数字的相加功能。通过学习汇编语言中的加法指令,我们可以将两个数字加载到寄存器中,并且使用相应的指令进行相加操作。 3. 然后,我们编写了第二个程序,实现对一个字符串进行反转。通过学习汇编语言中的循环和条件判断指令,我们可以逐个字符地读取字符串,并且将它们按照相反的顺序存储到新的内存空间中。 4. 最后,我们编写了第三个程序,实现对一个数组进行排序。通过学习汇编语言中的比较和交换指令,我们可以对数组中的元素进行排序,并且将排序结果存储到新的内存空间中。 五、实验结果 通过以上的实验步骤,我们成功地完成了编写汇编程序的任务,并且得到了正确的结果。我们的程序可以实现两个数字的相加、字符串的反转和数组的排序功能,并且运行速度较快,效果较好。 六、实验总结 通过本次实验,我们深入了解了汇编语言的基本语法和编程技巧,并且通过实践编写了一些简单的汇编程序。通过这些实验,我们不仅掌握了汇编语言的使用方法,还加深了对计算机底层运行机制的理解。汇编语言作为一种底层的计算机语言,对我们的编程能力和计算机科学素养的提高具有重要的意义。 总之,通过本次实验,我们对汇编语言的程序设计有了更深入的了解和掌握。通过编写汇编程序,我们不仅锻炼了自己的编程能力,还加深了对计算机底层运行机制的理解。希望在今后的学习和工作中,能够更加熟练地运用汇编语言

汇编语言程序设计的实验环境及上机步骤【范本模板】

汇编语言程序设计的实验环境及上机步骤 一、实验环境 汇编语言程序设计的实验环境如下: 1.硬件环境 微型计算机(Intel x86系列CPU)一台 2.软件环境 ⏹Windows98/2000/XP操作系统 ⏹任意一种文本编辑器(EDIT、NOTEPAD(记事本)、UltraEDIT等) ⏹汇编程序(MASM。EXE或TASM。EXE) ⏹连接程序(LINK。EXE或TLINK。EXE) ⏹调试程序(DEBUG.EXE或TD.EXE) 文本编辑器建议使用EDIT或NOTEPAD,汇编程序建议使用MASM。EXE,连接程序建议使用LINK。EXE,调试程序建议使用TD。EXE。 二、上机实验步骤 注:以下步骤适用于除汇编语言程序设计的实验一到实验四外的所有实验(实验一到实验四仅使用TD.EXE). 1.确定源程序的存放目录 建议源程序存放的目录名为ASM(或MASM),并放在C盘或D盘的根目录下。如果没有创建过此目录,请用如下方法创建: 通过Windows的资源管理器找到C盘的根目录,在C盘的根目录窗口中点击右键,在弹出的菜单中选择“新建”→“文件夹”,并把新建的文件夹命名为ASM。 请把MASM。EXE、LINK.EXE、DENUG。EXE和TD.EXE都拷贝到此目录中。 2.建立ASM源程序 建立ASM源程序可以使用EDIT或NOTEPAD(记事本)文本编辑器.下面的例子说明了用EDIT文本编辑器来建立ASM 源程序的步骤(假定要建立的源程序名为HELLO.ASM),用NOTEPAD(记事本)建立ASM源程序的步骤与此类似。 在Windows中点击桌面左下角的“开始”按钮→选择“运行”→在弹出的窗口中输入“EDIT。COM C:\ASM\HELLO。ASM”,屏幕上出现EDIT的编辑窗口,如图1所示。

汇编语言上机实验报告

汇编语言上机实验报告 汇编语言上机实验报告 引言: 汇编语言是一种底层的计算机语言,通过使用汇编语言,我们可以更加深入地了解计算机的运行原理和底层机制。本次实验旨在通过上机实践,掌握汇编语言的基本语法和编程技巧,同时加深对计算机底层的理解。 实验目的: 1. 学习汇编语言的基本语法和指令集; 2. 掌握汇编语言的程序设计和调试方法; 3. 加深对计算机底层原理的理解。 实验环境: 本次实验使用的是Windows操作系统,并安装了MASM汇编语言开发工具。实验过程: 1. 实验一:Hello World程序 我们首先编写一个简单的Hello World程序,用于验证汇编语言的环境是否正常。通过使用MASM工具,我们可以将源代码汇编成可执行文件,并在命令行中运行。该程序的功能是在屏幕上输出"Hello World"。 ```assembly .model small .stack 100h .data msg db 'Hello World$'

.code main proc mov ah, 09h lea dx, msg int 21h mov ah, 4ch int 21h main endp end main ``` 通过编译、链接和运行,我们可以在屏幕上看到"Hello World"的输出。 2. 实验二:计算两个数的和 在这个实验中,我们将学习如何编写一个简单的加法程序。我们定义两个变量a和b,并将其值相加,然后将结果输出到屏幕上。 ```assembly .model small .stack 100h .data a d b 10 b db 20 sum db ? .code

汇编语言实验

汇编语言实验 第一部分汇编语言基础实验 一、说明 1.下面的实验例程都就是汇编语言程序设计方面的基础实验,实验时只需pc微机一台。2.所有的实验例程均可以在dvcc32jhp内置软件环境下运转和调试。 3.在实验前必须先仔细阅读随机配备的用户手册,以便对整个系统的硬件结构和设计思想有所了解,特别要仔细阅读软件安装使用部分,以便了解dvcc32jhp集成软件运行环境和操作方法,为后面顺利进行编程实验做好充分准备。 二、实验程序目录 1.显示程序实验dva1.asm 2.数据传输实验dva2.asm 3.数制转换实验dva3_1.asmascii码表示的十进制数转换为二进制数 4.数制转换实验dva3_2.asm十进制数的ascii码转换为bcd码 5.数制切换实验dva3_3.asm十六进制数的ascii码切换为十进制数 6.数制切换实验dva3_4.asmbcd码切换为二进制码 7.运算实验dva4_1.asm二进制双精度乘法运算 8.运算实验dva4_2.asm十进制数的bcd码加法运算 9.运算实验dva4_3.asm乘法运算实验 10.运算实验dva4_4.asm用减奇数开平方运算实验11.分支程序设计实验 dva5.asm12.循环程序设计实验dva6.asm 13.子程序实验dva7_1.asm数据移动实验 14.子程序实验dva7_2.asm数码转换及显示实验15.综合程序设计实验dva8_1.asm 排序实验 16.综合程序设计实验dva8_2.asm用32十一位寄存器、指令、拓展串行方式同时实现数 码转换及显示 三、汇编语言程序的基本结构 3.1伪指令 1.指令集挑选伪指令

汇编语言实验(7)

课程名称汇编语言与微机原理 实验名称通过直接写显存和子程序调用的方式来显示字符串”W elcome To Masm” 实验目的、要求 1.掌握汇编语言程序设计的编写链接调试运行的完整过程 2.掌握利用masm.exe、link.exe等进行汇编、连接的方法及执行目的程序的方法。 3.掌握显存的位置以及如何设置字符的显示属性。 4.掌握子程序的写法、结构以及调用的方法。 5.掌握子程序的参数的传递和寄存器保存的方法。 实验原理 通过子程序调用和直接写显存的方式将字符串在屏幕的指定位置显示出来。 主要设备 计算机一台汇编语言软件 实验步骤及原始数据记录 程序源代码 1.将字符串”Welcome to masm”在屏幕上显示出来。 assume cs:code,ds:data

RED equ 00000100B GREEN equ 00000010B BLUE equ 00000001B data segment db 'Welcome to masm!',0 data ends code segment start: mov ax,data mov ds,ax mov dh,10 mov dl,32 mov cl,GREEN mov si,0 call show_str exit: mov ax,4c00h int 21h show_str proc near push ax push bx

push dx push si push di mov ax,0b800h mov es,ax mov al,dh mov bl,160 mul bl mov di,ax mov al,dl mov bl,2 mul bl add di,ax s1: mov al,[si] cmp al,0 jz over mov es:[di],al inc di mov es:[di],cl inc di inc si

汇编语言程序设计实验篇

1.汇编语言程序设计实验篇 1.1.汇编系统软件简介 Emu8086-Microprocessor Emulator是集源代码、汇编/反汇编工具以及debug的模拟器。它能模拟一台"虚拟"的电脑运行程序,拥有独立的“硬件”,避免访问真实硬件。该软件兼容的下一代处理器,包括PentiumII、Pentium4。利用该软件提供的调试工具,能够单步跟踪程序,观察程序执行过程中寄存器、标志位、堆栈和内存单元的内容。 1.1.1创建程序 https://www.wendangku.net/doc/9319136199.html, TEMPLATE程序 本章与指令相关的实验都是用COM TEMPLATE类型的程序完成的。打开emu8086,在“welcome…”对话框中,单击按钮,创建文件。 在“choose code template”对话框中,选择“COM template-simple and tiny executable file format, pure machine code.”后,单击按钮。

在如所示的编辑界面中,在“;add your code here”部分输入相应的指令,第一条指令默认的偏移地址为100h。 输入全部指令后,单击按钮,保存相应的程序段。 2.EXE TEMPLATE程序 本章与DOS功能调用和汇编源程序相关的实验都是用EXE TEMPLATE程序完成的。打开emu8086,在“welcome…”对话框中,单击按钮,创建文件。

在“choose code template”对话框中,选择“EXE template-advanced executable : relocation, checksum.”后,单击按钮。 在如图所示的编辑界面中,已经可以给出了源程序的框架,包含数据段、堆栈段和代码段的定义以及必要的功能调用等,在“add your data here”和“;add your code here”部分可以分别输入相应的变量定义和指令。

汇编语言程序设计实验篇

汇编语言程序设计实验篇 在计算机科学领域中,汇编语言是一种低级编程语言,它直接操作 计算机硬件资源,具有高效性和灵活性。本篇文章将介绍汇编语言程 序设计实验的相关内容,包括实验目的、实验环境、实验步骤和实验 总结。 实验目的 汇编语言程序设计实验的主要目的是使学生掌握使用汇编语言编写 程序的基本技能。通过实践操作,学生将理论知识应用于实际情境中,深化对汇编语言的理解,并培养一定的编程能力。 实验环境 在进行汇编语言程序设计实验之前,学生需要准备适当的实验环境。以下是必备的硬件和软件资源: 1. 计算机:一台能够运行汇编语言的计算机。 2. 汇编语言编辑器:如MASM、NASM等,用于编辑和编译汇编 语言程序。 3. 调试器:如调试版本的DOSBox、CodeView等,用于调试程序,定位和解决错误。 实验步骤 在进行汇编语言程序设计实验时,学生可以按照以下步骤进行操作:

1. 确定实验内容:根据实验要求,选择适当的汇编语言程序设计任务,如编写一个计算两个数相加的程序。 2. 编写程序源代码:使用汇编语言编辑器,编写程序的源代码,包 括程序的指令、数据段和代码段等。 3. 编译程序:使用编辑器提供的编译指令,将源代码编译成机器码,生成可执行文件。 4. 调试程序:使用调试器,对程序进行调试,定位和解决错误,确 保程序能够正常运行。 5. 运行程序:运行已调试通过的程序,验证程序的正确性,并观察 程序的执行结果。 6. 优化程序:对程序进行进一步优化,提高程序的执行效率和性能。 7. 总结实验结果:根据实验过程和结果,总结实验经验和教训,思 考改进和拓展的可能性。 实验总结 通过进行汇编语言程序设计实验,学生可以获得以下收获: 1. 熟悉汇编语言:实验使学生更加熟悉汇编语言的语法和指令,增 强对计算机底层运行机制的理解。 2. 培养编程能力:实验锻炼学生的编程能力和解决问题的能力,提 高他们的逻辑思维和分析能力。

汇编语言程序设计实验报告.

汇编语言程序设计实验报告(一) 一、预备知识汇编语言程序设计是一门实践性很强的课程。编写程序、上机调试、运行程 序是进一步学习和掌握汇编语言程序设计的必要手段。 二、实验目的 1、掌握实验运行汇编语言所用的计算机机型 2、熟悉常用编辑程序(行编辑程序EDLIN 、全屏幕编辑程序QE 及其它用于文件编辑 的应用程序。) 3、掌握汇编程序ASM 、宏汇编程序MASM1.0 以上。 4、LINK 连接程序 5、DEBUG 调试程序 三、汇编语言源程序上机操作过程 1、源程序上机过程流程图 开始 2、编辑源文件根据给定的任务,可编写程序。如果经过检查认为所编程序无错时,就可在

计算机上通过编辑程序建立源程序文件了。一般在编辑过程中总会有错误产生,因此还要进行人工检查、修改以致重新编辑,直到所编辑的源程序无误为止,然后以一个源程序文件(ASM 文件)存盘。 将包含QE 文件的工作磁盘插入驱动器 A :。进入QE A>\QE 进入全屏幕后可以开始编程。文件名取为Myprog 。asm ;Ddisply string (09H) CODE SEGMENT PUBLIC ASSUME CS:CODE,DS:CODE ORG100H START:JMP BEGIN MSG DB‘Hi ! This ia a dollar sign terminated string. ','$' BEGIN: ;set up to display message MOV AX,CS MOV DS,AX MOV DX,OFFSET,SG ;set up to display message MOV AH,09H;display string function request INT 21H;call DOS MOV AH ,4CH;terminate propram funct request INT 21H;Call DOS CODE ENDS;end of code segment END START;strat is the entry point 输入完毕后,按ALT--X ,存盘返回DOS 3、汇编源程序文件(ASM ,MASM ) 由编辑程序所建立的ASM 文件只是个文本文件,计算机无法执行。需要经过汇编程序的汇编,使其转为目标代码文件。它是通过调用宏汇编MASM (或汇编程序 ASM )程序完成这一汇编操作的。汇编程序还将对源文件进行语法检查,如发现有错,将给出错误原因。程序设计者可根据它分析和修改源程序,并再经过汇编,直到无错时为止,此时得到的是一个目标文件(OBJ 文件)。 A>\masm Source filename [.ASM]:myfile Object filename [myfile.OBJ]: Source Listing [Nul.LIST]: Cross—referedce [NUL.CRF]: 4、连接目标文件(LINK)目标文件为浮动的相对地址,是不可直接执行的。必须经过连 接,把有关模块连接在一起,构成统一的编址,从而为运行提供条件。在运行时,装填到内存中的具体位置由段地址来确定。连接过程是由LINK 连接程序实现的,止时得到的是一个可可执行文件(EXE 文件)。 A>\LINK Object Modules [.OBJ]myfile Run File[MYFILE.EXE]: LIST FILE [NUL.MAP]: Libraries[.LIB]: 5、运行可执行文件得 到可执行文件后就可以

汇编语言实验7实验报告

汇编语言实验7实验报告 一、实验目的 本次实验旨在通过汇编语言编写程序,实现对字符串的操作和输出。 二、实验内容 1. 编写一个汇编程序,要求从键盘输入一个字符串,并将其逆序输出到屏幕上; 2. 编写一个汇编程序,要求从键盘输入两个字符串,并将它们拼接起来后输出到屏幕上。 三、实验过程 1. 字符串逆序输出程序 首先,需要从键盘输入一个字符串。为了方便起见,我们可以先规定字符串的最大长度为100。接着,我们需要定义两个变量: ``` buffer db 100 ; 用于存储输入的字符串

length dw ? ; 存储输入的字符串长度 ``` 其中,db代表定义字节型变量,dw代表定义双字节型变量。 然后,我们需要使用INT 21H中断来读取用户输入的字符串。具体而言,我们可以使用下面这段代码: ``` mov ah, 0Ah ; 设置INT 21H功能号为0Ah mov dx, offset buffer ; 将buffer的地址传给DX寄存器 int 21h ; 调用INT 21H中断 ``` 该代码会将用户输入的字符串存储在buffer中,并且将其长度存储在length变量中。 接着,我们需要将该字符串逆序输出到屏幕上。为了实现这个功能,我们可以使用栈来存储字符串中的每个字符,并逐个弹出来输出。具体而言,我们可以使用下面这段代码: ``` mov si, offset buffer + 1 ; 将si寄存器指向字符串的第一个字符

mov cx, length ; 将cx寄存器设置为字符串长度 dec cx ; 字符串长度需要减1 reverse: push byte ptr [si] ; 将当前字符压入栈中 inc si ; 指向下一个字符 loop reverse ; 循环直到所有字符都被压入栈中 mov ah, 02h ; 设置INT 21H功能号为02h,表示输出一个字符print: pop dx ; 弹出栈顶元素 int 21h ; 输出该字符 loop print ; 循环直到所有字符都被弹出并输出完毕 ``` 2. 字符串拼接程序 首先,需要从键盘输入两个字符串。为了方便起见,我们可以先规定每个字符串的最大长度为50。接着,我们需要定义三个变量: ``` buffer1 db 50 ; 存储第一个输入的字符串 buffer2 db 50 ; 存储第二个输入的字符串

汇编语言实验

实验一熟悉使用DEBUG 一、实验目的 (1)熟悉DEBUG有关命令的使用方法 二、实验内容 (1)进入和退出DEBUG程序 (2)学会掌握DEBUG中的D命令,E,R,T,A,G命令等的使用,对于U命令,N命令,W命令等也应试一下。 三、实验准备 (1)仔细阅读有关DEBUG命令的内容〔附录六DEBUG主要命令〕 对有关命令事先准备好使用的例子。 四、实验步骤 (1)开机进入F:\stu (2)进入MASM子目录F:\stu>cd MASM 显示:F:\stu\MASM>DEBUG↙ 显示- (3)输入程序命令—A↙ 18E4:0100 mov AX, 1111↙ 18E4:0104 mov BX, 1234↙ 18E4:0106 ADD AX, BX↙ 18E4:0108 ↙ (4)运行程序命令 A: 单步执行显示—T↙ 查看并记录相关存放器的内容,及有关条件码的状态 例AX BX CX,CS IP DS 等 -t↙ 同上步 -t↙ 同上步 得出结论:" -t=100↙ 同上步 结论此指令同上步有何不同"100的含义是什么" -t=100,n↙(实际-T=100,3) 同上步 结论:此指令中的3有何含义"应如何应用" B: 第二种执行命令G -G=100, 108↙ 记录各存放器及各条件码的状态 结论(1)此命令的100, 108的含义是什么" (2)说明T与G命令的异同. (5)存盘操作 -N C:CC -R BX↙ 显示:BX 0034

:0000↙ -R CX↙ CX 0000↙ :0008↙ -W [指定存贮区] 注:如不指定,那么数据从CS:0100开场写入〔BX,CX〕个字节数到指定的文件中。 记录屏幕显示的内容 -Q↙退出到DOS状态 F:\stu\MASM>dir c:cc↙ 查看是否存盘,文件字节数? 〔6〕装入文件命令>DEBUG↙ -N c:cc↙ -L(指定装入的存贮区)如未指定,那么装入cs:100开场的存贮区 (7)反汇编-U〔指定存贮区〕要同L中的存贮区一样,屏幕显示的内容是否是刚刚装入的文件内容?〔8〕显示存贮单元命令-D〔指定存贮区〕 例-D 100 132↙ 观察结果,说明D与U命令的区别。 〔9〕其它命令: 1、修改存贮单元的命令E A:用给定的内容来替代指定范围的存贮单元的内容 -D DS:100↙ -E DS:100 F3 ‘X Y Z’8D↙ -D DS:100↙ 查看是否修改3 B:用逐个单元相继修改 -E DS:100↙ 可能显示18E4:0100 89 78 再按"空格〞键可接着显示下一个单元的内容,可继续修改直到用↙完毕 2、填写命令F -F 4234:0100 L 5 F3 ‘X Y Z’8 D 记录显示内容 五、实验报告要求 〔1〕如何启动,退出DEBUG。 〔2〕整理各个DEBUG命令的使用方法,实际例如及执行结果。 实验二、利用DEBUG验证相关汇编指令 一、实验目的 〔1〕利用DEBUG掌握有关的命令 〔2〕利用DEBUG运行简单的程序段 二、实验内容 〔1〕利用DEBUG验证乘法、除法、加法、减法、带进位加、带借位减,堆栈操作指令,串操作指令的功能。 三、实验准备 〔1〕仔细阅读本周所讲的相关汇编指令,以及例如,事先准备好使用的例子。 四、实验步骤

汇编语言程序设计实验七文件操作

实验报告 一、目的及要求 1、掌握文件的建立、打开、关闭的方法。 2、掌握文件的读写方法。 3、建立一个文件,存放到指定的路径下,理解文件代号的作用。 4、将内存某区域AREA1中的内容写入该文件。 二、实验准备 认真复习第六章。 三、实验内容 1、编写程序,在D盘根目录下建立一个名为TEST1.TXT和TEST2.TXT的文件,建立成功后,在TEST1.TXT文件中写入写入入你的学号,在TEST2.TXT中写入‘Hello!’。并且在屏幕上显示“SUCCESS”。 2、打开FILE1.TXT文本文件,将文件的内容通过显示器显示出来。 3、打开前题中的两个文件,将TEST1.TXT的内容append 到TEST2.TXT,并显示TEST2.TXT。 四、源程序

1. INCLUDE YLIB.H DATA SEGMENT FILE1 DB 'D:\TEST1.TXT',0 FILE2 DB 'D:\TEST2.TXT',0 HANDLE1 DW ? HANDLE2 DW ? DTA1 DB ? DTA2 DB ? MESS1 DB 0DH,0AH, 'input text please:$' MESS2 DB 0DH,0AH,'FAIL TO WRITE!$' SUCCESS DB 0DH,0AH,' SUCCESS! $' DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA START: MOV AX, DATA MOV DS, AX

LEA DX, FILE1 MOV CX, 0 MOV AH, 3CH INT 21H MOV HANDLE1, AX LEA DX, FILE2 MOV CX, 0 MOV AH, 3CH INT 21H MOV HANDLE2, AX NEXT1: LEA DX , MESS1 MOV AH, 09H INT 21H LEA DX, DTA1 MOV BX, HANDLE1

相关文档