汇编语言程序设计实验指导
- 格式:doc
- 大小:1.25 MB
- 文档页数:48
汇编语言程序设计实验报告汇编语言程序设计实验报告引言:汇编语言是计算机中最基本的语言,通常用于处理硬件相关问题。
在这个实验中,我们学习了汇编语言的基础知识和编程技巧,并实践了用汇编语言编写程序的方法和技巧。
以下是我们的实验报告。
正文:1. 实验环境我们使用的实验环境是Intel 8086微处理器与高级汇编语言。
微处理器使用的是PCB-512主板,而高级汇编语言是MASM。
2. 实验目的我们的实验目的主要是学习汇编语言的基础知识和编程技巧,包括了汇编语言的寄存器、指令、内存管理等方面的知识。
我们的另一个目的是掌握汇编语言的常用编程技巧,能够独立完成一些简单的汇编程序。
3. 实验内容我们的实验内容主要包括以下几点:(1)学习汇编语言的基础知识,包括寄存器、指令、内存管理等方面的知识。
(2)掌握汇编语言的常用编程技巧,包括数据输入输出、运算、跳转等基本操作。
(3)实践用汇编语言编写程序,如计算器、菜单等实用程序。
(4)了解8086微处理器的结构和原理。
4. 实验过程在这个实验过程中,我们完成了以下几个程序:(1)计算器计算器是一个简单的程序,主要用于实现两个数之间的加、减、乘、除等基本运算。
我们通过输入输出指令、存储指令等指令实现了这个程序的功能。
(2)菜单菜单是一个实用程序,主要用于展示一个简单的菜单并实现用户选择相关功能的功能。
我们使用了汇编语言中的跳转指令、输入输出指令等实现了这个程序。
5. 实验结果在我们的实验中,我们成功完成了上述两个程序。
我们通过输入输出指令、存储指令等指令实现了这个程序的功能。
6. 实验总结在这个实验过程中,我们学习汇编语言的基础知识和编程技巧,并实践了用汇编语言编写程序的方法和技巧。
我们通过编写计算器和菜单等简单实用程序,加深了对汇编语言的理解和认识。
我们认为这个实验对我们今后的学习和工作都有很大的帮助。
结论:通过这个实验,我们学习了汇编语言的基础知识和编程技巧,并实践了用汇编语言编写程序的方法和技巧。
前言《汇编语言程序设》在计算机科学中是一门综合性的专业基础课,是计算机专业的核心课程。
它不仅是一般程序设计的基础,而且也是设计和实现编译程序、操作系统及其它系统程序和大型应用程序的重要基础。
它为后续专业课程的学习打下了理论基础和实践基础。
由于汇编语言程序设中有大量的指令,因此汇编语言程序设实验课在教学中占有重要的地位。
通过实验可以使学生更好的巩固和掌握所学的内容,进一步增强动手能力和解决实际问题的能力。
为了提高实验的效率,任课教师提前一周布置实验任务,并且进行一定的分析和讲解,要求学生进行准备工作。
准备工作包括查找资料,设计算法,写出预习报告,其中预习报告包括题目的解题思想,概要设计,实现算法的源代码清单等。
每次实验前,学生应向实验指导教师上交实验预习报告,预习报告经指导教师认可后方能进行实验。
实验完毕写出实验报告,用A4纸打印成册(源程序存盘),由学习委员统一收齐交指导教师审阅评定。
实验成绩考核:实验成绩占《数据结构》总评成绩的20%,其中实验效果占10分,出勤率和实验报告各占5分。
有以下情形之一者,实验成绩为不及格:1.迟到,早退,无故缺勤总共3次及以上者;2.未按时完成实验达4次及以上者;3.缺交实验报告3次及以上者。
实验一简单程序编制和上机过程一.实验目的1.掌握计算机常用代码的软件转换技术。
2.熟悉DEBUG软件的使用。
3.掌握简单程序的编程方法。
二.实验内容代码转换是计算机和I/O设备进行信息交换的重要技术之一。
各种I/O设备所提供和接收的数据编码不尽相同。
为了处理这些信息,计算机必须将各种不同编码形式的信息转换成别种适当的数据形式。
例如,键盘输入的数据均为ASC Ⅱ码形式存储在内存中,通常要求将其转换成相应的数据形式。
一般实现代码转换有两种方法:1.软件法利用CPU的算术逻辑运算功能,通过运算或查表实现各种数据代码间的转换。
该方法经济但速度慢。
2.硬件法利用专用代码转换集成电路进行转换。
汇编语言程序设计实验报告课程名称汇编语言程序设计班级姓名学号指导教师汇编语言程序设计实验一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 寄存器的内容变化,尤其是标志位的变化。
重庆师范大学涉外商贸学院计算机各专业实验用书汇编语言程序设计实验指导书(第一版)张开成编前言为适应教学内容由简到繁、由易到难、由浅入深的教学特点,我们编写了这本简易实验指导书,用以指导实验教学。
该指导书分两部分,第一部分指出实验的实验目的、实验内容、实验准备、实验要求、共提出十五个实验,需三十个学时完成。
第二部分为十五个实验的全部程序,仅供学生参考。
该实验指导书由数计学院计算机教研室张开成同志编写。
2010年2月第一部分提出各实验的实验内容、实验目的、实验要求和学时分配实验一:汇编语言基本操作实验(2学时)一、实验目的:明确QE、MASM、LINK三个系统软件的作用。
掌握汇编语言程序的编辑、汇编、连接过程。
二、实验内容:1、编写一个程序:用十进制输出一个按键的AS CⅡ值。
2、从键盘上读入两个一位数(必须保证按下数字键),输出它们的积。
三、实验准备:1、预习QE、MASM、LINK 三个软件的使用方法。
2、按实验要求,编写好实验源程序。
四、实验步骤:1、用QE编辑扩展名为.ASM的源文件。
2、汇编、连接生成扩展名为.EXE的可执行文件。
3、运行程序。
五、实验报告要求:1、总结用QE编辑源程序的方法。
2、说明源程序的连接、汇编过程。
3、分析运行结果。
4、按要求写出完整的实验报告(必须列出程序清单)。
实验二:分支程序设计实验(2学时)一、实验目的:1、学会简单分支和多分支程序的设计方法。
2、掌握程序的调试方法。
二、实验内容:1、从键盘读入两个一位数,输出它们的积。
若为非数字键,则显示字符“E”,退出程序。
2、从键盘接收一个按键,如为小写字母,则显示“L”,是大写字母,则显示“U”,如是数字,则显示“N”,都不是则显示“*”。
三、实验准备:1、预习分支程序设计方法。
2、按实验内容要求,编写好实验源程序。
四、实验步骤:1、用QE编辑扩展名为.ASM的源文件。
2、汇编、连接生成可执行文件.EXE。
3、运行程序。
青岛理工大学课程实验报告
课程名称汇编语言程序设计班级实验日期
2013.11.3
姓名学号实验成绩
实验
名称
子程序
实验目的及要求1.掌握子程序设计相关指令和伪指令的使用方法
2.掌握子程序设计方法, 特别是参数传递方法
3.掌握主程序和子程序之间的调用关系和调用方法
4.熟悉循环和子程序结合应用解答问题的思路
实验环境1.命令行方式
2.MASM.EXE LINK.EXE DEBUG.EXE
实验内容1.设DATA1开始的内存单元中, 存放着一串带符号字数据, 要求采用冒泡排序算法(Bubble Sort)按照从小到大的顺序排序并将排好序的数据存在DATA1开始的单元。
然后在显示器输出排好序的数据, 中间用’,’隔开。
2.输出数据使用子程序方式。
算法描述及实验步骤步骤:
(1)设置数据段地址
(2)设置堆栈段地址
(3)设置堆栈指针
(4)调用9号功能, 输出一个提示性字符串。
(5)循环进入子程序, 输出原始数据。
(6)在子程序内循环输出每一位的十进制数字。
(7)主程序进行内外循环, 进行冒泡排序。
(8)再一次调用子程序输出排序后的结果。
调试过程及实验结果调试过程:
(2)(1)在输出时, 调用DOS 9号功能, 并不是只要语句MOV AH,09H
(3)它是存在入口条件的, 入口条件:DS:DX=输出字符缓冲区首地址。
所以前面必须加上MOV DX,OFFSET NOTE1。
(4)汇编语言是不会再输出汉字的。
(5)子程序结束时一定要有RET
(6)冒泡排序也遇到一些困难。
调试结果:。
《汇编语言程序设计》实验指导书计算机系统结构团队编西南科技大学计算机科学与技术学院2011年3月实验指导书说明汇编语言程序设计是一门实践性很强的课程,只有通过上机实践才有可能掌握设计技术并使其达到较高的水平,因此编写了实验指导书,为汇编语言程序设计课程的实验教学服务。
实验指导书共分三部分,第一部分是实验的预备知识,介绍了汇编语言程序运行时所需要的一些应用程序;第二部分是对实验报告的要求。
第三部分是实验题目,分为验证型实验和设计型实验。
在具体的实验过程中可以根据学生情况进行选择。
目录:第一部分汇编语言程序设计实验基础知识概述 (4)1.1、汇编程序MASM.EXE (4)1.1.1 宏汇编程序的功能 (4)1.1.2 汇编程序的用法 (4)1.1.3 MASM出错信息 (5)1.1.4 连接程序LINK.EXE (6)1.2 DEBUG命令详解 (7)1.2.1 DEBUG的功能 (7)1.2.2 DEBUG的使用方法 (7)1.2.3 DEBUG命令功能说明 (8)第二部分实验要求 (36)2.1 实验要求 (36)2.2 实验报告要求 (36)2.3 加强实践能力的培养 (36)第三部分实验内容 (37)实验1 MASM、LINK指令的使用实验 (37)实验2 汇编命令(伪指令)实验...................................................... 错误!未定义书签。
实验3 顺序结构程序实验................................................................ 错误!未定义书签。
实验4 简单分支结构程序实验 (39)实验5 循环结构程序实验 (41)实验6 子程序实验 (43)实验7 DOS功能调用 (46)实验8 排序和检索程序实验 (47)实验9 字符串操作实验 (51)第四部分参考资料 (57)第一部分汇编语言程序设计实验基础知识概述1.1、汇编程序MASM.EXE经过编辑的程序所建立的汇编语言源程序,是不能直接在计算机上运行的。
实验五汇编语言程序设计实验(一)一、实验目的1、了解和掌握汇编语言子程序和主程序的设计。
2、掌握循环程序的设计。
3、掌握汇编语言主程序与子程序的调用和参数传递。
4、进一步熟悉在PC机上建立,汇编,链接,调试和运行8086、8088汇编语言程序的过程。
二、实验内容1、复习汇编语言源程序的上机过程:2、编写一个完整程序(包含循环设计和子程序设计)在以strg为首地址的缓冲区中存放着1个字符串,以-1作为结束标志,编程统计字符串长度,并将结果存入lenth单元。
要求统计字符串用子程序完成。
data segmentstrg db ‘abcd’,-1lenth dw ?data endscode segmentassume cs:code,ds:datastart:mov ax,datamov ds,axlea dx,strgcall scountmov lenth,bxmov ah,4chint 21hscount proc nearpush sixor bx,bxmov si,dxnext:cmp byte ptr[si],-1jz overinc bxinc sijmp nextover:pop siretscount endpcode endsend start三、实验器材IBM PC 微机一台四、实验要求1、正确理解本次实验的目的,内容和原理。
2、能编写相应的程序五、实验报告要求完成下面任务:从键盘输入1个长度小于100的字符串,存入以buff 为首地址的缓冲区,其中如有大写字母,要求用子程序转换成小写字母,字符串以回车键作为结束。
写出操作步骤,程序清单,程序注释,实验现象。
汇编语言程序设计实验指导【实验提要】以下列举的10个实验,都是以Intel的8086及后续系列微处理器的指令系统为核心,采用宏汇编工具MASM6. X以及调试工具DEBUG或DEBUG32,针对本教材所述内容进行相关的上机实践。
旨在帮助学生加深认识和理解理论教学知识,通过大量的上机实验熟悉8086 CPU的指令功能、用途和使用技巧,进而提高汇编语言程序设计的能力。
(带*号的为选作内容)实验一调试工具DEBUG的应用实验目的通过实验掌握下列知识:1、8086指令: MOV,ADD,ADC,SUB,SBB,DAA,XCHG的功能;2、DEBUG命令: A,D,E,F,H,R,T,U的使用;3、BCD码、ASCII码及用十六进制数表示二进制码的方法;4、寄存器: AX,BX,CX,DX,FLAGS,IP。
内容及步骤注:本次实验可以参照教材上关于DEBUG的叙述内容进行。
一、DEBUG 命令使用1、开机后,切换到命令提示符窗口下,出现提示符后键入命令DEBUG, 进入调试环境,显示提示符 '- '。
2、用命令 F 200 220 'AB' 将'AB'的两个ASCII码循环填入内存。
注:第一个参数200是当前段的起始偏移地址,第二个参数220是终了偏移地址,第三个参数‘AB’是被填入的数值,若不给出第二个参数则填入128(8行)个字节。
3、用命令 D200 观察内存中的十六进制码及屏幕右边的ASCII字符。
4、用命令 F230 23F 12 重复上二项实验,观察结果并比较。
5、用命令 E200 41 42 43 44 45将A-E的ASCII码写入地址为200开始的内存单元中,再用D命令观察结果,看键入的十六进制数和ASCII码的对应关系。
6、用H命令检查下列各组十六进制数的和与差(补码表示):(1)56H,34H (2)23H,45H (3)AB,3045H注:输入 H 12 34 则在下一行显示0046 FFDE,即二者的补码和与差。
在DEBUG环境下所有数据和地址都是按16进制处理,所以不要加后面的H标志。
7、用R命令检查各寄存器内容,特别注意AX,BX,CX,DX,IP及标志位中ZF,CF和AF的内容。
注:若在DEBUG32环境下用R16和R32命令分别显示16位和32位寄存器内容。
8、用R命令将AX,BX内容改写为1050H及23A8H。
二、8086常用指令练习1、传送指令1)用A命令在内存400H处键入下列内容:-A 0400****:0400 MOV AX,1234****:0403 MOV BX,5678****:0406 XCHG AX,BX****:0408 MOV AH,10****:040A MOV AL,20****:040C MOV CX,89AB****:040F XCHG AX,CX****:0411-注:****为段寄存器CS的当前值,内容是不一定的,每行命令以回车键结束。
2)用U命令检查键入的程序并记录,特别注意左边的机器码与指令的对应关系。
-U 04003)用T命令逐条运行这些指令,每运行一行指令观察各寄存器及IP的变化情况,并注意标志位的变化情况。
-T =0400 (注:=400是表示从偏移地址400处开始单步执行)-T (不给出地址,则表示接续上一条指令执行)-T┇2、加减法指令:1)用A命令在内存100H处键入下列内容:MOV AH,11MOV AL,22ADD AL,AHSUB AL,33MOV CX,1234MOV DX,5678ADD CX,DXSUB CX,AXSUB CX,CX2)用U命令检查键入的程序及对应的机器码。
3)用T命令逐条运行这些指令,检查并记录有关寄存器及ZF情况。
3、带进位加减法:1)用A命令在内存200H处键入下列内容,并用U命令检查:MOV AH,12MOV AL,84MOV CH,56MOV CL,78ADD AL,CLADC AH,CHMOV DH,A7MOV DL,58SUB DL,7FSBB DH,342)用T命令逐条运行这些指令,检查并记录有寄存器及CF内容。
3)上面这段程序若改用16位操作指令达到同样结果,怎么改?试修改并运行之。
* 4、BCD码加减法(选作)1)内容:MOV AL,65ADD AL,16DAA2)要求:用A 命令键入,U命令检查,T命令逐条运行并记录有关寄存器及AF内容。
注:相加后AL值本来是7B,经DAA指令调整后变为81,即65和16两个BCD码的和。
实验二内存操作数及寻址方法实验目的通过实验掌握下列知识:1、DEBUG命令:A,T,D,F,G;2、数据在内存中的存放方式和内存操作数的几种寻址方式;3、汇编指令:INC,DEC,LOOP,INT 3的应用;4、汇编语言伪指令:BYTE PTR和WORD PTR的应用。
实验内容和步骤一、内存操作数及各种寻址方式使用程序内容:MOV AX,2000MOV [200],AXMOV BX,210MOV BYTE PTR[BX],50MOV CL,40INC BXMOV [BX],CLDEC CLMOV SI,5MOV [BX+SI],CLMOV [BX+SI+1],CLMOV WORD PTR[BX+SI+2],1234操作步骤1)用A命令键入上述程序,并用T命令逐条运行。
2)每运行一条有关内存操作数的指令,要用D命令检查并记录有关内存单元的内容并注意是什么寻址方式。
注:D命令显示结果时,双字节数在内存的存放是高地址对应高数据位;指令中出现的BYTE PTR及WORD PTR是因为操作数的宽度必须一致。
二、求累加和程序程序内容:MOV BX,200MOV CX,9XOR AX,AXADD AL,[BX] ;按字节相加ADC AH,0 ;若有进位则到AH中INC BXLOOP 108INT3操作步骤:1)进入DEBUG环境。
2)用命令F 200 L10 40 在内存200H-20FH地址处填入一系列值40H。
3)用命令A 100 将上述程序键入到100H开始的内存中。
注:LOOP指令用到108H号地址,即为ADD指令的当前地址,构成一个循环。
4)用命令G =100 执行该程序段,程序运行后停在INT 3 指令上,此时观察AX寄存器的值为240H,即为9个40H的和。
注:INT 3指令是一条断点中断指令,程序遇到该指令则停止。
5)用T =100命令单步执行,观察IP、CX及AX寄存器的值,分析程序执行过程。
实验三数据串传送和查表程序实验目的通过实验掌握下列知识:1、利用简化段定义方法实现程序结构定义;2、利用DOS的21H号中断调用完成输入输出;3、查表法和查表指令XLAT;4、数据串传送指令MOVS及重复前辍REP;5、掌握EQU和DUP伪指令的用法。
实验内容及步骤一、利用查表方法显示内存单元的内容1、编辑下列程序:.model small.stack.datastr1 db 'ABCDEFGHIJ' ;待显示的内存区内容str2 db 'Please input the number you will display:',10,13,'$' .code.startupmov ah,9mov dx,offset str2int 21h ;显示STR2字符串的内容,即提示信息mov ah,1int 21h ;输入待显示的字符序号(0-9)mov bx,offset str1sub al,30hxlat ;查STR1表,对应序号的字符ASCII码进入ALmov dl,almov ah,2int 21h ;显示对应字符.exit 0End2、程序汇编通过后,在运行过程中输入0-9的任意数字,显示STR1字符串中对应位置的字符。
3、在DEBUG环境中,用P命令调试执行该程序,察看AL寄存器的变化情况及结果的输出,分析其执行过程。
二、数据串传送程序1、编辑下列程序:.model small.stack.datastr1 db 'abcdefghijklmn' ;源串定义lengs equ $-str1str2 db lengs dup (?),'$' ;目标串.code.startupmov ax,dsmov es,ax ;使DS和ES为同一个段cldlea si,str1lea di,str2mov cx,lengsrep movsb ;串复制mov ah,9mov dx,offset str2int 21h ;显示目标串.exit 0End2、程序汇编通过后,运行程序察看输出结果。
3、在DEBUG环境中,用P命令调试执行该程序,察看SI、DI寄存器及相应内存单元的变化情况,分析其执行过程。
4、如果把源串的小写字母复制到目标串的同时再修改为对应的大写字母,该怎么修改程序?实验附录 ASCII码表实验四完整段定义程序实现实验目的1、掌握完整段格式定义的程序设计方法;2、掌握伪指令:SEGMENT、ENDS、ASSUME、END、OFFSET、DUP;3、掌握汇编语言程序中指名程序入口的方法;4、了解用INT 21H 的4C号功能调用返回系统的方法;5、掌握用MASM、LINK工具进行汇编和链接的过程。
实验内容要求程序中实现对键盘输入的字符作如下处理:●如果输入的是小写字母则转换成对应的大写字母并显示在屏幕上;●如果输入的是大写字母则转换成对应的小写字母并显示在屏幕上;●如果输入的是键盘上的Esc键则退出程序执行;●按其它任意可显示键,则不作处理,直接显示输出。
实验步骤1、编辑下列程序:DATA SEGMENT ;数据段定义MESSAGE DB 'Please input your key!',0DH,0AH,'$' DATA ENDSSTACK SEGMENT PARA STACK 'STACK' ;堆栈段定义DB 50 DUP(?)STACK ENDSCODE SEGMENT ;代码段ASSUME CS:CODE,DS:DATA,SS:STACK ;分配段寄存器START: MOV AX,DATAMOV DS,AXMOV DX,OFFSET MESSAGEMOV AH,9INT 21H ;显示提示信息AGAIN: MOV AH,1INT 21H ;读入一个键盘按键CMP AL,1BH ;按的是ESC键(ASCII码为1BH)则退出程序JE EXITCMP AL,61HJB NEXTCMP AL,7AHJA NEXTSUB AL,20H ;ASCII码在61H和7AH之间(小写字母)则转换为大写字母JMP DISPNEXT: CMP AL,41HJB DISPCMP AL,5AHJA DISPADD AL,20H ;ASCII码在41H和5AH之间(大写字母)则转换为小写字母DISP: MOV DL,ALMOV AH,2INT 21H ;显示当前字符JMP AGAIN ;循环EXIT: MOV AH,4CH ;结束程序INT 21HCODE ENDSEND START ;指定START标号为程序入口地址2、把上述程序保存为ASM源文件,利用MASM根据对源文件进行汇编,产生.OBJ文件,若汇编时提示有错,编辑工具修改源程序后重新汇编,直至通过。