北京理工大学汇编语言实验报告一

汇编语言实验报告

实验一 DOS环境下的汇编语言编程环境使用

(基础与验证型)

班级:05211002

姓名:张宁

学号:1120102310

实验日期:2012.9.7晚6:00~9:00

汇编语言实验报告

实验一 DOS 环境下的汇编语言编程环境使用(基础与验证型)

一、实验要求和目的

1、掌握汇编语言程序设计的基本流程和学会上机开发简单程序;

2、熟练掌握宏汇编程序MASM 的使用;

3、熟练掌握连接程序LINK 的使用;

4、熟练掌握DEBUG 的使用;

二、软硬件环境

1、硬件环境:计算机系统windows;

2、软件环境:装有MASM、DEBUG、LINK、等应用程序。

三、实验涉及的主要知识

汇编语言程序设计上机开发过程如图1.1 所示。

四、实验内容与步骤

1、汇编、链接并调试给出的简单程序,找出程序中的错误。

(一)录入并建立汇编语言源程序文件(ASM 文件)

(二)用汇编程序MASM 将ASM 文件汇编成目标程序文件(OBJ 文件)

(三)用连接程序LINK 生成可执行程序文件(EXE 文件)

(四)程序的调试

2、完成程序设计:

分类统计字数组data 中正数、负数和零的个数,并分别存入内存字变量Positive、Negative 和Zero 中,数组元素个数保存在其第一个字中。使用Debug 查看Positive、Negative 和Zero 三个变量的数据。

五、实验过程及结果:

实验一:

1.输入给出的程序

2.运行输入的程序,发现了三处错误:

根据错误提示,发现错误为ADDITION后未打冒号,CMP错打为COM。修改原代码:

改为:

3.代码编译成功,生成OBJ文件,再生成EXE文件,可成功运行。

4.在原程序代码后添加两行代码,以验证ADDITION的逻辑正确性,改动如下:

现实在DA TA1中添加字节型sum ,再将ADDITION的运行结果,从AX送到sum中去。

5.调试发现ADDITION并没用正确运行。检查语句逻辑性发现,应将JAE改成JB,才能

实现累加并终结。

改为:

6.重新进行DEBUG调试:

实验二:

分类统计字数组data 中正数、负数和零的个数,并分别存入内存字变量Positive、Negative 和Zero 中,数组元素个数保存在其第一个字中。使用Debug 查看Positive、Negative 和Zero 三个变量的数据。

1.根据题目要求,编译如下程序:

测试数据为1,1,0,0,0,-1,则应1有2个正数,3个零,1个负数。

2.在DEBUG中调试:

直接用-g36将程序运行到操作归还给DOS系统之前。用-dds:0查看内存状态:

实验感想:

1.由于第一次进行实验,原理和操作上都不熟悉,一开始一头雾水……后来听老师讲和

同学无限讨论,终于搞明白一点。实验回来之后自己又尝试了几次。感觉这门实验需要多做多练多思考,熟能生巧。

2.C语言结课之后再一次产生被电脑耍的感觉。因为电脑不会告诉我们逻辑上的错误它

只能机械地判断语法错误。于是我们不得不面对的纠结问题就是:即使电脑告诉你没错你还是要努力查错!

汇编实验一实验报告

汇编语言程序设计实验报告 课程名称汇编语言程序设计 班级 姓名 学号 指导教师

汇编语言程序设计 实验一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。一直监视AX 和IP 寄存器的内容变化,尤其是标志位的变化。 第二种方式,是输入汇编语句。重启Debug 程序。 先输入“a CS:100 ”,然后输入: MOV AX, FF00 ADD AX,01F0 MOV BX,AX NEG BX ADD AX,BX

北京理工大学汇编语言实验报告一

汇编语言实验报告 实验一 DOS环境下的汇编语言编程环境使用 (基础与验证型) 班级:05211002 姓名:张宁 学号:1120102310 实验日期:2012.9.7晚6:00~9:00

汇编语言实验报告 实验一 DOS 环境下的汇编语言编程环境使用(基础与验证型) 一、实验要求和目的 1、掌握汇编语言程序设计的基本流程和学会上机开发简单程序; 2、熟练掌握宏汇编程序MASM 的使用; 3、熟练掌握连接程序LINK 的使用; 4、熟练掌握DEBUG 的使用; 二、软硬件环境 1、硬件环境:计算机系统windows; 2、软件环境:装有MASM、DEBUG、LINK、等应用程序。 三、实验涉及的主要知识 汇编语言程序设计上机开发过程如图1.1 所示。 四、实验内容与步骤 1、汇编、链接并调试给出的简单程序,找出程序中的错误。 (一)录入并建立汇编语言源程序文件(ASM 文件) (二)用汇编程序MASM 将ASM 文件汇编成目标程序文件(OBJ 文件) (三)用连接程序LINK 生成可执行程序文件(EXE 文件) (四)程序的调试 2、完成程序设计: 分类统计字数组data 中正数、负数和零的个数,并分别存入内存字变量Positive、Negative 和Zero 中,数组元素个数保存在其第一个字中。使用Debug 查看Positive、Negative 和Zero 三个变量的数据。

五、实验过程及结果: 实验一: 1.输入给出的程序 2.运行输入的程序,发现了三处错误:

根据错误提示,发现错误为ADDITION后未打冒号,CMP错打为COM。修改原代码: 改为: 3.代码编译成功,生成OBJ文件,再生成EXE文件,可成功运行。 4.在原程序代码后添加两行代码,以验证ADDITION的逻辑正确性,改动如下: 现实在DA TA1中添加字节型sum ,再将ADDITION的运行结果,从AX送到sum中去。 5.调试发现ADDITION并没用正确运行。检查语句逻辑性发现,应将JAE改成JB,才能 实现累加并终结。 改为: 6.重新进行DEBUG调试:

北京理工大学汇编第四次(分支和循环程序设计实验)报告

北京理工大学汇编第四次(分支和循环程序设计实验)报告 汇编第四次(分支和循环程序设计实验)报告 一、实验要求和目的 1.熟悉汇编语言程序设计结构; 2.熟悉汇编语言分支程序基本指令的使用方法; 3.掌握利用汇编语言实现单分支、双分支、多分支的程序设计方法; 4.了解汇编语言循环程序设计的基本流程; 5.熟悉汇编语言循环基本指令的使用方法; 6.掌握利用汇编语言的循环指令完成循环程序设计方法。 二、软硬件环境 1、硬件环境:计算机系统 windows; 2、软件环境:装有MASM、DEBUG、LINK、等应用程序。 三、实验涉及的主要知识 在实际应用中,经常根据一些条件来选择一条分支执行。汇编语言的条件判断主要是通过状态寄存器中的状态位、无符号数相减或有符号相减产生的结果来进行。 1.无条件转移指令JMP 无条件转移指令JMP是使程序无条件转移至目标处,又分为段内转移、段间转移。 2.条件转移指令JXX 条件转移指令可分为三大类: 1).简单条件转移指令。根据单个标志位的状态判断转移条件。下表表 示条件转移指令标志位的状态: 2).无符号数条件转移指令。 假设在条件转移指令前使用比较指令,比较两个无符号数A,B,指令进 行的的操作是A-B,其转移指令如下:

3)带符号数条件转移指令。 在汇编程序设计中,要熟练使用循环指令和跳转指令等来实现循环,理解循环体结构中的初始化部分、循环体、结束部分,并且要结合前面分支结构相关的知识点,加深对循环结构的理解和掌握。循环结构的组成及其设计方法的知识要点有: 1、循环程序的基本结构通常由3部分组成 1) 初始化部分 建立循环初始值,为循环做准备,如设置地址指针,(BX/SI/DI/BP),初始化循环控制变量或计数器(CX),数据寄存器(AX/DX)初值等. 2) 循环体 循环体是循环程序的主体,是程序中重复执行的程序段.它是由循环工作部分、修改部分、和循环控制部分。 ①循环工作部分:完成程序功能的主要程序段,用于解决程序的实际任务; ②修改部分:对循环参数进行修改,并为下一次循环做准备; ③循环控制部分:判断循环结束条件是否满足。通常判断循环结束方法:用计数控制循环;循环是否进行了预定的次数。 用条件控制循环。循环终止条件是否满足。 3)结束处理处理部分 主要是对循环的结果进行处理,比如现实提示信息等,很多时候没有此部分程序。 2、循环控制指令: 指令格式执行操作循环结束条件 LOOP标号 CX=CX-1;若CX=0,则循环 CX=0 LOOPNZ/LOOPNE 标号 CX=CX-1;若CX=0且ZF=0,则循环CX=0或ZF=0 LOOPZ/LOOPE标号CX=CX-1;若CX=0且ZF=1,则循环CX=0或ZF=1 JCXZ 标号仅测试(CX)=0?若等于0,则转移到目标地址,否则顺序执行

北京理工大学微机原理实验报告

。 微机原理与接口技术 实验报告 实验内容:汇编语言程序设计实验 组别:12 姓名: 班级: 学号:

一、实验目的 1、熟悉IDE86集成开发环境的使用。 2、通过编程、上机调试,进一步理解汇编语言的设计思路与执行过程。 3、熟悉DOS命令调用,以达到输入输出、返回DOS系统等目的。 4、掌握利用汇编实现求和与求最值的方法。 5、掌握利用汇编实现数制转换的方法。 6、巩固理论知识,锻炼动手编程,独立思考的能力。 二、实验内容(具体内容) 1、求从TABLE开始的10个无符号字节数的和,并将结果放在SUM字单元中。并查看前5个,前8 个数之和以及各寄存器和内存的状态。 2、在1的基础上修改程序,求出10个数中的最大值和最小值,最后将最大最小值分别赋给MAX及 MIN。 3、求1到 100 的累加和,并用十进制形式将结果显示在屏幕上。要求实现数据显示,并返回DOS 状态。 三、实验方法 1、设计思路 (1)实验1的设计思路:先将10个要相加的数存在以TABLE为首的10个连续的存储单元中,然后利用循环结构依次取出数值放在AL中并累加,若有进位则加到AH中直至循环10次累加结束,将累加的结果放在SUM中并返回DOS状态。 (2)实验2的设计思路:先将10个要比较的数放在以TABLE为首的10个连续的存储单元中。 将第一个数首先赋给AL和AH(分别存储相对最小和最大值)在利用LOOP循环结构,依次和下面的数进行比较,每次把相对的最大值与最小值存储到AH和AL中直至循环9次比较结束,将AH和AL里面的最大值与最小值赋给MAX和MIN,返回DOS状态 (3)实验3的设计思路:先在内存中定义COUNT=100,表示1-100求和,若相求1-n的和并显示只需COUNT的值为n即可,同时定义一块以DNUM为首地址的数据区用于存储累加和的十进制数对应的ASCII码。先利用AX和LOOP求出1-COUNT的累加和存在AX中;在进行数值转化,AX 依次除10取余数保存,将16进制数转化为10进制ASCII码值并存在DUNM中。最后在屏幕上显示并返回DOS状态。 2程序流程图 实验一、二和三的流程图分别如图1、图2和图3所示

北京理工大学汇编语言实验报告实验五子程序设计实验

北京理工大学汇编语言实验报告实验五子 程序设计实验

实验五子程序设计实验(设计性实验) 一、实验要求和目的 1.熟悉汇编语言程序设计结构; 2.熟悉汇编语言子程序设计方法; 3.熟悉利用汇编语言子程序参数传递方法; 4.熟悉汇编语言字符串处理基本指令的使用方法; 5.掌握利用汇编语言实现字符串的输入输出程序设计方法; 6.掌握数制转换程序实现方法。 二、软硬件环境 1、硬件环境:计算机系统windows; 2、软件环境:装有MASM、DEBUG、LINK、等应用程序。 三、实验涉及的主要知识 A)子程序知识要点: 1、掌握子程序的定义语句; 过程名 PROC [near/far] 过程体 RET 过程名 ENDP 2.子程序结构形式 一个完整的子程序一般应包含下列内容: 1. )子程序的说明部分 在设计了程序时,要建立子程序的文档说明,使用户能清楚此子程序的功能和调用方法. 说明时,应含如下内容: .子程序名:命名时要名中见意. .子程序的功能:说明子程序完成的任务; .子程序入口参数:说明子程序运行所需参数及存放位置; .子程序出口参数:说明子程序运行结果的参数及存放位置; .子程序所占用的寄存器和工作单元;

.子程序调用示例; 2、)掌握子程序的调用与返回 在汇编语言中,子程序的调用用CALL,返回用RET 指令来完成。 .段内调用与返回:调用子程序指令与子程序同在一个段内。因此只修改IP; .段间调用与返回:调用子程序与子程序分别在不同的段,因此在返回时,需同时修改CS:IP。 3.)子程序的现场保护与恢复 保护现场:在子程序设计时,CPU 内部寄存器内容的保护和恢复。 一般利用堆栈实现现场保护和恢复的格式: 过程名PROC [NEAR/FAR] PUSH BX PUSH DX POP DX POP AX RET 过程名 ENDP 4.子程序的参数传递方法 1.寄存器传递参数 这种方式是最基本的参数传递方式。 2.存储器单元传(变量)递参数 这种方法是在主程序调用子程序前,将入口参数存放到约定的存储单元中;子程序运 行时到约定存储位置读取参数;子程序执行结束后将结果也放在约定存储单元中。3.用堆栈传递参数 利用共享堆栈区,来传递参数是重要的的方法之一。 B)字符、字符串输入输出知识要点: 在实际应用中,经常需要从键盘输入数据并将结果等内容显示到屏幕上,方便程

北京理工大学汇编实验报告

本科实验报告实验名称:实验三字符串操作实验 课程名称:课程设计Ⅰ(CPU 与汇编) (实验) 实验时间: 第5-10周周五下 午 任课教师:聂青实验地点:10-102 实验教师:苏京霞 实验类型:☑原理验证□综合设计□自主创新 学生姓名:罗逸雨 **/班级:1120141208 05211401 组号:3 学院:信息与电子学院同组搭档: 专业:通信工程成绩: 一、实验目的 1) 熟悉串操作指令的功能与应用;2) 掌握串操作指令的寻址方式及使用方法,编写常用的字符串处理程序;3) 了解汇编语言字符串处理基本流程; 二、实验环境与原理 1.实验软硬件环境1) 硬件环境:惠普64 位一体化计算机及局域网;2) 软件环境:Windows 8,红蜘蛛管理系统,MASM for Windows。 2.实验原理 1)字符串操作流程SI寄存器保存源串首地址;DI寄存器保存目的串首地址; C*寄存器保存字符串长度;CLD或STD指令设置字符串处理方向;当CLD指令使DF=0在执行串处理指令时可使地址自动增量;STD 使DF=1,在

执行串处理指令时可使地址自动减量。2)重复前缀指令重复次数由计数寄存器C* 中存放的值决定,指令每重复执行一次,计数器C* 中值减1,当C* 中值减至0 时,停止重复执行,继续执行下一条指令。当REP无条件重复前缀,重复串操作直到计数寄存器的内容C* 为0为止。经常与REP 配合工作的字符串处理指令有MOVS、STOS和LODS。当REPE/REPZ判断计数寄存器的内容C* 是否为0或ZF=0(即比较的两个操作数不等),只要满足一个则重复执行结束,否则继续执行。可以与REPE/REPZ 配合工作的串指令有CMPS和SCAS。当REPNE/REPNZ判断计数寄存器的内容是否为0或ZF=1(即比较的两个操作数相等),只要满足一个则重复执行结束,否则继续执行。可以与REPE/REPZ 配合工作的串指令有CMPS和SCAS。3)字符串操作指令lodsb、lodsw:把DS:SI指向的存储单元中的数据装入AL或A*,然后根据DF 标志增减SI;stosb、stosw:把AL或A*中的数据装入ES:DI指向的存储单元,然后根据DF 标志增减DI;movsb、movsw:把DS:SI 指向的存储单元中的数据装入ES:DI指向的存储单元中,然后根据DF标志分别增减SI和DI;scasb、scasw:把AL或A* 中的数据与ES:DI 指向的存储单元中的数据相减,影响标志位,然后根据DF标志分别增减SI和DI;cmpsb、cmpsw:把DS:SI 指向的存储单元中的数据与ES:DI 指向的存储单元中的数据相减,影响标志位,然后根据DF标志分别增减SI和DI;rep:重复其后的串操作指令。重复前先判断C* 是否为0,为0就结束重复,否则C*减1,重复其后的串操作指令。主要用在MOVS和STOS前。一般不用在LODS 前。上述指令涉及的寄存器:段寄存器DS和ES、变址寄存器SI和DI、累加器A*、计数器C*。 涉及的标志位:DF、AF、CF、OF、PF、SF、ZF。

计算机汇编语言实验报告

计算机汇编语言实验报告 一、实验目的 本实验旨在通过编写计算机汇编语言程序,加强对计算机组成原理和 汇编语言的理解,同时熟悉实际编写和调试过程。 二、实验内容 1.用汇编语言编写一个简单的计算器程序,实现加法和减法操作。 2.编译并运行程序,测试其功能的正确性。 3.运用调试工具进行程序的调试,检查代码的运行流程。 三、实验步骤 1.确定程序功能和设计思路:本次实验的目标是编写一个计算器程序,能够对两个数进行加法和减法操作。我们可以通过定义一些操作码来表示 不同的操作,再通过输入不同的操作码来执行相应的操作。 2.编写汇编语言程序:首先,需要定义一些变量和常量来存储输入的 数和操作码。然后,使用汇编语言的运算指令和控制指令来实现加法和减 法操作,并将结果存储到指定的变量中。最后,使用输出指令来显示结果。 3.编译并运行程序:将汇编语言程序编译为机器码,并通过计算机的 指令集执行程序。 4.调试程序:利用调试工具,逐步执行程序,检查代码的运行流程和 结果的正确性。如有错误,进行适当的修改和调试。 5.测试功能和性能:使用不同的数和操作码进行测试,验证程序的功 能和正确性。

四、实验结果 经过编写、编译和调试,我们成功实现了一个简单的计算器程序。程 序能够根据输入的操作码,对两个数进行加法和减法操作,并将结果显示 出来。经过多次测试,程序的功能、正确性和性能都符合预期要求。 五、实验感想 通过本次实验,我们对计算机组成原理和汇编语言有了更深入的理解。在编写程序的过程中,我们发现汇编语言相比高级语言更加底层,需要考 虑更多的细节和机器指令的使用。同时,我们也意识到了调试的重要性, 调试工具能够帮助我们分析和修正代码的错误,提高程序的质量。 六、实验总结 通过本次实验,我们对计算机汇编语言的应用有了更深入的了解。我 们掌握了汇编语言程序的基本结构和语法规则,学会了使用汇编语言指令 进行计算和控制。同时,我们也提升了调试和测试的能力,加深了对计算 机组成原理和汇编语言的理解。总之,本次实验对我们的学习和实践能力 有了很大的提高。

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

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

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

汇编实验报告

汇编实验报告 概述:本次实验主要通过汇编语言的学习和实践,加深对汇编语言的理解并掌握其基本操作和使用方法。我们使用了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 将其转化为可执行文件。同时,我们还学会了使用调试工具进行 程序的调试和优化。通过这些实践,我们增强了对计算机底层运 行机理的理解,提高了编程能力和解决问题的能力。 六、实验心得 通过这次汇编实验,我深刻认识到了汇编语言的重要性和应用 价值。汇编语言的学习不仅可以帮助我们更好地理解计算机原理,还可以提高我们的编程能力和代码优化的能力。在今后的学习和 工作中,我将继续深入学习汇编语言,并将其应用于更多的实际 问题中。

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

汇编实验报告(适合初学者) 汇编语言程序设计 一、实验目的与要求 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)结束 ②.源程序清单。 DATASEGMENT XDB1H;数据定义YDB0HRDB3HWDB6HZDW?DATAENDSCODESEGMENT ASSUMECS:CODE,DS:DATASTART:MOVAX,DATA MOVDS,AX;段寄存器定义MOVAL,W SUBAL,X;求(W-X)CBW;字节转换为字MOVCL,5

IDIVCL;(W-X)/5MOVCL,AL MOVAL,Y;(W-X)/5-YSUBCL,ALMOVAL,R ADDAL,2;(R+2) IMULCL;((W-X)/5-Y)某(R+2)MOV[Z],AX ADDAL,30H;输出结果MOVDL,AL;MOVAH,2INT21HMOVAH,4CH INT21HCODEENDS ENDSTART③.程序运行结果。 ④.调试过程中遇到的问题和解决的方法。 还未能实现动态的输入数据,对指令的不熟悉,以至于在程序中经常性出错,得掌握固定的程序功能。 2.试编写一个程序,测试数是否是奇数。如该数是奇数,则把DL的第0位置1,否则将该位置0。 ①.程序算法流程图。 开始AL=XAL右移一位得CF否CF==1是DL与000000001B相或DL与11111110B相与结束②.源程序清单。 DATASEGMENT XDB9H;数据定义DATAENDSCODESEGMENT ASSUMECS:CODE,DS:DATASTART:MOVAX,DATA MOVDS,AX;段寄存器定义MOVAL,X SHR AL,1;利用右移一位得到cf值,JB判断 JB NEXT;为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

《汇编语言》实验报告

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

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

汇编语言课程设计1实验报告

汇编语言课程设计1实验报告 一、引言 本实验报告旨在探讨汇编语言课程设计1的实验内容和相关实验结果。通过对实验的详细介绍和分析,可以更好地理解和应用汇编语言的基本知识和技术。本实验报告分为以下几个部分进行讨论。 二、实验目的 本实验旨在通过设计汇编语言程序,掌握汇编语言的基本语法和编程技巧,提高对计算机底层的理解和应用能力。具体实验目的如下: 1.熟悉汇编语言的基本知识和编程环境; 2.学习如何使用汇编语言进行简单的数据处理和运算; 3.掌握汇编语言中的跳转、循环和分支等控制结构; 4.加深对计算机组成原理的理解和应用。 三、实验设计 3.1 实验环境 本实验使用的汇编语言编程环境为MASM(Microsoft Macro Assembler),具体配置如下: •操作系统:Windows 10 •开发工具:MASM32 •编辑器:Notepad++ 3.2 实验内容 本实验的实验内容为实现一个简单的加法计算器程序。具体要求如下: 1.输入两个整数,并将其保存到内存; 2.将两个整数相加,并将结果保存到内存; 3.从内存读取结果,并输出到屏幕。

3.3 实验步骤 下面是实验的具体步骤: 1.打开MASM32开发工具,创建一个新的汇编语言项目; 2.在编辑器中编写汇编语言程序,包括数据定义、输入输出处理和计算过程; 3.使用MASM进行编译和链接,生成可执行程序; 4.运行程序,输入两个整数,并查看输出结果。 四、实验结果 经过以上步骤,我们成功实现了一个简单的加法计算器程序。以下是实验结果的截图: Enter the first number: 10 Enter the second number: 20 The sum is: 30 五、实验分析 通过以上实验结果可以看出,我们的加法计算器程序能够正确地将输入的两个整数相加,并输出计算结果。这证明我们所编写的汇编语言程序是正确的。同时,通过这个实验,我们还可以总结出一些经验和教训: •在程序设计过程中,要仔细考虑数据定义和处理逻辑的正确性和合理性;•在编写汇编语言程序时,要注意语法和命令的正确使用,避免出现语法错误;•在调试程序时,要仔细检查每一步执行的结果,找出可能的错误原因。 六、实验总结 通过本次实验,我们深入学习了汇编语言的基本知识和技术,并成功实现了一个简单的加法计算器程序。通过这个实验,我们进一步理解了计算机底层的工作原理和运行机制,提高了对计算机组成原理的应用能力。 通过这个实验,我们获得了以下几个方面的收获: 1.掌握了汇编语言的基本语法和编程技巧; 2.理解了汇编语言的数据处理和运算方式; 3.学会了使用跳转、循环和分支等控制结构; 4.提高了对计算机组成原理的理解和应用能力。

汇编语言上机实验报告1

汇编语言上机实验报告1 汇编语言上机实验报告1 实验内容: 1.编写一个程序,求解给定整数的阶乘并输出结果。 2.编写一个程序,求解斐波那契数列中的第n个数并输出结果。 实验步骤: 1.阶乘程序: 编写一个汇编程序,通过输入一个整数n,求解n的阶乘。程序流程如下: 1.1.定义变量n,用于保存输入的整数。 1.2.将n与0进行比较,如果n为0,则直接将1输出作为阶乘的结果,并跳转到程序结束;否则继续执行下一步。 1.3.将n的值保存到寄存器中,并将n减1,保存到n中。 1.4.将n与0进行比较,如果n为0,则直接跳转到程序结束;否则继续执行下一步。 1.5.将n的值与寄存器中保存的值相乘,将结果保存到寄存器中。 1.6.将n减1,保存到n中并跳转到第4步。 1.7.输出寄存器中的结果作为阶乘的结果,并跳转到程序结束。 2.斐波那契数列程序:

编写一个汇编程序,通过输入一个整数n,求解斐波那契数列中的第n个数。程序流程如下: 2.1.定义变量n,用于保存输入的整数。 2.2.将n与0进行比较,如果n为0,则直接将0作为结果输出,并跳转到程序结束;否则继续执行下一步。 2.3.将n与1进行比较,如果n为1,则直接将1作为结果输出,并跳转到程序结束;否则继续执行下一步。 2.4.将n的值保存到寄存器中,并将n减1,保存到n中。 2.5.将n与0进行比较,如果n为0,则跳转到第9步;否则继续执行下一步。 2.6.将n减1,保存到n中并跳转到第7步。 2.7.将n的值与寄存器中保存的值相加,将结果保存到寄存器中。 2.8.将n减1,保存到n中并跳转到第5步。 2.9.输出寄存器中的结果作为斐波那契数列中第n个数的结果,并跳转到程序结束。 实验结果: 1.阶乘程序运行结果: 请输入一个整数:5 5的阶乘为:120 2.斐波那契数列程序运行结果:

汇编指令实验报告

汇编指令实验报告 汇编指令实验报告 汇编指令是计算机中非常重要的一部分,它们直接操作着计算机的硬件,实现各种功能。在本次实验中,我们学习了汇编指令的基本知识,并通过实践掌握了它们的使用方法。本文将对我们的实验过程进行详细的总结和分析。 实验一:汇编指令的基本概念和使用方法 在实验的第一部分,我们首先了解了汇编指令的基本概念和使用方法。汇编指令是一种低级语言,它直接操作计算机的寄存器和内存单元。我们通过学习不同的指令集和指令格式,了解了如何使用汇编指令来实现各种功能。 在实验中,我们使用了一款常见的汇编语言工具,例如MASM(Microsoft Macro Assembler)和NASM(Netwide Assembler)。通过这些工具,我们可以将汇编代码转换成可执行的机器码,并在计算机上运行。 实验二:汇编指令的应用实例 在实验的第二部分,我们通过一些实际的应用实例,进一步加深了对汇编指令的理解和掌握。我们学习了如何使用汇编指令来实现字符串处理、数学运算、条件判断等常见的功能。 例如,我们学习了如何使用汇编指令来实现字符串的反转功能。通过对字符串的每个字符进行逆序排列,我们可以实现字符串的反转。这个实例不仅帮助我们理解了汇编指令的基本操作,还锻炼了我们的逻辑思维能力。 实验三:汇编指令的性能优化 在实验的第三部分,我们探讨了如何通过优化汇编指令来提升程序的性能。通过对程序的瓶颈进行分析,我们可以找到一些可以改进的地方,并通过修改和

优化汇编指令来提升程序的执行效率。 例如,我们学习了如何通过使用SIMD(Single Instruction Multiple Data)指令集来实现并行计算。通过同时对多个数据进行操作,我们可以大大提高程序的运行速度。这个实例不仅帮助我们理解了汇编指令的高级应用,还培养了我们的优化思维能力。 实验四:汇编指令的错误处理和调试技巧 在实验的第四部分,我们学习了如何处理汇编指令中的错误,并掌握了一些常用的调试技巧。在编写和调试汇编程序时,我们经常会遇到各种错误,例如语法错误、逻辑错误等。通过学习如何定位和解决这些错误,我们可以提高程序的可靠性和稳定性。 例如,我们学习了如何使用调试器来跟踪程序的执行过程,并通过设置断点和查看寄存器的值来定位错误。这个实例不仅帮助我们掌握了调试技巧,还培养了我们的问题解决能力。 总结与展望 通过本次实验,我们深入学习了汇编指令的基本概念、使用方法和应用技巧。我们不仅掌握了汇编指令的基本操作,还学会了如何优化程序的性能和处理错误。这些知识和技能对我们今后的学习和工作都具有重要的意义。 同时,我们也意识到汇编指令的学习是一个长期的过程,需要不断地实践和探索。我们希望通过今后的学习和实践,进一步提高自己的汇编指令编程能力,并将其应用到更广泛的领域中。 总之,本次实验为我们提供了一个很好的机会来学习和掌握汇编指令的基本知识和应用技巧。通过实践和实验,我们不仅加深了对汇编指令的理解,还提高

汇编语言顺序结构实验报告

汇编语言顺序结构实验报告

实验二 实验目的: 1.掌握顺序结构程序的基本设计方法; 2.掌握数据传送指令和算术运算指令的用法; 3.掌握逻辑操作指令和移位操作指令的用法; 4.掌握状态标志位操作指令的用法; 5.掌握简单的I/O功能调用。 实验要求 1.熟练掌握DEBUG中的U,D,E,G命令的使用方法; 2.学会利用系统功能调用,来实现键盘输入字符、显示字符的方法; 3.了解大、小写字母及数字在计算机中的表示方法及转换方法。

实验内容 题目 编写十六进制的乘法程序。要求从键盘上输入两个一位十六进制数据,乘积存入SUM单元 以下是我的汇编程序代码: DSEG S EGMENT SUM DW ? HTAB DB '0123456789???????ABCDEF' HTAA DB '0123456789ABCDEF' DSEG E NDS CSEG S EGMENT ASSUME CS:CSEG,DS:DSEG START: MOV AX,DSEG MOV DS,AX MOV AH,01H INT 21H MOV DL,'*' MOV AH,02H INT 21H SUB AL,30H

LEA BX,HTAB XLAT MOV DL,AL MOV AH,01H INT 21H SUB AL,30H XLAT MOV BL,DL MUL BL MOV SUM,AX MOV BL,AL MOV CL,AL MOV DL,'=' MOV AH,02H INT 21H SHR BL,4 MOV AL,BL LEA BX,HTAA XLAT MOV DL,BL MOV AH,02H INT 21H

相关主题
相关文档
最新文档