汇编语言实验

合集下载

汇编语言实验报告

汇编语言实验报告

汇编语言实验报告在计算机科学中,汇编语言是一种底层的编程语言,直接使用计算机的指令集来写程序。

与高级语言(如C ++或Java)不同,汇编程序被编写为显式的机器代码,它们可以直接在计算机上执行。

在本次实验中,我们学习了汇编语言的基础知识,并设计了一个简单的程序来演示操作系统,此程序可以打印字符串、读入字符和执行其他一些简单的操作。

我们了解了汇编语言的基本概念,例如寄存器、指令和标志位。

寄存器是CPU内部的存储空间,可用于存储数据或执行算术操作。

指令是CPU执行的单个操作,例如将数据移动到寄存器中,从寄存器中加载数据,或将数据存储到内存中。

标志位是CPU中的一些标志,用于指示例如进位或溢出等特定条件的发生情况。

之后,我们学习了如何使用汇编语言来执行简单的操作。

我们使用了mov指令将数据移动到寄存器中,使用int指令调用中断,以及使用jmp指令跳转到不同的程序行。

我们设计了一个简单的操作系统,它通过汇编程序来控制计算机的操作。

该操作系统具有以下主要功能:1. 打印字符串。

我们使用了mov指令将字符串中的数据加载到寄存器中,并使用int 指令调用中断来打印字符串。

2. 读入字符。

我们使用了int指令调用中断来读取用户输入的字符,然后将其存储在寄存器或内存中。

3. 执行简单的操作。

我们使用了jmp指令和标志位来执行条件分支,或使用算术指令来进行加减等操作。

在实验中,我们还学习了如何在调试模式下运行程序,以及如何使用汇编编译器将汇编代码转换为机器代码。

我们还使用了调试器来跟踪程序运行时的寄存器和内存内容,以及使用断点来在程序执行时停止并检查状态。

本次实验使我们更深入地了解了汇编语言的工作原理,并学习了如何设计和实现简单的操作系统。

通过了解和理解汇编语言,我们的编程能力将得到提高,帮助我们更好地理解计算机的内部工作原理。

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

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

汇编语言程序设计实验报告汇编语言程序设计实验报告引言:汇编语言是计算机中最基本的语言,通常用于处理硬件相关问题。

在这个实验中,我们学习了汇编语言的基础知识和编程技巧,并实践了用汇编语言编写程序的方法和技巧。

以下是我们的实验报告。

正文:1. 实验环境我们使用的实验环境是Intel 8086微处理器与高级汇编语言。

微处理器使用的是PCB-512主板,而高级汇编语言是MASM。

2. 实验目的我们的实验目的主要是学习汇编语言的基础知识和编程技巧,包括了汇编语言的寄存器、指令、内存管理等方面的知识。

我们的另一个目的是掌握汇编语言的常用编程技巧,能够独立完成一些简单的汇编程序。

3. 实验内容我们的实验内容主要包括以下几点:(1)学习汇编语言的基础知识,包括寄存器、指令、内存管理等方面的知识。

(2)掌握汇编语言的常用编程技巧,包括数据输入输出、运算、跳转等基本操作。

(3)实践用汇编语言编写程序,如计算器、菜单等实用程序。

(4)了解8086微处理器的结构和原理。

4. 实验过程在这个实验过程中,我们完成了以下几个程序:(1)计算器计算器是一个简单的程序,主要用于实现两个数之间的加、减、乘、除等基本运算。

我们通过输入输出指令、存储指令等指令实现了这个程序的功能。

(2)菜单菜单是一个实用程序,主要用于展示一个简单的菜单并实现用户选择相关功能的功能。

我们使用了汇编语言中的跳转指令、输入输出指令等实现了这个程序。

5. 实验结果在我们的实验中,我们成功完成了上述两个程序。

我们通过输入输出指令、存储指令等指令实现了这个程序的功能。

6. 实验总结在这个实验过程中,我们学习汇编语言的基础知识和编程技巧,并实践了用汇编语言编写程序的方法和技巧。

我们通过编写计算器和菜单等简单实用程序,加深了对汇编语言的理解和认识。

我们认为这个实验对我们今后的学习和工作都有很大的帮助。

结论:通过这个实验,我们学习了汇编语言的基础知识和编程技巧,并实践了用汇编语言编写程序的方法和技巧。

汇编语言实验报告

汇编语言实验报告

合肥工业大学实验报告课程:汇编语言程序设计专业班级:学号:姓名:实验一Debug程序的使用一. 实验目的1、熟悉DEBUG程序中的命令,学会在DEBUG下调试运行汇编语言源程序。

2、掌握8086/8088的寻址方式及多字节数据的处理方法。

二. 实验内容1、利用DEBUG程序中的“E”命令,将两个多字节数“12345678H”和“FEDCBA98H”分别送入起始地址为DS:0200H和DS:0204H两个单元中。

2、分别用直接寻址方式和寄存器间接寻址方式编写程序段,实现将DS:0200H 单元和DS:0204H单元中的数据相加,并将运算结果存放在DS:0208H单元中。

要求:本次实验的内容均在DEBUG下完成,实现数据的装入、修改、显示;汇编语言程序段的编辑、汇编和反汇编;程序的运行和结果检查。

三. 实验过程和程序基础题:1、利用DEBUG程序中的“E”命令,将两个多字节数“12345678H”和“FEDCBA98H”分别送入起始地址为DS:0200H和DS:0204H两个单元中。

2、分别用直接寻址方式和寄存器间接寻址方式编写程序段,实现将DS:0200H单元和DS:0204H单元中的数据相加,并将运算结果存放在DS:0208H单元中。

附加题:1. 从DS:0000H开始的5个16位带符号数分别记为x,y,z,v,w,用E命令初始化为:540,1,-1,1080,0, 试求w=(v-(x*y+z-540))/x2. 完成BX中1的个数的统计。

3. 用串操作指令将DS:0000开始20个字节初始化为:0CCH。

并将这20个字节的内容复制到其后的20个字节里。

四. 实验结果(包括必要的截图)基础题 1:基础题 2:附加题 1:附加题 2:附加题 3:五. 实验体会1. 在汇编语言中,变量的其实都是地址。

2. 在Debug中,数值都是16进制的。

3. 在读写内存中的数据时,必须指出数据类型是byte还是word。

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

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

实验一单指令功能测试实验一、实验目的1.会使用DEBUG软件;2.利用DEBUG单步执行功能测试指令的执行。

二、实验内容P129,14题三、实验要求:1. 在上机实验之前,首先做完作业;2. 设计如何验证指令执行的正确性操作,并在作业中描述;3. 周五上机验证,并给出上机结果。

若有出入,简要说明原因。

4. 实验报告当堂提交。

实验二完整的汇编语言程序设计实验一、实验目的1.掌握完整的汇编语言源程序的设计方法;2.掌握汇编语言源程序的执行过程。

二、实验内容设计一个程序,将所有的小写字母转换为大学字母,此程序不能改变除字母a~z外的任何其它字符。

三、实验要求(结果)1. 在上机实验之前,首先编写程序;2. 周一上机调试程序,并给出修改、运行正确的源程序;3. 分析错误原因;4. 实验报告当天提交。

实验三子程序设计实验一、实验目的1.掌握汇编语言源程序子程序设计方法;2.会使用CV软件工具。

二、实验内容编写子程序:判断三边能否构成三角形;编写主程序:输入三边,调用子程序判断,若能,则输出“Y”,否则输出“N”。

共判断10次。

三、实验要求同实验二。

实验四 宏汇编程序设计实验一、实验目的1.掌握宏汇编程序编程技术及宏调用的方法;2. 了解浮点CPU 编程方法及特点。

二、实验内容求(1+2+3+4+5+6+7+8+9)⨯LC π21的和。

三、实验要求1. 利用重复宏定义实现1、2、3⋯9数据的定义;2. 编写程序,上机验证结果的正确性。

3. 其它要求同前。

实验五 多模块程序设计实验一、实验目的1.掌握汇编段的属性的含义;2. 掌握利用LINK 将多模块连接起来的方法;3.掌握利用库文件将多模块连接起来的方法。

二、实验内容将字符串反序。

具体要求:1. 子模块:完成反序。

2. 主模块:输入字符串,调用子模块,显示反序后字符串。

3. 用 LINK 或库文件的方法实现多模块连接。

4. 其他要求同前。

实验六 混合程序的开发实验一、实验目的1.了解混合调用中的参数设置;2. 掌握混合调用的方法;二、实验内容求(1+2+3+4+5+6+7+8+9)⨯LC π21的和,并将和显示在屏幕上;具体要求:1. 用汇编语言完成子程序LC π21的编程;2. 通过C++完成实验内容的要求。

计算机汇编语言实验报告

计算机汇编语言实验报告

计算机汇编语言实验报告一、实验目的本实验旨在通过编写计算机汇编语言程序,加强对计算机组成原理和汇编语言的理解,同时熟悉实际编写和调试过程。

二、实验内容1.用汇编语言编写一个简单的计算器程序,实现加法和减法操作。

2.编译并运行程序,测试其功能的正确性。

3.运用调试工具进行程序的调试,检查代码的运行流程。

三、实验步骤1.确定程序功能和设计思路:本次实验的目标是编写一个计算器程序,能够对两个数进行加法和减法操作。

我们可以通过定义一些操作码来表示不同的操作,再通过输入不同的操作码来执行相应的操作。

2.编写汇编语言程序:首先,需要定义一些变量和常量来存储输入的数和操作码。

然后,使用汇编语言的运算指令和控制指令来实现加法和减法操作,并将结果存储到指定的变量中。

最后,使用输出指令来显示结果。

3.编译并运行程序:将汇编语言程序编译为机器码,并通过计算机的指令集执行程序。

4.调试程序:利用调试工具,逐步执行程序,检查代码的运行流程和结果的正确性。

如有错误,进行适当的修改和调试。

5.测试功能和性能:使用不同的数和操作码进行测试,验证程序的功能和正确性。

四、实验结果经过编写、编译和调试,我们成功实现了一个简单的计算器程序。

程序能够根据输入的操作码,对两个数进行加法和减法操作,并将结果显示出来。

经过多次测试,程序的功能、正确性和性能都符合预期要求。

五、实验感想通过本次实验,我们对计算机组成原理和汇编语言有了更深入的理解。

在编写程序的过程中,我们发现汇编语言相比高级语言更加底层,需要考虑更多的细节和机器指令的使用。

同时,我们也意识到了调试的重要性,调试工具能够帮助我们分析和修正代码的错误,提高程序的质量。

六、实验总结通过本次实验,我们对计算机汇编语言的应用有了更深入的了解。

我们掌握了汇编语言程序的基本结构和语法规则,学会了使用汇编语言指令进行计算和控制。

同时,我们也提升了调试和测试的能力,加深了对计算机组成原理和汇编语言的理解。

汇编语言程序上机实验

汇编语言程序上机实验

设置断点
在需要调试的代码行设置断点,以便在程 序运行时暂停执行。
分析程序的输出结果
运行可执行文件
在实验环境中运行可执行文件,观察 程序的输出结果。
分析结果
根据程序的输出结果,分析程序的逻 辑和功能是否正确实现。如果输出结 果与预期不符,检查源代码和调试过 程,找出问题所在并进行修正。
04
实验内容
根据实验需求选择合适的硬件设备是实验成功的关键,需要 考虑设备的性能、兼容性和可扩展性等因素。
03
实验步骤
编写汇编语言源代码
确定实验题目和要求
根据实验指导书的要求,明确实验目的和任务,确定需要编写的 汇编语言程序。
编写代码
使用汇编语言编写源代码,实现程序的功能。注意语法和指令的 正确性,确保程序逻辑正确。
编写一个简单的汇编语言程序
总结词
了解汇编语言的基本语法和结构
详细描述
编写一个简单的汇编语言程序,如输出“Hello, World!”的程序,了解汇编语言的指令、寄存器、数据和程序结 构等基本概念。
实现一个简单的计算器程序
总结词
掌握汇编语言的算术运算指令
详细描述
编写一个可以进行加、减、乘、除运 算的简单计算器程序,通过汇编语言 的算术指令实现。
了解汇编语言程序的 基本结构,如程序头、 数据段、代码段等。
熟悉子程序和中断服 务程序的编写和使用。
掌握汇编语言程序的 流程控制结构,如顺 序、分支、循环等。
掌握汇编语言的程序调试方法
熟悉汇编语言程序的调试工具, 如调试器、反汇编器等。
掌握调试工具的基本使用方法, 如设置断点、单步执行、查看 寄存器值等。
调试程序并运行可执行文件
打开调试器

汇编语言实验报告

实验一汇编程序的汇编及运行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)编写源程序。

汇编语言实验报告

汇编语⾔实验报告汇编语⾔实验报告专业:班级:姓名:学号:2011年12⽉14⽇⽬录实验1 利⽤DEBUG调试汇编语⾔程序段 (3)实验2 初级程序的编写与调试实验(⼀) (11)实验3 初级程序的编写与调试实验(⼆) (20)实验4 汇编语⾔程序上机过程 (28)实验5 分⽀程序实验 (33)实验6 循环程序实验 (40)实验7 ⼦程序实验 (45)实验1 利⽤DEBUG调试汇编语⾔程序段⼀.实验⽬的1.熟悉DEBUG有关命令的使⽤⽅法;2.利⽤DEBUG掌握有关指令的功能;3.利⽤DEBUG运⾏简单的程序段。

⼆.实验内容1.进⼊和退出DEBUG程序;1)开始—运⾏,输⼊cmd,点确定进⼊命令窗⼝2)在命令窗⼝中输⼊dubug进⼊debug程序3)进⼊debug窗⼝后,输⼊q命令退出debug2.学会DEBUG中的1)D命令(显⽰内存数据D 段地址:偏移地址)例1:-D100 ;显⽰DS段, 0100开始的128个节内容说明: 指定要显⽰其内容的内存区域的起始和结束地址,或起始地址和长度。

① D SEGREG[起始地址] [L 长度];显⽰SEGREG段中(缺省内默认为DS), 以[起始地址] (缺省内为当前的偏移地址),开始的[L 长度] (缺省内默认为128)个字节的内容.② D SEGREG[段地址:偏移地址];显⽰SEGREG段中(缺省内默认为DS), [段地址:偏移地址] 开始的[L 长度] (缺省内默认为128)个字节内容-D ;默认段寄存器为DS,当前偏移地址(刚进⼊debug程序偏移地址为0100H)-D DS:100 ;显⽰DS段, 0100H开始的128个字节内容-D CS:200 ;显⽰CS段, 0200H开始的128个字节内容-D 200:100 ;显⽰DS段, 0200:0100H开始的128个字节内容-D 200 ;显⽰DS段, 0200H开始的128个字节内容-D 100 L 10 ;显⽰DS段, 100H开始的8H个字节内容2)E命令(修改指定内存)-E100 11 22 33 44 55 66 77 88-D 100结果:0AF1:0100 11 22 33 44 55 66 77 88例2:-E 100:E 地址数据表;从指定的地址开始⽤数据表给定的数据修改存储单元。

汇编语言程序设计实验小结

汇编语言程序设计实验小结汇编语言程序设计实验是计算机科学与技术专业中非常重要的一门课程。

通过这门课程的学习,我们可以更深入地理解计算机底层的工作原理,掌握汇编语言的编程技巧,提高我们的编程水平和代码优化能力。

在这篇小结中,我将分享我在汇编语言程序设计实验中的学习心得和经验,并总结出一些重要的要点。

一、实验背景汇编语言程序设计实验主要通过实践来加深我们对汇编语言的理解和应用。

通过编写和调试汇编语言程序,我们可以深入了解CPU的工作原理、寄存器的使用方法以及程序的执行过程等。

同时,通过实验,我们还可以学习如何对程序进行优化,提高程序的运行效率。

二、实验过程1. 实验环境搭建在进行汇编语言程序设计实验之前,我们首先需要搭建实验环境。

通常情况下,我们需要安装一个适合的汇编语言开发工具,比如MASM、TASM等。

同时,我们还需要一台支持汇编语言开发的计算机。

2. 实验内容汇编语言程序设计实验的内容通常包括基本的汇编语言语法、数据传送与运算指令、条件跳转与循环指令、子程序调用与返回、堆栈操作等。

我们需要根据实验指导书中给出的要求,编写相应的汇编程序,并进行调试。

3. 调试与优化在编写汇编程序的过程中,我们可能会遇到一些错误和问题。

这时候,我们需要进行调试,找出错误的原因,并进行修正。

在调试的过程中,我们可以使用调试器进行单步调试,查看寄存器的值以及内存的变化,帮助我们理解程序的执行过程。

同时,为了提高程序的运行效率,我们还需要进行优化。

可以通过改变算法、减少不必要的操作、优化循环结构等方式来提高程序的性能。

三、学习收获1. 深入了解计算机底层工作原理通过汇编语言程序设计实验,我更加深入地了解了计算机底层的工作原理。

我学会了如何使用汇编语言编写程序,了解了指令的执行过程,掌握了寄存器的使用方法,进一步提高了对计算机硬件的理解。

2. 提高了编程水平和代码优化能力汇编语言是一种较底层的编程语言,编写汇编语言程序需要我们对计算机底层有深入的理解。

汇编语言实验三简单程序的编写与调试

实验三简单程序的编写与调试一&实验目的1.进一步熟悉DEBUG命令;2.熟悉汇编指令的功能及应用;3.掌握简单的汇编语言程序编写与调试。

二&实验环境微型计算机一台DOS或WINDOWS操作系统,MASM开发套件。

三&实验要求1.熟练掌握常用DEBUG命令;2.熟练掌握数据传送指令、比较指令、转移指令和循环指令并能够进行简单程序设计;3.用DEBUG的有关命令调试简单程序。

四&实验内容1、比较AX、BX、CX中带符号数的大小,将最大的数放在AX中。

试编写此程序段。

2、已知存储器中有一个首地址为ARRAY的8个字的数组,现要求数组中的每个数加1(不考虑溢出),试编写完成此功能的程序段。

3、将存储器中从DS:1000H单元开始的10个字节的数据累加求和。

4、使用DEBUG对上述编写的程序进行调试。

五&实验步骤1、比较AX、BX、CX中带符号数的大小,将最大的数放在AX中。

试编写此程序段。

1)程序:cmp ax,bxjge next0xchg ax,bxnext0: cmp ax,cxjge next1xchg ax,cxnext1: …2)使用DEBUG调试:使用r reg命令在ax、bx、cx中预置三个大小不同的数。

使用a命令输入汇编源程序,注意在符号地址输入时,应输入其对应的数值地址。

使用t命令单步执行,再使用r命令可观察到程序全部执行后,ax中内容为最大数。

2、已知存储器中有一个首地址为ARRAY的8个字的数组,现要求数组中的每个数加1(不考虑溢出),试编写完成此功能的程序段。

1)程序:mov cx,8lea bx,arrayrotate: inc word ptr [bx]add bx,2loop rotate2)使用DEBUG调试:使用e命令从某一内存单元开始预置一个8个字的数组。

使用a命令输入汇编源程序,注意在符号地址输入时,应输入其对应的数值地址。

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

汇编语言实验 第一部分汇编语言基础实验 一、说明 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.指令集挑选伪指令 在缺省情况下,masm和tasm只识别8086/8088的指令,为了让编译器可以识别80386及其以上微处理器的新增指令或功能增强的指令,必须在程序中使用提示处理器类型的伪指令。在一个源程序中,可以根据需要安排多条说明处理器类型的伪指令。对tasm来说,该类伪指令可安排在源程序中任何位置,但对masm,该类伪指令只能安排在段外。通常,表示处理器类型的伪指令有如下几条:

.8086挑选8086/8088指令集,可以省略 -1- .386挑选80386指令集 .386p选择80386指令集,包括特权指令.486选择80486指令集 .486p挑选80486指令集,包含特权指令 2.段定义伪指令segment/ends 在实模式下,32十一位处理器为了维持向上相容,所以段的最小长度仍然为64k,这样的段称作16位段,但在保护模式下,段长度可以达至4gb,这样的段称作32位段。为了相容,保护模式下也可以采用16位段。通常一个完备的段定义格式如下:

segment[定位类型][组合类型][类别][属性类型]…;段内容ends 表中2-1定位类型表明定位类型byteworddwordparapage含义用下一个需用字节地址用下一个需用字地址用下一个需用双字地址用下一个需用节地址(16字节为节边界)用下一个需用页地址(256字节为页边界)

(1)定位类型规定段的起始位置类型,有五种方式:byte,word,dword,para,page,如表2-1所示。

(3)类别用作则表示段的分类。例如’data’,’code’,连接器总是并使类型相同的段相连,由用户选定。

(4)属性类型规定16位段或32位段。use16表示16位段,use32表示32位段。 3.数据定义伪指令 数据定义伪指令功能是为操作数分配存储单元,并用变量与存储单元相联系。其一般格式为:[变量]助记符操作数其中助记符可以是:

db:一个操作数挤占一个字节单元,定义的变量为字节变量;dw:一个操作数挤占一个字单元,定义的变量为字变量;dd:一个操作数挤占一个双字单元,定义的变量为双字变量; df:一个操作数占用一个三字单元,定义的变量为三字变量,该助记符仅用于386以 -2- 上的cpu,定义的变量作为指针使用,其低4字节存放偏移地址,高2字节存放段地址;dq:一个操作数占用一个四字单元,定义的变量为四字变量;

dt:一个操作数挤占十个字节单元,定义的变量为十字节变量,采用该助记符时,对于十进制操作数,必须得出后缀d,没后缀的预设为放大bcd码。

4.段说明伪指令assume 段表明伪指令的通常格式如下: assume:,:<段名>,...assume:nothing可以用来取消段性质的规定。 5.符号定义伪指令 (1)等值伪指令equ,其一般格式为:equ (2)等号伪指令“=”的格式与功能和equ相似。相同的就是,在同一个程序中,“=”可以对一个符号重复定义,equ却无法对同一个符号重复定义。

(3)解除定义伪指令purge的功能是解除指定符号的定义,解除符号定义后,可用equ重新定义,其一般格式为:

purge 6.过程定义伪指令proc/endp 过程定义伪指令proc/endp格式如下:proc属性?retendp 过程名也是一种标号,其属性由属性字段表明。过程属性可以是near(默认类型,可省略)或far,调用过程指令和被调用过程在同一逻辑段,过程则可定义为near,否则定义为far。根据过程的属性,ret指令自动汇编成近过程返回指令或远过程返回指令。

另外,若调用过程指令和被调用过程无此同一程序模块中(即为调用程序和被调用过程分属两个文件),则在调用程序中用extrn伪指令将被调用过程表明成外部的,而在过程程序中用public伪指令表明成公用的。

7.标号定义伪指令label 标号定义伪指令label就是定义标号为选定的属性,其通常格式为:标号label属性 3.2语句格式1.标号 标号用以代表一条指令,代表一条指令所在单元的地址,在代码段中采用。标号与其所

-3- 代表的指令之间用冒号分离。如果一条指令做为迁移的目标或做为程序中的第1条指令语句,前面必须提标号,否则没必要提标号。其格式为:“标号:指令语句”。标号存有三个属性:段属性、偏转属性和类型属性。

段属性:标号所代表指令单元的段地址,即代码段的段地址。偏移属性:标号所代表指令单元的段内偏移地址。

类型属性:用以阐明标号就是段内提及(类型为near,迁移源和迁移目标在同一个代码段中),还是段间提及(类型为far,迁移源和迁移目标在相同的代码段中)。

2.变量 变量用以代表数据所在单元的地址,在数据段、额外段、堆栈段中采用。变量与其所代表的数据之间用空格分离。变量也存有三个属性:段属性、偏转属性和类型属性。段属性:变量所代表数据单元的段地址(ds值、es值或ss值)。偏转属性:变量所代表数据单元的段内偏转地址。

类型属性:用来指明变量所代表数据单元的字节数,db、dw、dd、df、dq、dt所定义变量的类型值分别为1、2、4、6、8、10。

在同一个程序中,一个标号或变量就可以定义一次,无法重复定义。 3.操作码 操作码用以阐明操作方式的性质或功能。指令中的助记符都就是操作码。操作码与操作数之间用空格分离。

4.操作数 指令中的操作数用以选定参予操作方式的数据。对于通常指令,可以有一或两个操作数,也可以没操作数;对于伪指令和宏指令,可以存有多个操作数。操作数多于一个时,操作数之间用逗号分离。操作数可以就是常数或表达式。

5.注释项 注解就是语句的表明部分,用以表明一条指令或一段程序的功能,由分号“;”已经开始。编订源程序时,注解部分不产生机器代码。

6.续行符 一条语句可以写下在多行上,续行符为&。 7.重复操作符dup 重复定义多个相同单元的数据时使用。例如 adb3dup(?)相当于adb?,?,? 8.留存符号? 根据数据定义伪指令的类型,保留相应单位的内存空间,不赋初值。 -4- 9.当前地址指针$ 在汇编程序对汇编语言源程序展开编订的过程中,当前正在编订的指令的地址用当前地址指针$命令。对分配内存空间的数据定义伪指令,当前数据分配的边线用$指针命令。即为当前地址指针总是指向等待分配的内存单元的地址。用户可以轻易提及当前地址指针的值。例如:adb“hello”?lenequ$-a

3.3dos系统功能调用 dos系统功能调用就是汇编程序通过int21h软件中断去调用dos内部的子程序而展开某种操作方式的一个方法,dos系统功能调用在实模式下的编程中应用领域很广为,大致存有上百种功能,这些功能的具体内容含义和参数设置可以查询手册,而功能调用的基本格式如下:movah,功能号;准备工作入口参数int21h

下面列出汇编语言程序设计中经常使用的两种功能调用及其说明。 1.09h号功能调用 将数据段(ds)中以$字符结尾的一个字符串输出到屏幕上。入口参数:dx寄存器存放该字符串的首地址(有效地址部分)出口参数:无

特别注意:9号系统功能调用毁坏al寄存器内容,应当特别注意留存。格式:leadx,字符串局部变量movah,9int21h

2.程序正常返回dos系统的方法(1)调用4ch号系统功能功能:返回系统 入口参数:al=中止代码或并无格式:movah,4chint21h 或:movax,4c00hint21h (2)采用语句int20h功能:回到系统 入口参数:cs指向程序段前缀

相关文档
最新文档