汇编器实验报告doc

合集下载

【实验】汇编实验报告

【实验】汇编实验报告

【关键字】实验实验一汇编程序的汇编及运行1.实验目的和要求(1)熟悉汇编程序的汇编、连接、执行过程(2)生成LST文件,查看LST文件(3)生成OBJ文件,修改语法错误(4)生成EXE文件(5)执行2.实验环境IBM—PC机及其兼容机实验的软件环境是:操作系统:DOS 2.0以上;调试程序:;文本编程程序:EDIT.EXE、WPS.EXE;宏汇编程序:MASM.EXE(或ASM .EXE);连接装配程序:LINK .EXE;交叉引用程序:CREF.EXE(可有可无)。

3.实验内容及实验数据记录(1)将数据段输入,取名1.txt,保存在MASM文件夹下。

生成LST文件,(不必连接、运行)用EDIT查看1.LST文件。

试回答:DA1,DA2的偏移量分别是多少?COUNT的值为多少?DA TA SEGMENTORG 20HNUM1=8NUM2=NUM1+10HDA1 DB ‘IBM PC’DA2 DB 0AH, 0DHCOUNT EQU $-DA1DATA ENDSEND(2)输入有错误的文件,修改错误语句。

(MASM没有出现错误即可。

不必连接、运行。

)DA TA SEGMENTV AR1 DB 0, 25, ODH, 300V AR2 DB 12H, A4H, 6BHV AR3 DB ’ABCDEF’V AR4 DW 1234H, 5678HV AR5 DW 10H DUP(?)DATA ENDSCODE SEGMENTASSUME CS: CODE, DE: DA TABEING MOV AX, DA TAMOV DS, AXLEA SI, V AR5MOV BX, OFFSET V AR2MOV [SI], 0ABHMOV AX, V AR1+2MOV [BX], [SI]MOV V AR5+4, V AR4MOV AH, 4CHINT 21HCODE ENDSEND START(3)输入正确的程序,汇编、连接、运行STACKS SEGMENT STACKDW 128 DUP(?)STACKS ENDSDATAS SEGMENTSTRING DB ‘WELCOME!’, 13, 10, ‘$’DATAS ENDSCODES SEGMENTASSUME CS: CODES, DS: DATAS START:MOV AX, DA TASMOV DS, AXLEA DX, STRINGMOV AH, 9INT 21HMOV AH, 4CHINT 21HCODES ENDSEND START 1.算法描述及实验步骤1.(1)生成1.st文件(2)用EDIT查看文件2.修改后正确算法:DATA SEGMENTV AR1 DB 0, 25, 0DH, 30V AR2 DB 12H, 0A4H, 6BHV AR3 DB 'ABCDEF'V AR4 DW 1234H, 5678HV AR5 DW 10H DUP(?)DATA ENDSCODE SEGMENTASSUME CS: CODE, DS: DATA BEING: MOV AX, DATAMOV DS, AXLEA SI, V AR5MOV BX, OFFSET V AR2MOV byte ptr[SI], 0ABHMOV AL, V AR1+2MOV AX, [SI]MOV [BX], AXMOV AX, V AR4MOV V AR5+4, AXMOV AH, 4CHINT 21HCODE ENDSEND BEING5.调试过程1.程序没有错误,结果:2.程序运行出现错误:问题及改正:(1). 2.asm(2): error A2009: Symbol not defined: ODH 表示没有定义ODH;出错语句VAR1 DB 0, 25, ODH, 300,这里的 ODH应该为 16进制数的0DH。

完整word版,汇编实验报告,推荐文档

完整word版,汇编实验报告,推荐文档

实验一(1)熟悉汇编语言程序调试环境及顺序程序设计一、实验目的及要求:1.学习及掌握汇编语言源程序的书写格式和要求,明确程序中各段的功能和相互之间的关系。

2.学会使用EDIT、MASM、LINK、DEBUG等软件工具。

3.熟练掌握在计算机上建立、汇编、连接、调试及运行程序的方法。

二、熟悉汇编语言程序调试环境1.汇编语言源程序的建立本例中给出的程序是要求从内存中存放的10个无符号字节整数数组中找出最小数,将其值保存在AL寄存器中。

设定源程序的文件名为ABC。

DATA SEGMENTBUF DB 23H,16H,08H,20H,64H,8AH,91H,35H,2BH,7FHCN EQU $-BUFDATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART: PUSH DSXOR AX,AXPUSH AXMOV AX,DATAMOV DS,AXMOV BX,OFFSET BUFMOV CX,CNDEC CXMOV AL,[BX]INC BXLP: CMP AL,[BX]JBE NEXTMOV AL,[BX]NEXT: INC BXDEC CXJNZ LPMOV AH,4CHINT 21HCODE ENDSEND START键入以下命令:C:\>EDIT ABC.ASM此时屏幕的显示状态如图1所示。

图1 用EDIT编辑ABC.ASM程序窗口程序输入完毕后一定要将源程序文件存入盘中,以便进行汇编及连接,也可以再次调出源程序进行修改。

2.将源程序文件汇编成目标程序文件一般情况下,MASM汇编程序的主要功能有以下3点:(1)检查源程序中存在的语法错误,并给出错误信息。

(2)源程序经汇编后没有错误,则产生目标程序文件,扩展名为.OBJ。

(3)若程序中使用了宏指令,则汇编程序将展开宏指令。

源程序建立以后,在DOS状态下,采用宏汇编程序MASM对源程序文件进行汇编,其操作过程如图2所示。

汇编语言实验报告一.doc

汇编语言实验报告一.doc

汇编语言实验报告(实验一)一.实验目的1.掌握汇编语言程序的上机步骤;(1)用编辑程序(如EDIT、记事本等)编辑汇编语言源程序(建立.ASM文件)。

(2)用MASM程序产生OBJ文件。

(3)用LIINK程序产生EXE文件。

(4)程序的运行(用DEBUG或在DOS下直接运行)。

2.掌握DEBUG的使用方法。

二.程序说明1.在数据段DATA中有两个数据X和Y,假设X=1122H,Y=3344H,编程求两个字的和,结果存放到Z单元中。

2.从SOURCE_BUFFER单元开始存放了20个字母A,编程将这个20个字母A 的字符串传送到DEST_BUFFER开始的单元中。

3.从SOURCE_BUFFER单元开始存放了20个字母A,编程将这个20个字母A 的字符串向下移10个单元。

三.设计思想1、将1122H和3344H分别存放在双字x,y中,定义双字Z,x,y带进位相加放入Z中。

2、定义数据段source_buffer,把数据段地址放入ds寄存器,定义附加段extra_buffer,把附加段地址放入es寄存器,移动整个字符串。

3、定义数据段附加段,先移高位,这样要移20次。

四.程序代码1、DATA SEGMENTX DW 1122HY DW 3344HZ DW ?DATA ENDS ;数据段定义结束STACK SEGMENT ;堆栈段定义开始DW 40 DUP(0)STACK ENDS ;堆栈段定义结束CODE SEGMENT ;代码段定义结束ASSUME CS:CODE,SS:STACK,DS:DATASTART: MOV AX,DATAMOV DS,AX ;设置数据段的开始地址MOV DX,XADC DX,YMOV Z,DXMOV AH,4CH ;返回DOCINT 21HCODE ENDSEND START2、DATA SEGMENT ;定义数据段SOURCE_BUFFER DB 20 DUP(‘a’) ;定义个小写a DATA ENDSEXTRA SEGMENT ;定义附加段DEST_BUFFER DB 20 DUP(?)EXTRA ENDSCODE SEGMENT ;定义代码段MAIN PROC FARASSUME CS:CODE,DS:DATA,ES:EXTRASTART:PUSH DSSUB AX,AXPUSH AXMOV AX,DATAMOV DS,AXMOV AX,EXTRAMOV ES,AXLEA SI,SOURCE_BUFFERLEA DI,DEST_BUFFERCLDMOV CX,20REP MOVSB ;移动整个串RET ;返回到DOSMAIN ENDPCODE ENDSEND START3、DATA SEGMENT ;定义数据段SOURCE_BUFFER DB 20 DUP(‘a’) ;定义个小写a DATA ENDSEXTRA SEGMENT ;定义附加段DEST_BUFFER DB 20 DUP(?)EXTRA ENDSCODE SEGMENT ;定义代码段MAIN PROC FARASSUME CS:CODE,DS:DATA,ES:EXTRASTART:PUSH DSSUB AX,AXPUSH AXMOV AX,DATAMOV DS, AXMOV AX, EXTRAMOV ES, AXLEA SI, SOURCE_BUFFERLEA DI,DEST_BUFFERCLDMOV CX,20REP MOVSB ;移动整个串RET ;返回到DOSMAIN ENDPCODE ENDSEND START五.结果分析并回答:1.设计的程序包含了几个段第1段包含数据段、堆栈段、代码段第2、3个包含数据、附加段、代码段2.你的代码经过编译和连接之后,总共占用多少个字节第1、2个占30个字节,第3个占32个字节3.调用DEBUG进行反汇编,查看程序的第一条指令的地址码是多少?最后一条指令的地址码是多少?程序1第一条指令:1454:000 BB4B14 MOV AX,144B最后一条指令:1451:001E 807F0400 CMP BYTE PTR [BX+04],00程序2第一条指令:1450:0000 1E PUSH DS最后一条指令:1450:001E 8B0? MOV AX,[BX]程序3第一条指令:144D:0000 1E PUSH DS最后一条指令:144D:0020 8B5702 MOV DX,[DX+02]。

汇编语言实验报告

汇编语言实验报告

汇编语言实验报告
1. 实验简介
本次实验是针对汇编语言的学习和实践,在实验中,我们将学习如何使用汇编语言编写程序、调试程序,并通过一系列实例来练习和巩固所学知识。

2. 实验目的
(这一部分可以根据实际情况来写,列举实验的具体目的和要求)
3. 实验环境及工具
(介绍实验所使用的软件环境和工具,如:编译器、调试器)
4. 实验步骤
(根据实验内容具体描述实验步骤,可以分为多个小节)
4.1 准备工作
在开始实验之前,需要进行一些准备工作,包括安装编译器、创建工作环境等。

4.2 实验一:简单的汇编程序
本实验通过编写一个简单的汇编程序来熟悉汇编语言的基本语法和指令集,包括数据传送、算术运算、逻辑运算等。

4.3 实验二:汇编程序的调试
在实验二中,我们将学习如何使用调试器对汇编程序进行调试,包括设置断点、查看变量值、单步执行等操作。

4.4 实验三:汇编程序的优化
本实验将通过优化代码来提高程序的执行效率,包括减少指令的使用、优化循环结构等。

5. 实验结果与分析
(对实验的结果进行总结和分析,可以包括程序的输出结果、性能分析等)
6. 实验总结
(针对本次实验的收获和心得体会进行总结,可以包括对汇编语言的理解、解决问题的思路等)
7. 实验感想
(对本次实验的感想和建议,如实验过程中遇到的困难、改进的方向等)
8. 参考文献
(列出本报告中所引用的参考文献)
注:该文章只是按照题目提示给出了一个大致的框架和构思,实际根据具体的实验内容和要求来编写每个小节的详细内容。

希望对你有所帮助!。

汇编实验报告(适合初学者)

汇编实验报告(适合初学者)

汇编实验报告(适合初学者)汇编语言程序设计一、实验目的与要求1.熟悉汇编语言运行、调试环境及方法。

2.掌握简单汇编语言程序的设计方法。

3.熟悉调试工具DEBUG,并运用DEBUG工具调试程序。

二、实验内容根据下列要求,编写汇编源程序,汇编连接汇编源程序,并利用DEBUG工具调试程序,验证程序的正确性。

1.若X、Y、R、W是存放8位带符号数字节单元的地址,Z是16位字单元的地址。

试编写汇编程序,完成Z<-((W-X)/5-Y)某(R+2)①.程序算法流程图。

开始初始化AL=(W-X)AL=(W-X)/5CL=(W-X)/5-YAL=(R+2)Z=((W-X)/5-Y)某(R+2)结束②.源程序清单。

DATASEGMENTXDB1H;数据定义YDB0HRDB3HWDB6HZDW?DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATASTART:MOVAX,DATAMOVDS,AX;段寄存器定义MOVAL,WSUBAL,X;求(W-X)CBW;字节转换为字MOVCL,5IDIVCL;(W-X)/5MOVCL,ALMOVAL,Y;(W-X)/5-YSUBCL,ALMOVAL,RADDAL,2;(R+2)IMULCL;((W-X)/5-Y)某(R+2)MOV[Z],AXADDAL,30H;输出结果MOVDL,AL;MOVAH,2INT21HMOVAH,4CHINT21HCODEENDSENDSTART③.程序运行结果。

④.调试过程中遇到的问题和解决的方法。

还未能实现动态的输入数据,对指令的不熟悉,以至于在程序中经常性出错,得掌握固定的程序功能。

2.试编写一个程序,测试数是否是奇数。

如该数是奇数,则把DL的第0位置1,否则将该位置0。

①.程序算法流程图。

开始AL=XAL右移一位得CF否CF==1是DL与000000001B相或DL与11111110B相与结束②.源程序清单。

DATASEGMENTXDB9H;数据定义DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATASTART:MOVAX,DATAMOVDS,AX;段寄存器定义MOVAL,XSHR AL,1;利用右移一位得到cf值,JB判断 JB NEXT;为1则为奇数ANDDL,11111110B;偶数DL第一个数置为0JMPEXITNEXT:ORDL,000000001B;奇数DL第一个数置为1EXIT:MOVAH,4CHINT21HCODEENDSENDSTART③.程序运行结果。

汇编实验报告

汇编实验报告

实验三:汇编语言程序设计2——分支程序、循环程序设计1、实验目的掌握分支程序、循环程序设计基本方法2、实验内容分支程序设计:(二选一)1、编写程序,键入学生成绩(百分制),按A、B、C、D显示在屏幕上。

2、编写一程序,比较两个字符串所含字符是否相等,如果相等,在屏幕上显示“Y”,反之显示“N”。

循环程序设计:(二选一)1、设有一段文字,编写一段程序查找字母a出现的次数,并显示在屏幕上。

2、编写程序,求出100以内既能被2整除又能被3整除的数,存入定义好的数组中。

3、实验报告要求(1)给出源程序,并加上适当注释。

(2)给出流程图,并有适当的文字说明。

(3)结果抓图编写一程序,比较两个字符串所含字符是否相等,如果相等,在屏幕上显示“Y”,反之显示“N”。

DATAS SEGMENTSTRING1 DB '12345'STRING2 DB '12345'YSTR DB 'Y$'NSTR DB 'N$'DATAS ENDSCODES SEGMENTMAIN PROC FARSTART:PUSH DSSUB AX,AXPUSH AXMOV AX,DATASMOV DS,AXMOV ES,AXCALL DOCHACKRETMAIN ENDPDOCHACK PROC NEARLEA DI,STRING1LEA SI,STRING2MOV CX,5REPZ CMPSBJCXZ CS_PRINTJMP CNS_PRINT CNS_PRINT:LEA DX,NSTRCALL DOPRINTRETCS_PRINT:LEA DX,YSTRCALL DOPRINTRETDOPRINT PROC NEARMOV AH,9INT 21HRETDOPRINT ENDPCODES ENDSEND START设有一段文字,编写一段程序查找字母a出现的次数,并显示在屏幕上。

汇编实验一实验报告

汇编实验一实验报告

汇编实验⼀实验报告汇编语⾔程序设计实验报告课程名称汇编语⾔程序设计班级姓名学号指导教师汇编语⾔程序设计实验⼀DEBUG 程序使⽤技巧1.寄存器和内存开始Debug 程序。

输⼊“Q ” 退出程序。

再次启动Debug。

输⼊“r ”来显⽰CPU的当前状态和寄存器中的当前内容。

输⼊“r AX ”和“1234”,AX 寄存器中的内容变为1234。

输⼊“r DS ”和“2000”,DS 寄存器中的内容变为2000。

输⼊“d DS:1000 ”来显⽰数据段中80H 字节数据,把数据抄在这⾥:输⼊“f DS:1000 1100 77 ”再显⽰⼀次这80H 字节。

判断这条指令的作⽤是什么?答:从DS:1000地址七,将1100H字节的内容赋值为77H再输⼊“d 2000:1000 ”来显⽰数据段中80H 字节数据。

观察与前⾯的数据有⽆不同。

输⼊“d 1900:0100 ”和“d 1ff0:0100 ”来显⽰两个存储段中的内容。

⽐较其中2000:0000 段中的数据。

相同段落中的数据相同么?根据你的观察,得出结论,是否程序员可以⽤不同的段起始地址和偏移量组合,把不容内容存⼊相同的内存段中。

答:相同段落中的数据相同, 程序员可以⽤不同的段起始地址和偏移量组合,把不容内容存⼊相同的内存段中。

2.输⼊机器码,使⽤单步和断点退出Debug,再重新启动Debug。

输⼊“r ”观察CPU 的状态,下⼀条指令是什么?答:下⼀条指令是ADD [BX+SI],AL使⽤两种⽅式输⼊⼀段程序,第⼀种⽅式:直接输⼊机器码。

输⼊“u ”来显⽰程序段中的指令序列。

然后输⼊“d CS:100 ” 来显⽰代码段中的数据。

观察显⽰内容。

“u CS:100 106 ”做反汇编,就是显⽰出汇编语句。

将这⼏句汇编语句记录下来:使⽤输⼊“r ”观察CPU 的状态,使⽤“t ”来跟踪程序,直⾄最后⼀条指令执⾏完毕。

注意,跟踪程序前,要让IP 寄存器中的值是100H。

汇编实验报告

汇编实验报告

汇编实验报告一、实验目的本次汇编实验的主要目的是深入理解计算机底层的工作原理,掌握汇编语言的基本语法和编程技巧,能够运用汇编语言编写简单的程序来实现特定的功能。

通过实践操作,提高对计算机体系结构的认识,培养解决实际问题的能力。

二、实验环境本次实验使用的操作系统为 Windows 10,汇编语言编译器为MASM 615。

三、实验内容(一)数据传送与算术运算1、编写程序实现将两个 16 位的整数相加,并将结果存储在指定的内存单元中。

2、实现数据在不同寄存器和内存单元之间的传送。

(二)逻辑运算与移位操作1、对给定的两个字节数据进行逻辑与、或、异或操作,并观察结果。

2、进行移位操作,包括左移和右移,理解移位对数据的影响。

(三)循环与分支结构1、利用循环结构计算 1 到 100 的整数之和。

2、根据给定的条件,使用分支结构实现不同的操作。

(四)子程序调用1、编写一个子程序,实现两个数的乘法运算。

2、在主程序中调用该子程序,并输出结果。

四、实验步骤(一)数据传送与算术运算1、打开 MASM 编译器,新建一个汇编源文件。

2、使用`MOV` 指令进行数据传送,将两个整数分别存储在寄存器`AX` 和`BX` 中。

3、使用`ADD` 指令将两个数相加,结果存储在`CX` 寄存器中。

4、最后,使用`MOV` 指令将结果存储到指定的内存单元。

(二)逻辑运算与移位操作1、在源文件中定义两个字节变量,并初始化其值。

2、使用逻辑运算指令(如`AND`、`OR`、`XOR`)对这两个变量进行操作。

3、使用移位指令(如`SHL`、`SHR`)对变量进行移位,并观察结果。

(三)循环与分支结构1、对于循环结构,使用`LOOP` 指令实现从 1 到 100 的累加。

2、在分支结构中,根据给定的条件(如比较两个数的大小),使用`JZ`、`JL` 等指令执行不同的分支操作。

(四)子程序调用1、定义一个子程序,使用参数传递的方式接收两个数,并进行乘法运算。

汇编实验报告

汇编实验报告

汇编实验报告概述:本次实验主要通过汇编语言的学习和实践,加深对汇编语言的理解并掌握其基本操作和使用方法。

我们使用了x86汇编语言,以及相关的工具和环境。

一、实验背景汇编语言是计算机底层的一种编程语言,通过对计算机底层指令的直接操作,可以实现对硬件的控制。

汇编语言是学习高级编程语言的基础,也是了解计算机运行机理的关键。

二、实验目的1. 理解汇编语言的基本原理和特点;2. 掌握汇编语言的基本指令和语法;3. 学会使用汇编语言进行简单的程序设计和调试。

三、实验环境和工具1. 操作系统:Windows 10;2. 开发工具:MASM(Microsoft Macro Assembler);3. 测试工具:DOSBox。

四、实验过程1. 安装和配置实验环境首先,我们需要安装和配置MASM和DOSBox。

MASM是一款由微软开发的汇编语言开发工具,通过它可以将汇编语言代码转化为可执行文件。

DOSBox是一个模拟DOS环境的工具,能够在现代操作系统上运行旧版的DOS程序。

2. 学习和练习基本指令接下来,我们通过学习和练习基本指令,来掌握汇编语言的基本用法。

我们开始学习如何在汇编语言中定义和初始化变量,以及如何进行算术运算和逻辑运算。

同时,我们还学习了如何使用循环和条件语句。

3. 编写和运行简单程序在掌握了基本指令之后,我们开始编写一些简单的程序,并通过MASM将其转化为可执行文件。

我们编写了一个通过计算两个数的和来演示算术运算的程序,并使用DOSBox来运行这个程序,观察其运行结果。

4. 调试和优化程序在运行程序的过程中,我们发现了一些问题和bug。

我们使用调试工具对程序进行调试,通过逐步执行代码并观察变量的值来发现问题所在。

我们找到了一个变量定义错误的bug,并进行了修复。

此外,我们还通过代码优化来提高程序的性能和效率。

五、实验结果和分析经过一系列的实验和练习,我们成功地掌握了汇编语言的基本操作和使用方法。

我们能够编写简单的汇编程序,并通过MASM将其转化为可执行文件。

实验四(报告)汇编语言编程的软件实训(实验报告)

实验四(报告)汇编语言编程的软件实训(实验报告)

实验四汇编语言编程实验报告
专业:班级:学号:姓名:
一.实验目的
熟悉汇编语言的编辑(如、QE.EXE及记事本等),汇编(MASM.EXE),连接(LINK.EXE)以及调试(DEBUG.EXE)软件。

二.实验设备
硬件环境:IBM/PC及其兼容机
软件环境:操作系统DOS 2.0版本以上;
汇编语言的编辑程序(如EDIT、QE、Windows操作系统自带的记事本等)、
汇编程序程序MASM、连接程序LINK及调试程序DEBUG。

三.实验要求
1. 试按下列给定的公式编写程序:编写源程序,参照P232 x1,x2,x3,x4在16位二进制数的范围内,且有意义)
(3*X1-(X2*X3+7*X4-200))/X3
其中,X1, X2, X3, X4为16位带符号数的字变量。

计算结果的商存在AX中,余数存放在DX中。

2.用编辑软件生成扩展名为.ASM的源文件,如:TEST.ASM,ABC.ASM等;
3.用汇编程序MASM.EXE对已编辑的源文件进行汇编并生成扩展名为.OBJ的目标程序名,如:TEST.OBJ,ABC.OBJ等;
4.用连接程序LINK.EXE进行连接生成扩展名为.EXE的可执行文件,如:TEST.EXE,ABC.EXE等;
5.应用调试程序DEBUG.EXE的主要命令对所生成的可执行文件进行调试。

四.实验过程及结果:
1.汇编生成目标文件结果如下:
2.连接生成可执行程序结果如下:
3.调试结果FUN的值为:
四.课后设计题:1.源程序:
2.计算结果:。

汇编实验报告一实验总结

汇编实验报告一实验总结

汇编实验报告一实验总结
实验报告一:汇编实验总结
实验目的:通过汇编实验,掌握汇编语言的基本语法和编程技巧,加深对计算
机底层工作原理的理解。

实验过程:在实验中,我们首先学习了汇编语言的基本语法和指令格式,包括
寄存器的使用、内存地址的访问、算术运算和逻辑运算等。

随后,我们进行了
一系列的编程练习,包括编写简单的程序来实现加法、乘法、比较大小等功能。

在实验的最后阶段,我们还学习了如何调用系统中断来实现输入输出操作。

实验结果:通过本次实验,我们深入了解了汇编语言的编程技巧和应用场景。

我们不仅掌握了汇编语言的基本语法,还学会了如何编写简单的汇编程序来实
现一些基本的功能。

同时,通过实验,我们对计算机底层的工作原理有了更深
入的理解,对计算机系统的运行机制有了更清晰的认识。

实验总结:本次汇编实验让我们深入了解了汇编语言的基本知识和编程技巧,
为我们今后的学习和工作打下了坚实的基础。

通过实验,我们不仅学会了如何
使用汇编语言编写程序,还对计算机系统的底层工作原理有了更深入的理解。

希望在今后的学习和工作中,我们能够继续深入研究汇编语言,不断提高自己
的编程水平,为计算机科学技术的发展贡献自己的力量。

汇编实验报告3

汇编实验报告3

汇编实验报告3汇编实验报告3引言:汇编语言是一种低级语言,用于编写计算机程序。

在本次实验中,我们将继续学习和实践汇编语言的基本概念和技术。

本报告将详细记录我们在实验过程中所遇到的问题、解决方案和实验结果。

实验目的:本次实验的主要目的是加深对汇编语言的理解,并通过实践掌握汇编语言的基本操作和调试技巧。

通过完成实验,我们将能够编写简单的汇编程序,理解程序的执行过程和内存的使用。

实验环境:本次实验使用的是x86架构的计算机,并使用MASM汇编器进行程序的编译和链接。

我们还使用了调试器来跟踪程序的执行过程。

实验步骤:1. 阅读实验指导书和相关资料,了解本次实验的要求和目标。

2. 编写一个简单的汇编程序,实现两个数的相加功能。

程序首先要求用户输入两个数,然后将其相加并输出结果。

3. 使用MASM汇编器将程序源代码编译成目标文件。

4. 使用链接器将目标文件与运行时库链接,生成可执行文件。

5. 运行程序,并验证程序的正确性。

如果程序不能正常工作,使用调试器进行调试,找出问题的原因并进行修复。

6. 记录实验结果和遇到的问题,撰写实验报告。

实验结果:我们编写了一个简单的汇编程序,成功实现了两个数的相加功能。

程序能够正确地接收用户输入的两个数,并将其相加后输出结果。

我们通过多次测试,验证了程序的正确性。

实验中遇到的问题及解决方案:在实验过程中,我们遇到了一些问题,下面是其中的两个例子以及我们的解决方案:1. 问题:在程序运行过程中,无法正确接收用户输入的数值。

解决方案:我们仔细检查了程序的输入部分,发现在读取用户输入时,没有正确设置输入缓冲区的大小。

通过增大缓冲区的大小,我们成功解决了这个问题。

2. 问题:程序输出的结果不正确。

解决方案:我们使用调试器跟踪程序的执行过程,发现在进行相加操作时,寄存器的值被错误地覆盖了。

经过进一步的调试,我们发现这是因为在进行相加操作之前,没有正确地保存寄存器的值。

通过添加保存和恢复寄存器值的代码,我们成功解决了这个问题。

汇编实验一 实验报告

汇编实验一 实验报告

实验一查看CPU和内存用机器指令和汇编指令编程
一、实验目的
1.掌握debug的使用方法,会用基本的D,R命令查看、显示内存和寄存器
2.了解汇编指令编程的方法。

二、实验任务
1检查在存储器低端的BIOS数据区的内容。

(1)检查串行与并行端口
(2)检查系统设备
(3)检查键盘Shift状态
(4)检查显示状态
2 考察ROM BIOS
目的:检查在存储器高端的ROM BIOS中的数据。

(1)检查版本通告
(2)检查ROM BIOS数据
3.用D、R命令查看、显示内存和寄存器,可对寄存器内容进行修改。

三、实验结果及分析
1、检查在存储器低端的BIOS数据区的内容
(1)检查串行与并行端口
说明:检查后发现有四个串行端口,分别是03F8、02F8、03E8、02E8;并行端口也有四个,分别是03BC、03BC、0378、0278、9FC0
(2)检查系统设备
(3)检查键盘Shift状态
(4)检查显示状态
2、考察ROM BIOS (1)检查版本通告
(2)检查ROM BIOS数据
3、用D、R命令查看、显示内存和寄存器,可对寄存器内容进行修改
四、实验总结(心得、体会)
1、通过对检查在存储器低端的BIOS数据区的内容的查看,可以了解计算机的各种状态,而考察ROM BIOS可以鉴定计算机的出厂信息。

2、通过用D、R命令查看、显示内存和寄存器,可以了解计算机运行的过程步骤,并且可以通过偏移地址读取内容。

3、在读取时需要注意的是,在DEBUG显示中是低位至高位的显示,而我们需要的是高位至低位的显示方式,所以在操作时对于双字节的读取,需要将前后字节地址内容互换。

汇编上机实验报告

汇编上机实验报告

汇编上机实验报告实验名称:汇编上机实验报告1. 实验目的通过完成汇编上机实验,掌握汇编语言的基本概念和语法规则,理解计算机底层运行的原理,加深对计算机体系结构的理解。

2. 实验环境硬件环境:个人电脑一台,操作系统为Windows 10软件环境:MASM汇编语言开发工具(Microsoft Macro Assembler)、DOSBox模拟器3. 实验内容及步骤3.1 实验一:汇编程序基本框架搭建步骤:(1) 在MASM环境下创建一个新的汇编源文件,命名为"lab1.asm"。

(2) 在源文件中编写汇编程序的基本框架,包括段定义、数据定义和代码段等。

(3) 使用MASM汇编器将源文件编译为目标文件。

(4) 使用链接器将目标文件连接为可执行程序。

(5) 在DOSBox模拟器中执行可执行程序,观察程序输出结果。

3.2 实验二:实现简单的数值运算步骤:(1) 按照实验一的步骤,在MASM环境下创建一个新的汇编源文件,命名为"lab2.asm"。

(2) 在源文件中编写汇编程序,实现两个数的相加、相减、相乘和相除等简单的数值运算。

(3) 使用MASM汇编器将源文件编译为目标文件。

(4) 使用链接器将目标文件连接为可执行程序。

(5) 在DOSBox模拟器中执行可执行程序,输入两个数值,观察程序计算结果。

3.3 实验三:字符串处理步骤:(1) 按照实验一的步骤,在MASM环境下创建一个新的汇编源文件,命名为"lab3.asm"。

(2) 在源文件中编写汇编程序,实现字符串的输入、输出和处理。

(3) 使用MASM汇编器将源文件编译为目标文件。

(4) 使用链接器将目标文件连接为可执行程序。

(5) 在DOSBox模拟器中执行可执行程序,输入一个字符串,观察程序对字符串的处理结果。

4. 实验结果与分析实验一:汇编程序基本框架搭建在DOSBox模拟器中成功执行了汇编程序,没有出现任何错误提示,并得到了预期的输出结果。

汇编实验一实验报告

汇编实验一实验报告

汇编实验一实验报告一、实验目的1.了解汇编语言的基本概念和基本语法。

2.掌握常见汇编指令的使用方法。

二、实验器材1.计算机一台。

2.汇编语言开发环境。

三、实验原理和方法1.汇编语言是低级程序语言,是计算机可以直接识别并执行的语言。

2.汇编语言采用助记符表示计算机指令,并且每一条汇编指令都对应一条机器指令。

四、实验过程及结果1.编写一个汇编程序,实现将两个数相加并输出结果的功能。

2.打开汇编语言开发环境,创建一个新的源文件。

3.在源文件中编写汇编程序,并保存。

4.汇编程序的伪指令section .data用于定义数据段,section .text用于定义代码段。

5.使用汇编指令mov将要相加的两个数赋值给寄存器,使用汇编指令add将两个数相加,并将结果保存到一个寄存器中。

6.使用汇编指令mov将结果从寄存器中取出,并输出到屏幕。

7.编译和运行汇编程序,查看结果是否正确。

五、实验结果分析经过编译和运行,实验程序顺利执行,结果正确输出。

通过这个实验,加深了对汇编语言的理解和掌握。

六、实验总结通过本次实验,我了解了汇编语言的基本概念和基本语法,并掌握了常见汇编指令的使用方法。

在实验过程中,我遇到了一些问题,如如何正确使用汇编指令以及如何调试程序等,但在同学和老师的帮助下,我顺利完成了实验,并且收获了很多。

通过这次实验,我深刻认识到汇编语言是一种非常底层的语言,需要对计算机底层原理有一定的了解,才能编写出正确的汇编程序。

同时,我也意识到汇编语言虽然复杂,但它的执行效率非常高,可以在一些特定场景下发挥出很大的作用。

总而言之,本次实验让我对汇编语言有了更深入的了解,也提高了我的编程能力。

希望在以后的学习中能够深入学习汇编语言,并能够熟练地使用它。

汇编语言实验报告

汇编语言实验报告

汇编语言实验报告实验一、汇编运行环境及方法、简单程序设计一、程序说明本程序用来比较两个字符串string1和string2所含的字符是否相同。

若相同’,否则显示‘No match’。

则显示‘Match在程序的数据段先定义两个字符串string1和string2,再定义两个字符串mess1’和‘Nomatch’。

再代码段比较字符串string1和string2,和mess2,分别代表‘Match通过比较判断是否相同。

若相同则显示‘Match’,否则显示‘No match’。

二、调试说明再EDIT中建立ASM文件,再用汇编程序对源程序汇编产生目标文件Obj,再用连接程序产生执行文件EXE。

再用Debug进行调试。

其中常用到的指令有:用-g命令来用运行程序,用-u命令来显示程序,用-d 命令来查看数据段的情况,-e或-f命令来修改需要改正的部分,用-t指令来逐步执行程序,用-r指令来查看寄存用器和修改寄存器的值,-q命令用来退出debug程序。

在这些命令的后面加上地址,可以将命令执行到相应的地方。

如用-g指令运行程序后,再用-u指令显示程序的执行借给如下:若将string2改为'Move the cursor backwards.',程序的其他部分不做改动,执行结果:若将mov cx,25语句改成mov cx,24,结果为:此时少做了一次循环,得到的结果就不正确了。

实验二、用DEBUG编程:使用堆栈段将AX和BX的内容进行交换等一、程序说明本实验包括两个部分,第一个部分是将AX和BX的内容进行交换,并用堆栈作为两寄存器交换内容的中间存储单元;第二部分是用DEBUG的命令将存储器偏移地AH, 0BH,0CH,0DH,0EH。

在DEBUG状态址300H,304H连续单元顺序装入0 下送入给出的程序中。

第一个程序先将AX的内容进栈,然后将BX的内容赋给AX,再将出栈的内容赋给BX即可。

第二个程序是在进入debug后,用-a指令输入给出的程序,然用-r指令安要求修改内存的内容,再用-t指令逐步执行每条指令,看修改的内存内容对指令执行结果的影响。

汇编实验报告,(例文)

汇编实验报告,(例文)

汇编实验报告,(例文)《汇编语言程序设计》实验报告2021年11月★★FGL实验一:汇编语言运行环境及方法、简单程序设计I:实验要求:1、绘制程序流程图2、结合你的调试过程,整理其中用到的debug命令的使用方法和效果截图,并解释每一步骤的结论3、调试中遇到的问题及解决方法 II:具体实验过程:a.程序流程图1、开始输入源程序根据实验步骤进行汇编比较string1与string2输出NO输出Match结束b.调试过程及debug命令使用方法·-u命令反汇编:·-g0b·-d0:查看数据段内容·-g:执行完程序显示结果根据数据段显示的数据内容可知,在;两字符串分别为"Movethecursorbackward."和"Movethecursordackward.",因而可根据debug命令中的-e将第二个字符串中的d修改为b则可使结果显示为MATCH!具体步骤如下:如下图所示,对内存中1436:0029的存储单元进行-e29命令修改的前后数据的显示,可看到已经将d修改为b,从而-g命令运行的结果是Match.(注:-a 和-f命令亦可修改数据区内容但使用时有一定的区别)·-q命令退出debug调试:·-t命令的单步调试:(该过程中IP不断变化着)实验二:用DEBUG编程:使用堆栈段将AX和BX的内容进行交换等I:实验要求:1、任务1的指令序列2、整理本次试验中用到的debug命令的使用方法及效果截图II:实验目的:1、熟练掌握DEBUG的常用命令,学会用DEBUG调试程序。

2、掌握数据在内存中的存放方式和内存操作数的几种寻址方式。

3、掌握简单指令的执行过程。

III:实验内容:任务一、设堆栈指针SP=2021H,AX=3000H,BX=5000H;请编一程序段将AX 和BX的内容进行交换。

请用堆栈作为两寄存器交换内容的中间存储单元,用DEBUG调试程序进行汇编与调试。

汇编实验报告6

汇编实验报告6

汇编实验报告6汇编实验报告6引言:汇编语言是一种底层编程语言,它直接操作计算机硬件,提供了对计算机底层资源的更精确控制。

在本次实验中,我们将继续学习和实践汇编语言的相关知识,探索其在计算机系统中的作用和应用。

一、实验目的本次实验旨在加深我们对汇编语言的理解,并通过实践进一步掌握汇编语言的基本概念、语法和应用。

具体目标如下:1. 掌握汇编语言的基本指令和寻址方式;2. 理解和实现简单的汇编程序;3. 学会使用调试工具调试汇编程序。

二、实验环境本次实验使用的环境为Windows操作系统和MASM汇编器。

在实验开始前,我们需要确保已经正确安装了MASM汇编器,并配置好了相关环境变量。

三、实验过程1. 编写程序本次实验我们将编写一个简单的汇编程序,实现两个数相加并输出结果的功能。

首先,我们需要使用文本编辑器打开一个新的文件,并保存为.asm格式。

接下来,我们将按照汇编语言的语法规则,逐步编写程序。

2. 汇编程序的结构一个标准的汇编程序由三个部分组成:数据段、代码段和堆栈段。

在数据段中,我们定义了需要使用的变量和常量;在代码段中,我们编写了实际的汇编指令;而堆栈段则用于存储程序执行过程中的临时数据。

3. 汇编指令的使用在本次实验中,我们将使用一些常见的汇编指令,如MOV、ADD、SUB等。

这些指令用于操作寄存器、内存和立即数,实现数据的传输、运算和比较等功能。

4. 调试程序编写完汇编程序后,我们需要使用调试工具对程序进行调试,以确保程序的正确性。

调试工具可以帮助我们逐条执行程序,并查看寄存器和内存的变化,从而找出程序中的错误。

四、实验结果与分析经过编写和调试,我们成功地实现了两个数相加并输出结果的功能。

我们可以通过调试工具查看程序执行过程中寄存器和内存的变化,以验证程序的正确性。

同时,我们还可以对程序进行性能分析,了解其在不同输入情况下的执行效率。

五、实验总结通过本次实验,我们深入学习了汇编语言的基本概念和应用。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

汇编器实验报告篇一:汇编实验报告实验一(1)熟悉汇编语言程序调试环境及顺序程序设计一、实验目的及要求:1.学习及掌握汇编语言源程序的书写格式和要求,明确程序中各段的功能和相互之间的关系。

2.学会使用EDIT、MASM、LINK、DEBUG等软件工具。

3.熟练掌握在计算机上建立、汇编、连接、调试及运行程序的方法。

二、熟悉汇编语言程序调试环境1.汇编语言源程序的建立本例中给出的程序是要求从内存中存放的10个无符号字节整数数组中找出最小数,将其值保存在AL寄存器中。

设定源程序的文件名为ABC。

DATA SEGMENTBUFDB 23H,16H,08H,20H,64H,8AH,91H,35H,2BH,7FH CN EQU $-BUFDATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART: PUSH DSXOR AX,AXPUSH AXMOVAX,DATAMOV DS,AXMOV BX,OFFSET BUFMOV CX,CNDEC CXMOV AL,[BX]INC BXLP:CMP AL,[BX]JBE NEXTMOV AL,[BX]NEXT: INC BXDEC CXJNZ LPMOV AH,4CHINT 21HCODE ENDSEND START键入以下命令:C:\>EDIT ABC.ASM此时屏幕的显示状态如图1所示。

1图1 用EDIT编辑ABC.ASM程序窗口程序输入完毕后一定要将源程序文件存入盘中,以便进行汇编及连接,也可以再次调出源程序进行修改。

2.将源程序文件汇编成目标程序文件一般情况下,MASM汇编程序的主要功能有以下3点:(1)检查源程序中存在的语法错误,并给出错误信息。

(2)源程序经汇编后没有错误,则产生目标程序文件,扩展名为.OBJ。

(3)若程序中使用了宏指令,则汇编程序将展开宏指令。

源程序建立以后,在DOS状态下,采用宏汇编程序MASM 对源程序文件进行汇编,其操作过程如图2所示。

图2 MASM宏汇编程序工作窗口汇编过程的错误分警告错误(Warning Errors)和严重错误(Severe Errors)两种。

其中警告错误是指汇编程序认为的一般性错误;严重错误是指汇编程序认为无法进行正确汇编的错误,并给出错误的个数、错误的性质。

这时,就要对错误进行分析,找出原因和问题,然后再调用屏幕编辑程序加以修改,修改以后再重新汇编,一直到汇编无错误为止。

3.用连接程序生成可执行程序文件经汇编以后产生的目标程序文件(.OBJ文件)并不是可执行程序文件,必须经过连接以后,才能成为可执行文件(即扩展名为.EXE)。

2连接过程如图3所示。

图3 LINK连接程序工作窗口上述提示行回答以后,连接程序开始连接,如果连接过程中出现错误,则显示出错误信息,根据提示的错误原因,要重新调入编辑程序加以修改,然后重新汇编,再经过连接,直到没有错误为止。

连接以后,便可以产生可执行程序文件(.EXE文件)。

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

如:C:\>ABC本程序当中没有用到DOS中断调用指令,所以在屏幕上看不到程序执行的结果。

实验二(2)分支及循环程序设计一、实验目的及要求熟练掌握转移指令,掌握分支程序设计的原理和方法 , 重点掌握各种分支程序中形成条件和判断条件的方法和技巧。

掌握循环程序设计的方法(单重循环结构和两重循环结构),正确分配与使用寄存器,根据实际问题选择控制循环的方法(循环次数已知和循环次数未知)。

二、实验内容编写下列程序并调试通过。

1.通过键盘输入一个小写字母,找出对应的前导字母和后续字母,再按顺序显示这三个字母。

2.编写一个程序,要求比较数组ARRAY中的三个16位补码,并根据比较结果在终端上显示如下信息:1)如果三个数都不相等,显示0;2)如果三个数都两个相等,显示1;3)如果三个数都相当,显示2。

33.编写一个程序,要求通过键盘接收一个个位数N,然后显示N个字母‘$’。

4.从键盘上输入一个8位二进制数,在显示器上显示其相应的十六进制数。

(教材P170 习题5)5.要求从键盘上接收一个4位十六进制数,然后再显示器上显示其对应的16位二进制数。

6.用15行*16列的表格形式显示ASCII码为10H-FFH的所有字符。

三、实验设计方案说明实验1流程图:实验完整代码:DATAS SEGMENT;此处输入数据段代码DATAS ENDSSTACKS SEGMENT;此处输入堆栈段代码STACKS ENDSCODES SEGMENTASSUME CS:CODES,DS:DATAS,SS:STACKS;告诉汇编程序哪个是代码段,哪个是数据段,哪个是堆栈段START: MOV AX,DATASMOV DS,AX ;初始化数据段的段地址MOV CL,3L: MOV AH,01H ;输入一个小写字母,常用DOS功能调用,入口参数为AHINT 21HCMP AL,61HJB L(本文来自: 小草范文网:汇编器实验报告) CMP AL,7AHJA LMOV DL,0DH ;回车MOV AH,02H ;常用DOS功能调用,入口参数为AH4;对输入进行判断,确保输入的字符为a~zINT 21HMOV DL,0AH ;换行MOV AH,02HINT 21HSUB BL,01H ;按顺序输出三个字母CMP BL,61H ;判断前导字母是否合法JNB L1 ADD BL,1AH MOV DL,BL MOV AH,02H INT 21HSUB BL,19H JMP L2L1: MOV DL,BL ;输出录入字母的前导字母MOV AH,02H INT 21H INC BLL2: MOV DL,BL ;输出录入字母本身MOV AH,02H INT 21H INC BL CMP BL,7AH ;判断后续字母是否合法 JNA L3 SUB BL,1AHL3: MOV DL,BL ;输出录入字母的后续字母MOV AH,02H ;常用DOS功能调用,入口参数为AH INT 21HINT 21HCODES ENDSEND START5篇二:汇编实验报告课程设计(大作业)报告课程名称:微机原理与汇编语言程序设计设计题目:简单计算器程序设计院系:班级: 12级计算机应用技术1班设计者:陈娟学号:XX110XX6指导教师:周曦设计时间:昆明学院课程设计(大作业)任务书目录1题目分析 ............................................. 5 2基本理论 ............................................. 5 3 总体设计.. (6)3.1 本程序的功能结构图 .............................. 6 3.2字符输入及存储设计 .............................. 8 3.3加、减、乘、除法运算的判断设计 ................. 8 3.4加、减、乘、除法运算的设计 ..................... 9 4实验器材 ............................ 错误!未定义书签。

5方法步骤 ............................ 错误!未定义书签。

6成效分析 ............................ 错误!未定义书签。

6.1运行界面分析 ................... 错误!未定义书签。

6.2调试过程及分析 ................. 错误!未定义书签。

7心得体会 ............................ 错误!未定义书签。

8参考文献 ............................ 错误!未定义书签。

9附录 ................................ 错误!未定义书签。

课程设计(大作业)报告一、题目分析本次设计的简单计算器,主要是为了解决数学中的加、减、乘、除四则运算的问题。

重点和难点主要包括以下几个方面:(1)利用BIOS调用中INT 16H调用中的子程序完成清屏、设置显示方式、设置窗口等操作。

(2)利用INT 21H DOS系统功能调用中的键盘输入接收十进制操作数和运算符由程序完成字符转换为二进制数,并存储起来。

(3)根据运算符完成运算,由程序在屏幕上显示运算结果。

1、十进制数转换为二进制数过程如下:(1)将BX清0.(2)从键盘接收一个按键的ASCII送AL中,并判断是否为0到9之间的字符,若不是转退出;否则将AL中内容减30H,转换为相应数字的二进制数,并扩展到AX中,然后将BX中内容乘以10后,再加上AX中的内容。

(3)转(2)继续执行因此程序退出后,BX中的内容即为所输入十进制数的二进制值。

例如:首先将BX清0后,先输入数字“5”,则(AL)=35H,属于0到9之间的数字,减30H后,(AL)=05H,扩展后,(AX)=0005H,BX乘以10后,加上AX中的内容,(BX)=0005H。

然后输入数字“8”,则(AL)=38H,属于0到9 之间的数字,减30H后,(AL)=38H,扩展后,(AX)=0008H,(BX)乘以10后,加上AX中的内容,(BX)=0037H,为十进制数“58”的二进制值。

十进制数显示过程如下(被显示的数据(1)将被显示的内容送入BX中;(2)BX除以1000,余数送BX,商在AL中,范围为0~9;(3)显示AL中的内容;(4)(BX)除以100,余数送BX,商在AL中,范围为0~9;(5)显示AL中的内容。

以此类推,直到分离出个位数字为止。

在这里有一个特殊问题需要讨论:例如“53”这个十进制数,除以1000除以100的商都为0,不应显示。

为了能够实现高位的“0”不显示,程序中设置一个标志M,初始值都设置为1。

若M=1且商为0,则这个0不现实;若M=1且商不为0,则说明这是第一个非0数字,开始显示,并将M设置为0;若M=0,篇三:汇编实验报告汇编语言实验报告学院:计算机学院专业:网络工程指导老师:纪平实验一汇编语言程序调试方法一、实验目的,1,熟悉汇编语言运行环境和方法 2,了解如何使用汇编语言编制程序 3,熟悉debug有关命令的使用方法 4,利用debug掌握有关指令的功能 5,利用debug运行简单的程序段二、实验内容1,学会输入、编辑汇编语言程序2,学会对汇编语言程序进行汇编、连接和运行 3,进入和退出debug程序4,学会debug中的D命令、E命令、R命令、T命令、A 命令、G命令等的使用。

相关文档
最新文档