实验1汇编语言实验环境与基本操作
实验一 汇编语言程序设计的实验环境及上机步骤
实验一熟悉汇编语言程序设计的实验环境及上机步骤一、实验目的:1、掌握文本编辑程序EDIT的基本使用方法。
2、熟练掌握汇编语言上机操作的基本步骤,学会汇编语言程序的编辑、汇编、连接、运行等操作方法。
二、上机实验指导(一)实验环境1.硬件环境微型计算机(Intel x86系列CPU)一台2. 软件环境⏹Windows98/2000/XP操作系统⏹文本编辑器(NOTEPAD(记事本))⏹汇编程序(MASM.EXE)⏹连接程序(LINK.EXE)(二)上机实验步骤上机步骤总结如下:1.把汇编程序拷贝到 C:\ASM\2.用记事本建立ASM源程序,保存为C:\ASM\HELLO.ASM3.汇编 C:\ASM>MASM HELLO.ASM<回车>4.链接C:\ASM>LINK HELLO.OBJ<回车>5.执行C:>ASM>HELLO〈回车〉下面详细介绍上机步骤:1.确定源程序的存放目录建议源程序存放的目录名为ASM(或MASM),并放在C盘或D盘的根目录下。
创建方法:找到C盘的根目录,在C盘的根目录窗口中点击右键,在弹出的菜单中选择“新建”→“文件夹”,并把新建的文件夹命名为ASM。
请把MASM.EXE、LINK.EXE都拷贝到此目录中。
2.建立ASM源程序使用NOTEPAD(记事本)文本编辑器建立ASM源程序。
打开记事本,输入源程序后,保存为后缀为.ASM的文件,保存路径为C:\ASM\HELLO.ASM。
3.用MASM.EXE汇编源程序产生OBJ目标文件具体操作如下:在DOS命令提示符窗口中操作选择“开始”→“程序”→“附件”→“命令提示符”,打开DOS命令提示符窗口,然后用CD命令转到源程序目录下,接着输入MASM命令:C:\Documents and Settings>cd..(回车,退回到上一级根目录)C:>CD ASM<回车>C:\ASM>MASM HELLO.ASM<回车>操作时的屏幕显示如图2所示。
汇编语言实验指导
汇编语言实验指导一、实验目的本实验旨在通过学习汇编语言的基本知识和实践操作,让学生掌握汇编语言程序的编写和调试方法,培养分析问题和解决问题的能力。
二、实验环境准备1. 操作系统:Windows或Linux2. 开发工具:MASM、TASM、NASM等汇编语言编译器3. 可执行文件调试工具:如Debug、OllyDbg等4. 相关资料:《x86汇编语言》、《汇编语言程序设计》等教材或参考书籍三、实验内容1. 实验一:程序的编译和链接1.1 编写一个简单的汇编语言程序,如计算两个数之和,并保存为.asm文件。
1.2 使用汇编语言编译器进行编译,生成目标文件。
1.3 进行链接操作,生成可执行文件。
2. 实验二:汇编语言程序的调试2.1 使用可执行文件调试工具打开生成的可执行文件。
2.2 通过调试工具逐行执行程序,观察寄存器和内存的变化情况,帮助理解程序的执行过程。
2.3 使用调试工具提供的断点功能,在程序中设置断点,以便暂停程序的执行,便于查看和分析程序状态。
3. 实验三:实现简单的输入输出操作3.1 编写一个汇编语言程序,实现从键盘读取一个字符,并将其显示在屏幕上。
3.2 通过使用适当的系统调用,实现输入和输出的功能。
四、实验步骤1. 配置好实验环境,确保所需软件和资料齐全。
2. 根据实验要求,编写相应的汇编语言程序。
3. 使用汇编语言编译器将程序编译成目标文件。
4. 进行链接操作,生成可执行文件。
5. 使用可执行文件调试工具打开生成的可执行文件,进行调试操作。
6. 完成实验报告,整理实验过程和结果。
五、实验总结通过本次汇编语言实验,我对汇编语言的基本概念和编程方法有了更深入的理解,掌握了程序的编写、编译和调试技巧。
实践操作中,我遇到了一些问题,但通过查找资料和自我探索,逐步解决了这些问题。
通过调试和运行程序,我对汇编语言程序的执行过程和寄存器内存的变化有了更好的认识。
本次实验对我的学习和成长有着重要的意义,我将继续深入学习汇编语言,并在今后的学习和工作中应用所学知识。
实验一 熟悉汇编语言使用环境
实验一熟悉汇编语言使用环境一、实验目的:1、熟悉汇编语言的编辑、汇编、连接、运行的全过程。
2、了解汇编语言的程序结构、学习调用过程实现输入输出及用INCLUDE命令包含文件的方法。
3、算术运算类操作二、实验内容和步骤:1、汇编语言源程序要运行的四个步骤:(1)用编辑软件EDIT或记事本编辑一个扩展文件名为ASM的汇编语言源程序。
(2)用汇编程序MASM或TASM 汇编上述的汇编语言源程序,形成目标代码文件。
(扩展名为OBJ)(3)用连接程序LINK 或TLINK连接目标代码文件,形成可执行文件。
(扩展名为EXE)(4)运行可执行文件。
观察执行结果,以验证其正确性。
2、从键盘上输入两个十进制数正数(<32767),相加并显示结果。
参考程序:.model tiny.stack 256.CODESTART:CALL read ;从键盘接受一个十进制数MOV AX,BXcall dpcrlfCALL read ;从键盘接受一个十进制数ADD bx,aXcall dpcrlf ;回车换行CALL write ;显示结果.exit 0INCLUDE out_B_D.ASM ;把二进制转换为十进制数输出过程:write INCLUDE in_D_B.ASM ;把二进制转换为十进制数输入过程:readEND START3. 改写程序为输入两个十进制数,相减并显示输出。
4.改写程序为输入两个十进制数,相乘并显示输出。
5.改写程序为输入两个十进制数,相除并显示输出。
(注:例4.27read:十进制—>二进制转换过程,出口参数BX=二进制数;例P4.28,write:二进制—>十进制转换过程,入口参数BX=二进制数, dpcrlf:回车换行)三、记录结果与分析:(截图并打印在实验报告上)四、实验中遇到的问题和解决的步骤、方法五、问题与思考(2位压缩BCD加、减及转换成对应ASC输出等运算、字节的非压缩BCD加、减、乘等运算。
《汇编语言》实验报告
《汇编语言》实验报告实验名称:汇编语言实验报告实验目的:通过实验了解汇编语言的基本概念、语法结构和程序设计方法,掌握汇编语言的编写方法。
实验时间:2024年1月1日实验地点:实验室一、实验背景汇编语言是计算机硬件和软件之间的桥梁,通过汇编语言可以直接操作计算机的底层硬件。
汇编语言是一种低级语言,使用汇编语言可以实现对计算机内存、寄存器等硬件资源的直接操作,从而实现程序的功能。
本实验通过编写汇编语言程序,加深对汇编语言的理解。
二、实验过程1. 确定实验环境:使用DOSBox模拟DOS环境进行汇编程序编写和调试。
2. 编写第一个汇编程序:编写一个简单的汇编程序,将字符串“Hello, World!”输出到屏幕上。
3.程序分析:a.定义要输出的字符串,将字符串存储在数据段中。
b.设置段寄存器,将数据段地址加载到DS寄存器中。
c.设置显示模式和光标位置。
d.将字符串逐个字符输出到屏幕上。
e.关闭显示模式。
4. 编译运行:使用汇编语言的编译器将汇编程序转换成机器码,并在DOSBox中运行程序。
5.调试程序:根据程序运行结果和分析,调试程序中存在的错误,并进行改正。
三、实验结果与分析经过多次编写和调试,我们成功实现了将字符串“Hello, World!”输出到屏幕上的功能。
通过程序分析和调试过程,加深了对汇编语言的理解和掌握。
四、实验总结通过本次实验,我们深入了解了汇编语言的基本概念、语法结构和程序设计方法。
通过实际编写汇编语言程序,对汇编语言的编写方法有了更加深入的认识。
同时,通过调试程序的过程,我们也提高了自身的问题解决能力和分析能力。
在今后的学习和工作中,我们将继续学习和深入研究汇编语言,提高自己的编程能力和创新思维能力。
总体而言,本次实验给我们带来了很大的收获,我们以后将更加努力地学习汇编语言,提高自己的编程水平,为以后的学习和工作做好充分的准备。
汇编语言程序设计的实验环境及实验步骤
汇编语言程序设计的实验环境及实验步骤1、汇编语言源程序编写好以后,必须经过下列几个步骤才能在机器上运行:(1) 编辑源程序(生成.ASM文件)(2) 汇编源程序(.ASM → .OBJ)(3) 连接目标程序(.OBJ → .EXE )(4) 调试可执行程序(使用调试程序Debug调试生成的.EXE文件)(5) 运行程序输出结果。
2、Windows环境下的汇编语言集成编程环境的使用实验一 DOS环境下的汇编语言编程环境使用(基础与验证型)实验要求和目的1、掌握汇编语言程序设计的基本方法和技能;2、熟练掌握使用全屏幕编辑程序EDIT编辑汇编语言源程序;3、熟练掌握宏汇编程序MASM的使用;4、熟练掌握连接程序LINK的使用。
实验涉及的主要知识单元1、编辑源程序例如,编写程序,可以在DOS模式下用编辑程序edit.exe建立汇编语言源程序文件Hello.asm,注意文件名的扩展名必须是.asm。
也可以在Windows 2000或者在Windows XP环境下鼠标单击“开始”→“运行”,在“运行”中输入“cmd”进入DOS模式,运行edit软件,例如:C:> edit hello.asm2、汇编语言源程序的汇编过程汇编程序调入后,首先显示版本号,然后出现三个提示行。
第一个提示行为:Object filename [HELLO.OBJ]:询问目标程序文件名,方括号内为机器规定的默认的文件名,通常直接按回车键,表示采用默认的文件名(如上所示)。
第二个提示行为:Source listing [NUL.LST]:询问是否建立列表文件。
若不建立,直接回车;若要建立,可以输入文件名hello再回车。
列表文件中同时列出源程序和机器语言程序清单,并给出符号表,有利于程序调试。
第三个提示行为:Cross-reference [NUL.CRF]:询问是否要建立交叉索引文件。
若不建立,则直接回车;若要建立,可以输入文件名。
汇编语言程序设计实验篇
汇编语言程序设计实验篇在计算机科学领域中,汇编语言是一种低级编程语言,它直接操作计算机硬件资源,具有高效性和灵活性。
本篇文章将介绍汇编语言程序设计实验的相关内容,包括实验目的、实验环境、实验步骤和实验总结。
实验目的汇编语言程序设计实验的主要目的是使学生掌握使用汇编语言编写程序的基本技能。
通过实践操作,学生将理论知识应用于实际情境中,深化对汇编语言的理解,并培养一定的编程能力。
实验环境在进行汇编语言程序设计实验之前,学生需要准备适当的实验环境。
以下是必备的硬件和软件资源:1. 计算机:一台能够运行汇编语言的计算机。
2. 汇编语言编辑器:如MASM、NASM等,用于编辑和编译汇编语言程序。
3. 调试器:如调试版本的DOSBox、CodeView等,用于调试程序,定位和解决错误。
实验步骤在进行汇编语言程序设计实验时,学生可以按照以下步骤进行操作:1. 确定实验内容:根据实验要求,选择适当的汇编语言程序设计任务,如编写一个计算两个数相加的程序。
2. 编写程序源代码:使用汇编语言编辑器,编写程序的源代码,包括程序的指令、数据段和代码段等。
3. 编译程序:使用编辑器提供的编译指令,将源代码编译成机器码,生成可执行文件。
4. 调试程序:使用调试器,对程序进行调试,定位和解决错误,确保程序能够正常运行。
5. 运行程序:运行已调试通过的程序,验证程序的正确性,并观察程序的执行结果。
6. 优化程序:对程序进行进一步优化,提高程序的执行效率和性能。
7. 总结实验结果:根据实验过程和结果,总结实验经验和教训,思考改进和拓展的可能性。
实验总结通过进行汇编语言程序设计实验,学生可以获得以下收获:1. 熟悉汇编语言:实验使学生更加熟悉汇编语言的语法和指令,增强对计算机底层运行机制的理解。
2. 培养编程能力:实验锻炼学生的编程能力和解决问题的能力,提高他们的逻辑思维和分析能力。
3. 提升实践能力:实验让学生通过实践操作,将理论知识应用于实际情境中,增强实践能力和动手能力。
汇编语言上机环境及基本操作
汇编语言上机环境及基本操作汇编语言是一种低级语言,它直接面向硬件,可以直接访问计算机的底层资源。
为了学习和实践汇编语言,我们需要了解如何搭建汇编语言上机环境以及其基本操作。
本文将介绍汇编语言上机环境的安装和基本操作的步骤,并给出一些示例。
1. 汇编语言上机环境的安装在搭建汇编语言的上机环境之前,我们首先需要确认计算机的操作系统。
通常,我们可以在Windows操作系统上进行汇编语言的开发和调试。
下面是汇编语言上机环境的安装步骤:1.1 下载汇编语言开发工具汇编语言开发工具有很多种,比如MASM、NASM等。
根据个人的喜好和需求选择合适的工具进行下载。
1.2 安装汇编语言开发工具双击下载文件并按照提示完成安装过程。
一般来说,安装过程中可使用默认配置,无需特殊设置。
1.3 配置环境变量配置环境变量可以使得我们在任意路径下都可以运行汇编语言代码。
找到系统环境变量中的"Path"变量,添加汇编语言开发工具的安装路径。
例如,如果您选择了MASM,将其安装路径添加到"Path"变量中即可。
安装好汇编语言开发工具后,我们就可以开始进行汇编语言的实践了。
2. 汇编语言的基本操作接下来我们将介绍汇编语言的一些基本操作,包括编写代码、汇编、链接和运行等。
2.1 编写汇编语言代码打开一个文本编辑器(如记事本),编写汇编语言的代码。
汇编语言与高级语言相比,语法更为底层,需要对计算机的底层结构有一定的了解。
可以参考相关教材或者网络资源,编写简单的汇编语言代码。
2.2 汇编将编写好的汇编语言代码保存为.asm文件。
然后,打开命令提示符(或者使用汇编语言开发工具自带的命令行工具),进入.asm文件所在目录,并执行如下命令进行汇编:> asm 文件名.asm汇编成功后,将生成相应的.obj文件。
2.3 链接汇编语言代码中可能会引用一些外部的库文件,我们需要将这些库文件与生成的.obj文件进行链接。
汇编语言实验报告
汇编语言实验报告
1. 实验简介
本次实验是针对汇编语言的学习和实践,在实验中,我们将学习如何使用汇编语言编写程序、调试程序,并通过一系列实例来练习和巩固所学知识。
2. 实验目的
(这一部分可以根据实际情况来写,列举实验的具体目的和要求)
3. 实验环境及工具
(介绍实验所使用的软件环境和工具,如:编译器、调试器)
4. 实验步骤
(根据实验内容具体描述实验步骤,可以分为多个小节)
4.1 准备工作
在开始实验之前,需要进行一些准备工作,包括安装编译器、创建工作环境等。
4.2 实验一:简单的汇编程序
本实验通过编写一个简单的汇编程序来熟悉汇编语言的基本语法和指令集,包括数据传送、算术运算、逻辑运算等。
4.3 实验二:汇编程序的调试
在实验二中,我们将学习如何使用调试器对汇编程序进行调试,包括设置断点、查看变量值、单步执行等操作。
4.4 实验三:汇编程序的优化
本实验将通过优化代码来提高程序的执行效率,包括减少指令的使用、优化循环结构等。
5. 实验结果与分析
(对实验的结果进行总结和分析,可以包括程序的输出结果、性能分析等)
6. 实验总结
(针对本次实验的收获和心得体会进行总结,可以包括对汇编语言的理解、解决问题的思路等)
7. 实验感想
(对本次实验的感想和建议,如实验过程中遇到的困难、改进的方向等)
8. 参考文献
(列出本报告中所引用的参考文献)
注:该文章只是按照题目提示给出了一个大致的框架和构思,实际根据具体的实验内容和要求来编写每个小节的详细内容。
希望对你有所帮助!。
汇编语言实验教程-ddg
实验一:熟悉环境及DEBUG应用实验目的:1、复习C/C++的变量、地址、指针、内存空间等概念;2、熟悉基本的DOS命令;3、掌握DEBUG的启动及其使用方法与常用命令。
4、初步认识CPU的寄存器。
实验内容:一、C/C++语言回顾目的:通过C/C++的变量、地址、指针、内存空间等概念的回顾,了解计算机内数据的存放方式和访问方式。
1、编程定义一个整型int、一个双精度型double、一个字符型char的指针,并赋初值,然后显示各指针所指目标的值与地址,各指针的值与指针本身的地址及各指针所占字节数(其中地址用十六进制显示,注意字符指针输出是字符串,必须强制转换为无类型指针)。
要求运行结果如下所示:变量内容首地址长度(字节)cval ‘A’0x0012ff64 1类型:整型: int, short int, short, long int, long, unsigned int, unsigned short, unsigned long实型: float, double, long double字符型: char#include<iostream>using namespace std;int main(){int *ip,ival=100;double *dp,dval=99.9;char *cp,cval='A';ip=&ival;dp=&dval;cp=&cval;cout<<*ip<<'\t'<<&*ip<<'\t'<<sizeof(*ip)<<endl;cout<<*dp<<'\t'<<&*dp<<'\t'<<sizeof(*dp)<<endl;cout<<*cp<<'\t'<<(void*)&*cp<<'\t'<<sizeof(*cp)<<endl;//字符指针输出是字符串,必须强制转换为无类型指针cout<<*cp<<'\t'<<&*cp<<'\t'<<sizeof(*cp)<<endl;//输出A开头的字符串cout<<ip<<'\t'<<&ip<<'\t'<<sizeof(ip)<<endl;cout<<dp<<'\t'<<&dp<<'\t'<<sizeof(dp)<<endl;cout<<(void*)cp<<'\t'<<&cp<<'\t'<<sizeof(cp)<<endl;return 0;}2、编程定义一个一维数组、一个二维数组、一个字符串(字符数组)、一个结构体,并赋初值,然后显示各指针所指目标的值与地址,各指针的值与指针本身的地址及各指针所占字节数(长度)。
汇编语言上机环境及基本操作
实验一汇编语言上机环境及基本操作一、实验目的1.学习及掌握汇编语言源程序的书写格式,明确程序中各段的功能和相互之间的关系。
2.学会使用EDIT、MASM、LINK、DEBUG等软件工具。
3.熟练掌握在计算机上建立、汇编、连接、调试及运行程序的方法。
二、实验要求输入并调试运行程序,完成后写出程序所完成的功能及程序运行结果三、实验内容汇编语言源程序的建立设定源程序的文件名为ABC。
DATA SEGMENTX DB -60Y DB 70Z DB -50W DB -100RESULT DB ?DATA ENDSSTACK SEGMENT STACK ’STACK’STA DB 10 DUP(?)STACK ENDSCODE SEGMENTASSUME CS:CODE,DS:DATA,SS:STACKSTART: MOV AX,DATAMOV DS,AXMOV AL,XIMUL YMOV BX,AXMOV AL,ZCBWADD AX,BXIDIV WSUB AL, 15MOV RESULT,ALMOV AH,4CHINT 21HCODE ENDSEND START1、进入汇编环境打开开始菜单,点击运行,键入cmd进入DOS环境;键入以下命令:D:\masm>edit abc.asm程序输入完毕后一定要将源程序文件存入盘中,以便进行汇编及连接,也可以再次调出源程序进行修改。
2、将源程序文件汇编成目标程序文件一般情况下,MASM汇编程序的主要功能有以下3点:(1)检查源程序中存在的语法错误,并给出错误信息。
(2)源程序经汇编后没有错误,则产生目标程序文件,扩展名为.OBJ。
(3)若程序中使用了宏指令,则汇编程序将展开宏指令。
3、用连接程序生成可执行程序文件经汇编以后产生的目标程序文件(.OBJ文件)并不是可执行程序文件,必须经过连接以后,才能成为可执行文件(即扩展名为.EXE)。
4、程序的执行当我们建立了正确的可执行文件以后,就可以直接在DOS状态下执行该程序。
汇编语言上机实验汇总
汇编语言上机实验汇总汇编语言是计算机的低级语言,主要用于编写底层程序和驱动程序。
在学习汇编语言的过程中,学生通常需要进行一定数量的上机实验。
下面是一个汇编语言上机实验的汇总。
1.实验一:环境搭建-目标:搭建汇编语言开发环境2.实验二:基本语法-目标:学习汇编语言的基本语法和指令格式-内容:编写一个简单的汇编程序,包括数据段、代码段和堆栈段,以及常用指令(例如MOV、ADD、SUB、JMP等)的使用。
3.实验三:寄存器和内存操作-目标:熟悉汇编语言中的寄存器和内存的操作-内容:编写一个汇编程序,通过MOV指令将数据从内存中加载到寄存器中,然后进行运算,并将结果存储回内存。
4.实验四:条件分支和循环-目标:掌握汇编语言中的条件分支和循环结构-内容:编写一个汇编程序,使用条件分支指令(例如CMP、JE、JNE 等)实现一个简单的判断语句;然后使用循环指令(例如LOOP)实现一个简单的循环结构。
5.实验五:子程序和参数传递-目标:学习如何创建和调用子程序,并传递参数-内容:编写一个汇编程序,其中包含一个子程序,该子程序接受两个参数并返回它们的和。
然后在主程序中调用该子程序,并输出结果。
6.实验六:中断和异常处理-目标:了解中断和异常处理机制,并在汇编程序中处理中断或异常-内容:编写一个汇编程序,其中包含一个中断处理程序,当发生特定的中断时,该处理程序将执行一些特定的操作。
7.实验七:串操作和文件操作-目标:学习汇编语言中的串操作和文件操作-内容:编写一个汇编程序,使用串操作指令(例如MOVS、LODS、STOS等)操作字符串;然后使用文件操作指令(例如OPEN、READ、WRITE 等)读取或写入文件。
8.实验八:图形和音频处理-目标:了解汇编语言中的图形和音频处理- 内容:编写一个汇编程序,使用图形库(例如BGI、OpenGL、DirectX)绘制简单的图形或运行一个音频文件。
这些上机实验可以帮助学生逐步掌握汇编语言的基本知识和技能,并为以后的高级汇编语言编程打下基础。
汇编语言程序设计的实验环境及上机步骤
第1章汇编语言程序设计实验1.1 汇编语言程序设计的实验环境及上机步骤1.1.1 实验环境汇编语言程序设计的实验环境如下。
1.硬件环境微型计算机(Intel x86系列 CPU)1台。
2.软件环境·Windows 98/XP/Me/2000操作系统;·任意一种文本编辑器(EDIT、NOTEPAD(记事本)、UltraEDIT等);·汇编程序(MASM.EXE或TASM.EXE);·链接程序(LINK.EXE或TLINK.EXE);·调试程序(DEBUG.EXE或TD.EXE)。
本书建议文本编辑器使用EDIT或NOTEPAD,汇编程序使用MASM.EXE,链接程序使用LINK.EXE,调试程序使用TD.EXE。
1.1.2 上机步骤汇编语言程序设计的实验2和实验3仅使用TD.EXE,关于TD.EXE的使用方法请参见附录B。
下面介绍的上机实验步骤适用于除实验2和实验3的所有实验(包括硬件接口部分的全部实验)。
1.确定源程序的存放目录建议源程序存放的目录名为ASM,并放在C盘或D盘的根目录下。
如果没有创建过此目录,请用如下方法创建。
通过Windows的资源管理器找到C盘的根目录,在C盘的根目录窗口中单击右键,弹出的菜单中选择“新建”→“文件夹”,并把新建的文件夹命名为ASM。
请把MASM5文件夹下的所有文件及TD.EXE都复制到此目录中。
2.建立ASM源程序建立*.ASM源程序可以使用记事本文本编辑器。
注意:保存时扩展名必须ASM。
设建立的源文件为HELLO.ASM3.用MASM.EXE汇编源程序产生OBJ目标文件源文件HELLO.ASM建立后,要使用汇编程序对源程序文件汇编,汇编后产生二进制的目标文件(.OBJ文件)。
具体操作如下:方法一:在Windows中操作用资源管理器打开源程序目录C:\ASM,把HELLO.ASM拖到MASM.EXE程序图标上。
汇编语言实验报告
实验一汇编程序的汇编及运行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的值为多少?DATA SEGMENTORG 20HNUM1=8NUM2=NUM1+10HDA1 DB ‘IBM PC’DA2 DB 0AH, 0DHCOUNT EQU $-DA1DATA ENDSEND2、输入有错误的文件,修改错误语句。
(MASM没有出现错误即可。
不必连接、运行。
)DATA SEGMENTVAR1 DB 0, 25, ODH, 300VAR2 DB 12H, A4H, 6BHVAR3 DB ’ABCDEF’VAR4 DW 1234H, 5678HVAR5 DW 10H DUP(?)DATA ENDSCODE SEGMENTASSUME CS: CODE, DE: DATA BEING MOV AX, DATAMOV DS, AXLEA SI, VAR5MOV BX, OFFSET VAR2MOV [SI], 0ABHMOV AX, VAR1+2MOV [BX], [SI]MOV VAR5+4, VAR4MOV AH, 4CHINT 21HCODE ENDSEND START3、输入正确的程序,汇编、连接、运行STACKS SEGMENT STACKDW 128 DUP(?)STACKS ENDSDATAS SEGMENTSTRING DB ‘WELCOME!’, 13, 10, ‘$’DATAS ENDSCODES SEGMENTASSUME CS: CODES, DS: DATASSTART:MOV AX, DATASMOV DS, AXLEA DX, STRINGMOV AH, 9INT 21HMOV AH, 4CHINT 21HCODES ENDSEND START4.算法描述及实验步骤(1)编写源程序。
实验1汇编语言实验环境与基本操作
实验1 汇编语言实验环境与基本操作班级:计科(高职)12-2 姓名:韩长莉学号: 201203014062 上机时间: 2014.4.14 上机地点:一机房指导老师:尉秀梅一.实验目的:1.学习debug的主要用法,熟悉R,D,E,U,T,A等常用的命令。
2.理解堆栈的工作原理,push和pop指令的执行步骤。
3.掌握一个完整的汇编程序从写出到执行的过程,熟悉用debug跟踪程序的执行过程。
二.实验内容:1.查看cpu和内存,用机器指令和汇编指令编程(p35)2.用机器指令和汇编指令编程(p71)3.编程、编译、连接、跟踪(94页)三.实验步骤1.查看cpu和内存,用机器指令和汇编指令编程(p35)(1)使用debug,将下面的程序段写入内存,逐条执行,观察每条指令执行后,cpu中相关寄存器中内容的变化。
提示:可用E命令和A命令,以两种方式将指令写入内存。
注意用t命令执行时,cs:ip的指向。
写清楚具体用这两种方式的操作方法。
C:\Users\Administrator>debug-e 1000:0 b8 20 4e 05 16 14 bb 00 20 01 d8 89 c3 01 d8 b8 1a 00 bb 26 00 00 d8-u 1000:01000:0000 B8204E MOV AX,4E201000:0003 051614 ADD AX,14161000:0006 BB0020 MOV BX,20001000:0009 01D8 ADD AX,BX1000:000B 89C3 MOV BX,AX1000:000D 01D8 ADD AX,BX1000:000F B81A00 MOV AX,001A1000:0012 BB2600 MOV BX,00261000:0015 00D8 ADD AL,BL1000:0017 28752D SUB [DI+2D],DH1000:001A 807C0429 CMP BYTE PTR [SI+04],291000:001E 7554 JNZ 0074-rAX=0000 BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000DS=13C0 ES=13C0 SS=13C0 CS=13C0 IP=0100 NV UP EI PL NZ NA PO NC13C0:0100 0000 ADD [BX+SI],AL DS:0000=CDCS13C0:1000-ripIP 0100-rAX=0000 BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000DS=13C0 ES=13C0 SS=13C0 CS=1000 IP=0000 NV UP EI PL NZ NA PO NC1000:0000 B8204E MOV AX,4E20-tAX=4E20 BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000DS=13C0 ES=13C0 SS=13C0 CS=1000 IP=0003 NV UP EI PL NZ NA PO NC1000:0003 051614 ADD AX,1416-tAX=6236 BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000DS=13C0 ES=13C0 SS=13C0 CS=1000 IP=0006 NV UP EI PL NZ NA PE NC1000:0006 BB0020 MOV BX,2000-tAX=6236 BX=2000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000DS=13C0 ES=13C0 SS=13C0 CS=1000 IP=0009 NV UP EI PL NZ NA PE NC1000:0009 01D8 ADD AX,BXAX=001A BX=0026 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000DS=13C0 ES=13C0 SS=13C0 CS=1000 IP=0015 OV UP EI PL NZ NA PE CY1000:0015 00D8 ADD AL,BL-tAX=0040 BX=0026 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000DS=13C0 ES=13C0 SS=13C0 CS=1000 IP=0017 NV UP EI PL NZ AC PO NC1000:0017 28752D SUB [DI+2D],DH DS:002D=0D-e 1000:17 00 dc 00 c7 b4 00 00 d8 04 9c-u 1000:171000:0017 00DC ADD AH,BL1000:0019 00C7 ADD BH,AL1000:001B B400 MOV AH,001000:001D 00D8 ADD AL,BL1000:001F 049C ADD AL,9C1000:0021 44 INC SP1000:0022 032C ADD BP,[SI]1000:0024 30724D XOR [BP+SI+4D],DH1000:0027 3C07 CMP AL,071000:0029 7749 JA 00741000:002B A2A756 MOV [56A7],AL1000:002E FE064057 INC BYTE PTR [5740]1000:0032 83C605 ADD SI,+051000:0035 813C2C53 CMP WORD PTR [SI],532CAX=0040 BX=0026 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000DS=13C0 ES=13C0 SS=13C0 CS=1000 IP=0017 NV UP EI PL NZ AC PO NC1000:0017 00DC ADD AH,BL-rcsCS 1000:1000-ripIP 0017:0-rAX=0040 BX=0026 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000DS=13C0 ES=13C0 SS=13C0 CS=1000 IP=0000 NV UP EI PL NZ AC PO NC1000:0000 B8204E MOV AX,4E20-tAX=4E20 BX=0026 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000DS=13C0 ES=13C0 SS=13C0 CS=1000 IP=0003 NV UP EI PL NZ AC PO NC1000:0003 051614 ADD AX,1416-tAX=6236 BX=0026 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000DS=13C0 ES=13C0 SS=13C0 CS=1000 IP=0006 NV UP EI PL NZ NA PE NC1000:0006 BB0020 MOV BX,2000-AX=2640 BX=4026 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000DS=13C0 ES=13C0 SS=13C0 CS=1000 IP=001B NV UP EI PL NZ NA PO NC1000:001B B400 MOV AH,00-tAX=0040 BX=4026 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000DS=13C0 ES=13C0 SS=13C0 CS=1000 IP=001D NV UP EI PL NZ NA PO NC1000:001D 00D8 ADD AL,BL-tAX=0066 BX=4026 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000DS=13C0 ES=13C0 SS=13C0 CS=1000 IP=001F NV UP EI PL NZ NA PE NC1000:001F 049C ADD AL,9C-t(2)将下面3条指令写入从2000:0开始的内存单元中,利用这3条指令计算2的8次方。
汇编语言实验报告
汇编语言实验报告一、实验目的本次汇编语言实验的主要目的是通过实际操作和编程实践,深入理解汇编语言的基本概念、指令系统和编程方法,提高对计算机底层硬件操作的认识和编程能力。
二、实验环境1、操作系统:Windows 102、编程工具:MASM(Microsoft Macro Assembler)三、实验内容1、数据传送与算术运算实现两个 16 位整数的加法和减法运算,并将结果存储在指定的内存单元中。
使用不同的数据传送指令,如 MOV、PUSH、POP 等,将数据在寄存器和内存之间进行传输。
2、逻辑运算与移位操作对给定的 8 位二进制数据进行逻辑与、或、异或运算,并观察结果。
执行移位操作,包括逻辑移位(SHL、SHR)和算术移位(SAL、SAR),理解移位对数据的影响。
3、分支与循环结构使用条件跳转指令(如 JZ、JE、JC 等)实现根据不同条件执行不同代码段的功能。
编写循环结构程序,如使用 LOOP 指令实现对数组元素的求和操作。
4、子程序调用定义一个子程序,实现特定的功能,如计算一个数的阶乘。
在主程序中调用子程序,并传递参数和获取返回值。
四、实验步骤1、数据传送与算术运算实验首先,在代码编辑器中编写汇编代码,定义数据段和代码段。
在数据段中初始化两个 16 位整数,例如 MOV WORD PTR DATA1, 1000H 和 MOV WORD PTR DATA2, 2000H 。
在代码段中使用 ADD 和 SUB 指令进行加法和减法运算,如 ADD WORD PTR RESULT_ADD, DATA1 和 SUB WORD PTRRESULT_SUB, DATA2 。
编译和链接代码,生成可执行文件。
运行程序,查看内存中存储的运算结果。
2、逻辑运算与移位操作实验类似地,定义数据段和代码段。
在数据段中初始化 8 位二进制数据,如 MOV AL, 01010101B 。
在代码段中使用AND、OR、XOR 指令进行逻辑运算,以及SHL、SHR、SAL、SAR 指令进行移位操作。
《汇编语言上机环境及基本步骤》实验报告
汇编语言上机环境及基本步骤一、实验目的:1.掌握编写汇编源程序的基本格式。
2.熟悉汇编语言上机环境。
3.掌握汇编源程序的编辑和修改,熟悉EDIT或记事本的使用方法。
4.掌握汇编源程序编译、连接成可执行文件的过程,熟悉MASM,LINK的使用方法。
二、实验内容:在屏幕上显示并打印字符串“This is a sample program.”三、实验仪器微机一台四、实验步骤:1.在某盘如E盘,以自己的名字的汉语拼音建立一个工作目录(文件夹,名称不要太长,不超过8个字符比如zhangsan),将文件MASM.EXE,LINK.EXE等复制到该目录下,编辑的源文件也保存到该目录下。
从WINDOWS进入DOS环境:C:\>2.用EDIT编辑SW1.ASM源文件。
(1). 从当前目录进入自己的目录下,C:\>E: 回车E:\> CD zhangsan ↙回车键入EDIT并回车:E:\ zhangsan>EDIT根据菜单提示进行各种操作。
(2)进入EDIT编辑------EDIT是一种全屏幕编辑软件,可输入、编辑、修改、保存、另存源程序非常方便。
说明:也可在WIDNDOWS环境下用记事本编辑源文件,在保存时,保存类型应选择所有文件,不能选择文本文件(*.txt),否则在编译时会找不到源文件的。
(3).编辑新文件:a、在EDIT编辑器中输入汇编源程序。
b、检查输入有无错误。
c、打开文件菜单FILE→选择另存为SA VE AS┅→输入文件名为:SW1.ASM→保存。
注意:保存到你自己的文件夹中d、若需要修改此文件,用FILE菜单→选择打开OPEN→输入文件名SW1.ASM,即可修改。
修改后注意重新再存盘。
(4).编辑汇编源程序a、在EDIT(或记事本)中输入源程序。
b、检查。
c、存盘。
可保存为SW1.ASM3.用汇编程序MASM将SW1.ASM文件汇编,生成SW1.OBJ目标文件。
(1).一般简单程序只需生成.OBJ文件,可键入简化命令:E:\zhangsan>MASM SW1;↙若有错误,则显示错误行号及错误性质,如:SW1.ASM(5):error A2006:undefined symbor:xxxx(2).若有错重新进入EDIT进行修改。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验1 汇编语言实验环境与基本操作班级:计科(高职)12-2 姓名:韩长莉学号: 201203014062 上机时间: 2014.4.14 上机地点:一机房指导老师:尉秀梅一.实验目的:1.学习debug的主要用法,熟悉R,D,E,U,T,A等常用的命令。
2.理解堆栈的工作原理,push和pop指令的执行步骤。
3.掌握一个完整的汇编程序从写出到执行的过程,熟悉用debug跟踪程序的执行过程。
二.实验内容:1.查看cpu和内存,用机器指令和汇编指令编程(p35)2.用机器指令和汇编指令编程(p71)3.编程、编译、连接、跟踪(94页)三.实验步骤1.查看cpu和内存,用机器指令和汇编指令编程(p35)(1)使用debug,将下面的程序段写入内存,逐条执行,观察每条指令执行后,cpu中相关寄存器中内容的变化。
提示:可用E命令和A命令,以两种方式将指令写入内存。
注意用t命令执行时,cs:ip的指向。
写清楚具体用这两种方式的操作方法。
C:\Users\Administrator>debug-e 1000:0 b8 20 4e 05 16 14 bb 00 20 01 d8 89 c3 01 d8 b8 1a 00 bb 26 00 00 d8-u 1000:01000:0000 B8204E MOV AX,4E201000:0003 051614 ADD AX,14161000:0006 BB0020 MOV BX,20001000:0009 01D8 ADD AX,BX1000:000B 89C3 MOV BX,AX1000:000D 01D8 ADD AX,BX1000:000F B81A00 MOV AX,001A1000:0012 BB2600 MOV BX,00261000:0015 00D8 ADD AL,BL1000:0017 28752D SUB [DI+2D],DH1000:001A 807C0429 CMP BYTE PTR [SI+04],291000:001E 7554 JNZ 0074-rAX=0000 BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000DS=13C0 ES=13C0 SS=13C0 CS=13C0 IP=0100 NV UP EI PL NZ NA PO NC13C0:0100 0000 ADD [BX+SI],AL DS:0000=CDCS13C0:1000-ripIP 0100-rAX=0000 BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000DS=13C0 ES=13C0 SS=13C0 CS=1000 IP=0000 NV UP EI PL NZ NA PO NC1000:0000 B8204E MOV AX,4E20-tAX=4E20 BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000DS=13C0 ES=13C0 SS=13C0 CS=1000 IP=0003 NV UP EI PL NZ NA PO NC1000:0003 051614 ADD AX,1416-tAX=6236 BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000DS=13C0 ES=13C0 SS=13C0 CS=1000 IP=0006 NV UP EI PL NZ NA PE NC1000:0006 BB0020 MOV BX,2000-tAX=6236 BX=2000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000DS=13C0 ES=13C0 SS=13C0 CS=1000 IP=0009 NV UP EI PL NZ NA PE NC1000:0009 01D8 ADD AX,BXAX=001A BX=0026 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000DS=13C0 ES=13C0 SS=13C0 CS=1000 IP=0015 OV UP EI PL NZ NA PE CY1000:0015 00D8 ADD AL,BL-tAX=0040 BX=0026 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000DS=13C0 ES=13C0 SS=13C0 CS=1000 IP=0017 NV UP EI PL NZ AC PO NC1000:0017 28752D SUB [DI+2D],DH DS:002D=0D-e 1000:17 00 dc 00 c7 b4 00 00 d8 04 9c-u 1000:171000:0017 00DC ADD AH,BL1000:0019 00C7 ADD BH,AL1000:001B B400 MOV AH,001000:001D 00D8 ADD AL,BL1000:001F 049C ADD AL,9C1000:0021 44 INC SP1000:0022 032C ADD BP,[SI]1000:0024 30724D XOR [BP+SI+4D],DH1000:0027 3C07 CMP AL,071000:0029 7749 JA 00741000:002B A2A756 MOV [56A7],AL1000:002E FE064057 INC BYTE PTR [5740]1000:0032 83C605 ADD SI,+051000:0035 813C2C53 CMP WORD PTR [SI],532CAX=0040 BX=0026 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000DS=13C0 ES=13C0 SS=13C0 CS=1000 IP=0017 NV UP EI PL NZ AC PO NC1000:0017 00DC ADD AH,BL-rcsCS 1000:1000-ripIP 0017:0-rAX=0040 BX=0026 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000DS=13C0 ES=13C0 SS=13C0 CS=1000 IP=0000 NV UP EI PL NZ AC PO NC1000:0000 B8204E MOV AX,4E20-tAX=4E20 BX=0026 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000DS=13C0 ES=13C0 SS=13C0 CS=1000 IP=0003 NV UP EI PL NZ AC PO NC1000:0003 051614 ADD AX,1416-tAX=6236 BX=0026 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000DS=13C0 ES=13C0 SS=13C0 CS=1000 IP=0006 NV UP EI PL NZ NA PE NC1000:0006 BB0020 MOV BX,2000-AX=2640 BX=4026 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000DS=13C0 ES=13C0 SS=13C0 CS=1000 IP=001B NV UP EI PL NZ NA PO NC1000:001B B400 MOV AH,00-tAX=0040 BX=4026 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000DS=13C0 ES=13C0 SS=13C0 CS=1000 IP=001D NV UP EI PL NZ NA PO NC1000:001D 00D8 ADD AL,BL-tAX=0066 BX=4026 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000DS=13C0 ES=13C0 SS=13C0 CS=1000 IP=001F NV UP EI PL NZ NA PE NC1000:001F 049C ADD AL,9C-t(2)将下面3条指令写入从2000:0开始的内存单元中,利用这3条指令计算2的8次方。
Mov ax,1Add ax,axJmp 2000:0003写清楚具体如何执行,执行到什么时候停止?。
(3)查看内存中的内容。
PC机主板上的ROM中写有一个生产日期,在内存fff00~fffffH的某几个单元中,请找到这个日期并试图改变它。
写清楚查看及修改的步骤以及结果。
(4)项内存从B8100H开始的单元中填写数据,如:-e B810:0000 01 01 02 02 03 03 04 04请先填写不同的数据,观察产生的现象;在改变填写的地址,观察产生的现象。
2.用机器指令和汇编指令编程(p71)(1)使用debug,将程序段写入内存,逐条执行,根据指令执行后的实际运行情况填空。
Mov ax,ffffMov ds,axMov ax, 2200Mov ss,axMov sp,0100Mov ax,[0] ;ax=Add ax,[2] ;ax=Mov ax,[4] ;bx=Add bx,[6] ;bx=Push ax ;sp= ;修改的内存单元的地址是内容为Push bx ;sp= ;修改的内存单元的地址是内容为Pop ax ;sp= ; ax=Pop bx ;sp= ; bx=Push [4] ;sp= ;修改的内存单元的地址是内容为Push [6] ;sp= ;修改的内存单元的地址是内容为(2)仔细观察实验过程,然后分析,为什么2000:0~2000:f的内容会发生改变?3.编程、编译、连接、跟踪(94页)(1)将下面的程序保存为t1.asm文件,将其生成可执行文件t1.exe。
Assume cs:codesgCodesg segmentMOV ax,2000hMov ss,axMov sp,0Add sp,10Pop axPop bxPush axPush bxPop axPop bxMov ax,4c00hInt 21hCodesg endsEnd写出具体步骤(2)用Debug跟踪t1.exe的执行过程,写出每一步执行后,相关寄存器中的内容和栈顶的内容。