汇编语言实验6
- 格式:docx
- 大小:39.47 KB
- 文档页数:4
汇编语言实验报告1~7实验一:数据传输指令、算术指令、逻辑指令的使用实验内容:利用汇编语言,编写一个程序,实现两个整数相加,并将结果存入第三个变量中实验步骤:1. 声明三个变量a、b、c2. 将10存入a,将20存入b3. 将a的值传入al,将b的值传入bl4. 使用add指令将al和bl相加,将结果存入al5. 将al的值传入c6. 显示c的值实验结果:a db 10mov al,aadd al,blint 21hmov ax,4c00h实验二:分支指令的使用实验内容:利用汇编语言,编写一个程序,实现当输入的值为正数时,输出"I'm positive!";当输入的值为负数时,输出"I'm negative!";当输入的值为零时,输出"I'm zero!"1. 定义一个变量num2. 接收用户输入,并将其存储在num中3. 用test指令判断num的值4. 当num=0时,执行输出"I'm zero!"的指令7. 退出程序num db ?lea dx, promptsub al, '0'test num, numjz zerojs negjmp positiveneg:output:zero_msg db 'I am zero!$'prompt db 'Please enter a number:', 0dh, 0ah, '$'1. 定义变量i、sum,分别表示累加的数字和累加和2. 将i赋初值1,sum赋初值03. 进入循环5. 使用inc指令将i加16. 使用cmp指令将i与10比较,如果i小于等于10,继续循环,否则退出循环7. 输出结果mov bx, iloopStart:inc bx实验四:过程调用的使用2. 循环遍历1到100之间的每个数3. 用一个for语句嵌套一个for语句判断该数是否为质数4. 用两个自定义的子程序is_prime和output输出结果call is_primeskip:cmp i, 100prime_loop:div blretje newlinejmp done实验目的:掌握字符串操作指令的使用实验内容:利用汇编语言,编写一个程序,将字符串"SJTU"改为字符串"MIT"1. 定义字符串SJTU和MIT2. 定义两个变量i和len,分别表示字符串的下标和长度3. 使用movsb将SJTU的值传到MIT中4. 输出MITSJTU db 'SJTU'lea si, SJTUstringLoop:实验内容:利用汇编语言,编写一个程序,实现将输入的字符串写入一个文件中,然后再读取该文件中的字符串并输出2. 打开文件3. 将字符串写入文件中4. 关闭文件6. 读取文件内容8. 输出读取的字符串fileName db 'test.txt'content db 32 dup(?)mov cx, word ptr [content]实验内容:利用汇编语言,编写一个程序,在系统按下Ctrl+C时,输出一条信息并退出1. 声明函数handleCtrlC2. 获取中断21的地址,将其存储到文件头中org 100hmov [old_int_21h], es:bxmov dx, offset handleCtrlCend开始:。
汇编语言程序设计实验报告汇编语言程序设计实验报告引言:汇编语言是计算机中最基本的语言,通常用于处理硬件相关问题。
在这个实验中,我们学习了汇编语言的基础知识和编程技巧,并实践了用汇编语言编写程序的方法和技巧。
以下是我们的实验报告。
正文:1. 实验环境我们使用的实验环境是Intel 8086微处理器与高级汇编语言。
微处理器使用的是PCB-512主板,而高级汇编语言是MASM。
2. 实验目的我们的实验目的主要是学习汇编语言的基础知识和编程技巧,包括了汇编语言的寄存器、指令、内存管理等方面的知识。
我们的另一个目的是掌握汇编语言的常用编程技巧,能够独立完成一些简单的汇编程序。
3. 实验内容我们的实验内容主要包括以下几点:(1)学习汇编语言的基础知识,包括寄存器、指令、内存管理等方面的知识。
(2)掌握汇编语言的常用编程技巧,包括数据输入输出、运算、跳转等基本操作。
(3)实践用汇编语言编写程序,如计算器、菜单等实用程序。
(4)了解8086微处理器的结构和原理。
4. 实验过程在这个实验过程中,我们完成了以下几个程序:(1)计算器计算器是一个简单的程序,主要用于实现两个数之间的加、减、乘、除等基本运算。
我们通过输入输出指令、存储指令等指令实现了这个程序的功能。
(2)菜单菜单是一个实用程序,主要用于展示一个简单的菜单并实现用户选择相关功能的功能。
我们使用了汇编语言中的跳转指令、输入输出指令等实现了这个程序。
5. 实验结果在我们的实验中,我们成功完成了上述两个程序。
我们通过输入输出指令、存储指令等指令实现了这个程序的功能。
6. 实验总结在这个实验过程中,我们学习汇编语言的基础知识和编程技巧,并实践了用汇编语言编写程序的方法和技巧。
我们通过编写计算器和菜单等简单实用程序,加深了对汇编语言的理解和认识。
我们认为这个实验对我们今后的学习和工作都有很大的帮助。
结论:通过这个实验,我们学习了汇编语言的基础知识和编程技巧,并实践了用汇编语言编写程序的方法和技巧。
《汇编语言》实验报告实验名称:汇编语言实验报告实验目的:通过实验了解汇编语言的基本概念、语法结构和程序设计方法,掌握汇编语言的编写方法。
实验时间:2024年1月1日实验地点:实验室一、实验背景汇编语言是计算机硬件和软件之间的桥梁,通过汇编语言可以直接操作计算机的底层硬件。
汇编语言是一种低级语言,使用汇编语言可以实现对计算机内存、寄存器等硬件资源的直接操作,从而实现程序的功能。
本实验通过编写汇编语言程序,加深对汇编语言的理解。
二、实验过程1. 确定实验环境:使用DOSBox模拟DOS环境进行汇编程序编写和调试。
2. 编写第一个汇编程序:编写一个简单的汇编程序,将字符串“Hello, World!”输出到屏幕上。
3.程序分析:a.定义要输出的字符串,将字符串存储在数据段中。
b.设置段寄存器,将数据段地址加载到DS寄存器中。
c.设置显示模式和光标位置。
d.将字符串逐个字符输出到屏幕上。
e.关闭显示模式。
4. 编译运行:使用汇编语言的编译器将汇编程序转换成机器码,并在DOSBox中运行程序。
5.调试程序:根据程序运行结果和分析,调试程序中存在的错误,并进行改正。
三、实验结果与分析经过多次编写和调试,我们成功实现了将字符串“Hello, World!”输出到屏幕上的功能。
通过程序分析和调试过程,加深了对汇编语言的理解和掌握。
四、实验总结通过本次实验,我们深入了解了汇编语言的基本概念、语法结构和程序设计方法。
通过实际编写汇编语言程序,对汇编语言的编写方法有了更加深入的认识。
同时,通过调试程序的过程,我们也提高了自身的问题解决能力和分析能力。
在今后的学习和工作中,我们将继续学习和深入研究汇编语言,提高自己的编程能力和创新思维能力。
总体而言,本次实验给我们带来了很大的收获,我们以后将更加努力地学习汇编语言,提高自己的编程水平,为以后的学习和工作做好充分的准备。
实验四循环结构程序设计上机实验
一、实验目的:
1、掌握循环结构程序设计的基本方法。
2、掌握用masm for Windows编辑、编译、连接汇编语言源程序的基本方法。
3、掌握DEBUG调试程序的U、D、R、T、G、Q常用命令的用法。
二、实验步骤:
1、用ASM masm for Windows将源程序输入,其扩展名为.ASM。
2、用MASM对源文件进行汇编,产生.OBJ文件和.LST文件。
若汇编时提示有错,则修改源程序后重新汇编,直至通过。
3、用LINK将.OBJ文件连接成可执行的.EXE文件。
4、用DEBUG调试程序并分析结果。
三、实验内容:
1. 在数据段中从变量DA1开始有N个带符号数。
把其中的正数、负数(设没有0)依次存入DA2、DA3开始的单元中并分别统计正、负数的个数存入DA4、DA5字节单元之中。
试编写程序。
将本例中的DEC指令修改为LOOP指令来实现循环程序的设计。
在修改过程中还应修改哪能些指令,请自己分析,为什么?
四、综合练习:
1.编写求100个正整数的和的程序。
如果和不超过16位字的范围(即65535),则将其和保存到WORDSUM单元中,若超过则显示OVERFLOW。
2.设有N个数,连续存放在以BUF为首址的字存储区中,试编写程序,统计其中最高的6位全1的数个数并将统计结果送入寄存器DX中。
五、实验报告(注意:将报告正反两面打印后用手写)附件如下:
实验四循环程序设计实验报告学号姓名成绩。
计算机组成与汇编语言(实验报告)内容: 实验一、六、七、八院系专业:计算机学院计算机科学与技术姓名:xxxxxxxxx学号:*******xxxxx完成时间:2012年12月1日计算机组成与汇编语言实验报告printf("输入的二进制数不正确!!");break;}}}if(a[15]=='1')s++;for(i=1;i<16;i++){if(a[15-i]=='1')s+=(1<<i);}printf("二进制: ");puts(a);printf("对应的十进制为: ");printf("%d\n",s);}程序1运行结果:实验情况与体会:运行过程中出现过不能判断是否输错的情况以及权位判断有误等情况,经过思考和修改后修改正确,说明理解好二进制与十进制之间的转换过程很重要。
编程过程中主要碰到的问题是,不够十六位的时候要在前面补零。
转换方法主要是除二求余的方法。
注:篇幅不够,可以另外附页。
计算机组成与汇编语言实验报告姓名xxxx 学号2011004xxxx 计分专业软件工程班级xxxxx 实验日期2012年 12 月 1日实验名称实验六分支结构程序设计实验目的●熟悉有符号定点数的表示。
●掌握原码、补码、反码之间的相互转换程序设计。
实验内容说明:该程序中X=23,Y=45,他们之差的绝对值为22,用16进制表示为0016H,即图中显示的结果2.调试程序2:DATA SEGMENTADD AL, 07HLP4: ADD AL, 30H ;将低四位转化为相应的ASCII码并以字符形式输MOV DL, ALMOV AH, 2INT 21HMOV AH, 4CHINT 21HCODE ENDSEND START上机运行该程序并检查运行结果是否正确。
上机实验过程:说明:求出三个数里面的最大数73;3. 编写程序1:编程实现从键盘输入一位数字,判断其奇偶性,并在屏幕上输出一个标志,若为奇数,则输出1,否则输出0。
青岛理工大学课程实验报告
课程名称汇编语言程序设计班级实验日期
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)冒泡排序也遇到一些困难。
调试结果:。
计算机专业类课程实验报告课程名称:汇编程序语言设计学院:计算机科学与工程专业:计算机科学与技术学生姓名:林*学号:*************指导教师:胡*日期:2014年12 月15 日电子科技大学计算机学院实验中心电子科技大学实验报告实验一1、实验名称:汇编源程序的上机调试操作基础训练2、实验学时:43、实验内容和目的:实验内容:1.DEBUG命令的使用2.程序的调试与运行1.编写程序计算以下表达式: Z=(5X+2Y-7)/2设X、Y的值放在字节变量VARX、VARY 中,结果存放在字节单元VARZ中。
实验目的:1.掌握DEBUG的基本命令及其功能2.学习数据传送和算术运算指令的用法3.熟悉在PC机上编辑、汇编、连接、调试和运行汇编语言程序的过程。
4、实验原理:1.编辑源程序,建立一个以后缀为.ASM的文件.2.汇编源程序,检查程序有否错误,有错时回到编辑状态,修改程序中错误行。
无错时继续第3步。
3.连接目标程序,产生可执行程序。
4.用DEBUG程序调试可执行程序,记录数据段的内容。
5、实验器材(设备、元器件)pc、window7平台、masm5开发环境6、实验步骤:1、在数据段中分别用两个单元varx和vary存放变量x 和y;另一个单元varz用来存放运算结果Z;2、由于是字节变量,所以用al 存放变量x的值,然后将al 左移两位得到4*x,再把al加上x,进而得到5*x;3、再用bl存放变量y 的值,用add命令得到2*y,之后把al 与bl相加,再用sub命令减去7,得到(5*x+2*y-7)的值,并保存到al中;4、最后将al右移一位,得到最后的z=(5*x+2*y-7)/2,并把al 的值送入varz单元;5、运行程序,使用-d 命令查看内存单元的信息;7、实验数据及结果分析:实验代码如下:电子科技大学计算机学院实验中心实验结果如下图:1、编译连接后执行程序:2、查看内存单元变量的值varx=05h,vary=07h,(5x+2y-7)/2=(25d+14d-7d)/2d=16d=10h可以看到上图中内存单元的值与手工计算的结果相符,说明程序是正确的。
汇编语言实验报告
1. 实验简介
本次实验是针对汇编语言的学习和实践,在实验中,我们将学习如何使用汇编语言编写程序、调试程序,并通过一系列实例来练习和巩固所学知识。
2. 实验目的
(这一部分可以根据实际情况来写,列举实验的具体目的和要求)
3. 实验环境及工具
(介绍实验所使用的软件环境和工具,如:编译器、调试器)
4. 实验步骤
(根据实验内容具体描述实验步骤,可以分为多个小节)
4.1 准备工作
在开始实验之前,需要进行一些准备工作,包括安装编译器、创建工作环境等。
4.2 实验一:简单的汇编程序
本实验通过编写一个简单的汇编程序来熟悉汇编语言的基本语法和指令集,包括数据传送、算术运算、逻辑运算等。
4.3 实验二:汇编程序的调试
在实验二中,我们将学习如何使用调试器对汇编程序进行调试,包括设置断点、查看变量值、单步执行等操作。
4.4 实验三:汇编程序的优化
本实验将通过优化代码来提高程序的执行效率,包括减少指令的使用、优化循环结构等。
5. 实验结果与分析
(对实验的结果进行总结和分析,可以包括程序的输出结果、性能分析等)
6. 实验总结
(针对本次实验的收获和心得体会进行总结,可以包括对汇编语言的理解、解决问题的思路等)
7. 实验感想
(对本次实验的感想和建议,如实验过程中遇到的困难、改进的方向等)
8. 参考文献
(列出本报告中所引用的参考文献)
注:该文章只是按照题目提示给出了一个大致的框架和构思,实际根据具体的实验内容和要求来编写每个小节的详细内容。
希望对你有所帮助!。
汇编语言上机实验汇总汇编语言是计算机的低级语言,主要用于编写底层程序和驱动程序。
在学习汇编语言的过程中,学生通常需要进行一定数量的上机实验。
下面是一个汇编语言上机实验的汇总。
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)绘制简单的图形或运行一个音频文件。
这些上机实验可以帮助学生逐步掌握汇编语言的基本知识和技能,并为以后的高级汇编语言编程打下基础。
汇编语⾔实验报告汇编语⾔实验报告专业:班级:姓名:学号: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 地址数据表;从指定的地址开始⽤数据表给定的数据修改存储单元。
成绩评定教师签名嘉应学院计算机学院实验报告课程名称:汇编语言程序设计开课学期:2016-2017学年第1学期班级:1402指导老师:实验题目:转移指令原理学号:姓名:实验8分析一个奇怪的程序程序从start开始,将ax设置为0,然后设置2个字节的空空间将s2指向的内容放入s指向的内存中s的内容EBF6指s的地址相对于s1,跳转6个单位程序继续执行(机器指令为 JMP 0008),跳转到s(0b75:0008)的位置,s的内容为 EBF6,向低地址跳转6个单位(机器指令为 JMP 0000),即退出程序实验9 根据材料编程编程:在屏幕中间分别显示绿色、绿底红色、白底蓝色的字符串’welcome to masm!’。
对程序进行编译、链接、用debug跟踪程结果如图在data数据段中存放要显示的字符串及其属性,02h表示绿色,24表示绿底红字、71表示白底蓝字先初始化各寄存器,把ds寄存器指向data段,ss指向stack段,sp指向栈底因为要输出三个字符串,要循环三次,执行循环前把cx,ax等入栈,防止数据被意外改变输出的每个字符串有16(10h)个字符,每个字符占两个字节“属性+内容”,在偶地址中存放要输出的字符,存放在es段中在奇地址存放字符的表现属性,将一行字符串存进内存中,开始准备输出下一行字符串如果用t、p、g指令分步追踪程序的执行,可以看到字符串的存储过程,表现出单个的字符和属性,如图:。
实验10 编写子程序1、显示字符串子程序描述名称:show_str功能:在指定的位置,用指定的颜色,显示一个用0结束的字符串参数:(dh)=行号(取值范围0~24),(dl)=列号(取值范围0~79)(cl)=颜色,ds:si指向字符串的首地址返回:无应用举例:在屏幕的8行3列,用绿色显示data段中的字符串assume cs:codedata segmentdb 'Welcome to masm!',0data endscode segmentstart: mov dh,8 ;dh装行号(范围:1--25)mov dl,3 ;dl装列号(范围:1--80)[注:每超过80等于行号自动加1]mov cl,0cah ;cl中存放颜色属性(0cah为红底高亮闪烁绿色属性) mov ax,datamov ds,axmov si,0call show_strmov ax,4c00hint 21hshow_str:code endsend start对程序进行编译、链接、用debug跟踪程执行结果如图:show_str子程序的分析:bx=行号*每行的大小(a0h)=显示区所在的行号首地址的偏移地址每个字符占两个字节“属性+内容”,bx=bx+相对于显示行的列偏移量*2es存放显存的位置cx存放data段中的内容,如果为0则结束程序如果结果不为0,就把data段中对应的字符及其属性存到显存中。
汇编语⾔(王爽第三版)实验6实践课程中的程序实验6 实践课程中的程序(1)将课程中所有讲解过的程序上机测试,⽤debug跟踪其执⾏过程,并在过程中理解所讲内容。
问题7.6 将data段中每个单词的头⼀个字母改为⼤写字母。
assume cs:codedata segmentdb '1. file 'db '2. edit 'db '3. search 'db '4. view 'db '5. options 'db '6. help 'data endscode segment程序分析:1)数据段定义了6个字符串结构,长度⼀致都是16字节,并且字符都是连续的,并且头⼀个字母在字符串中的位置都是第4个字符,在上⾯的寻址⽅式中,我们发现[bx+idata]⽅式⽐较适合这种情况,idata代表每个字符串起始地址,bx代表基本偏移地址,bx的偏移量也是有规律的16。
2)在debug中,这6个字符串显⽰的正好是6⾏16列的字符,是⼀个我们在C语⾔中讲到的⼆维数组[6][16],其实它在内存中是线性单列排列的。
3)遇到此种情况我们使⽤[bx+idata]的⽅式进⾏内存的寻址⽐较科学。
完整的代码如下:assume cs:codedata segmentdb '1. file 'db '2. edit 'db '3. search 'db '4. view 'db '5. options 'db '6. help 'data endscode segmentstart:mov ax, datamov ds, axmov bx, 0 ;将ds:bx指向data第⼀个单元mov cx, 6 ;需要修改6次s: mov al, [bx+3] ;使⽤[bx+idata]寻址⽅式,并送⼊al(单字节)and al, 11011111b ;转换为⼤写字母mov [bx+3], al ;回写内存add bx, 16 ;6个字符串长度⼀致,都是16字节,增量为16loop smov ax, 4c00Hint 21Hcode endsend start结果分析:(1)在循环中,如遇到loop指令,⾸先我们要认识到,(cx)=(cx)-1;直到cx=0退出循环。
计算机组成与汇编语言实验报告姓名学号计分专业班级实验日期实验名称实验六汇编语言分支结构程序设计实验目的● 掌握分支结构程序的特点。
● 掌握分支结构程序的设计,调试方法。
●熟悉汇编语言程序的汇编、连接及调试技术。
实验内容1.调试程序1:求无符号字节变量X,Y之差的绝对值,存储于字节变量A中。
上机运行该程序并检查运行结果是否正确。
2.调试程序2:上机运行该程序并检查运行结果是否正确。
3编写程序1:编程实现从键盘输入一位数字,判断其奇偶性,并在屏幕上输出一个标志,若为奇数,则输出1,否则输出0.4编写程序2:编程实现任意给定X值(-128~127),求符号函数Y的值,存于内存单元。
当X>0时,Y=5X-3;当X=0时,Y=0;当X<0时,Y=2X。
5编写程序3:已知两个字变量A和B,试编写程序完成下述操作:(1)若两个数中有一个奇数,则将奇数存入A中,偶数存入B中;(2)若两个数均奇数,则两个数分别加1,并存回原变量;(3)若两个数均偶数,则两个变量不变。
实验步骤1.调试程序1:求无符号字节变量X、Y之差的绝对值,存储于字节变量A中。
源程序如下:DATA SEGMENTX DB 23Y DB 45A DB ?DATA ENDSCODE SEGMENTASSUME CS:CODE, DS:DA TASTART: MOV AX, DATAMOV DS, AXMOV AL, XMOV BL, YCMP AL, BLJAE BIGSUB BL, ALMOV A, BLJMP EXITBIG: SUB AL, BLMOV A, ALEXIT: MOV AX, 4C00HINT 21HCODE ENDSEND START上机运行该程序并检查运行结果是否正确。
3.调试程序2:DATA SEGMENTBUF DB 38H,73H,1FHMAX DB ?DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DA TA START: MOV AX,DA TAMOV DS,AXMOV AL,BUFCMP AL,BUF+1JNB LP1MOV AL,BUF+1LP1: CMP AL,BUF+2JAE LP2MOV AL,BUF+2LP2: MOV MAX,ALMOV BL,ALMOV CL,04SHR AL,CLCMP AL,0AHJB LP3ADD AL,07HLP3: ADD AL,30HMOV DL,ALMOV AH,2INT 21HMOV AL,BLAND AL,0FHCMP AL,0AHADD AL,07HLP4: ADD AL,30HMOV DL,ALMOV AH,2INT 21HMOV AH,4CHINT 21HCODE ENDSEND START3. 编写程序1源程序清单如下。
实验六汇编语言程序设计实验(二)
实验六汇编语言程序设计实验(二)
一、实验目的:
1、熟悉8086指令系统的移位指令和控制转移指令。
2、进一步熟悉debug调试程序的运用。
3、掌握完整的汇编程序的上机方法。
二、实验内容:
1、判断PAR单元数据的奇偶性(指二进制低8位中含有1
的个数),当为奇数时置MARK单元为1,当为偶数时置MARK 单元为0。
(Debug 6_1.exe
用t命令观察程序的执行
用d 0 1 显示数据段,偏移从0地址开始,显示到1地址结束;)
2、编程,向内存0:200~0:023F中依次传送数据0~3F. (Debug 6_2.exe
U 0 10 反汇编代码
G=0 10 运行程序
D ds:0 显示数据段内容)
三、实验器材
IBM PC 微机一台
四、实验要求:
按题目要求,画出流程图,在实验前编写好源程序。
五、实验报告要求
1 画出简要流程图;
2 编写程序,并加上注释;
3 记录运行步骤和运行结果;。
汇编语言编程实验报告汇编语言编程实验报告学号:姓名:成绩:目录一、实验一: ......................................................错误!未定义书签。
二、实验二: (4)三、实验三: (8)四、实验四: (10)五、实验五: ......................................................错误!未定义书签。
六、实验六: (19)七、汇编实验总结 (23)实验一一.实验题目【汇编语言补充作业T20】编写完整程序,利用DOS系统功能调用,从键盘输入一个字符串,并将该字符串从屏幕上换行后并输出。
二.程序流程及思路实现字符串输入,需要分成三个步骤:1、在数据段中定义一个缓存区为存放字符串做准备;2、DOS系统功能调用0AH号子功能,(DS:DX)= 输入缓冲区首址;3、在输入的字符串尾加上‘$’字符,以作为输出结束条件。
实现字符串输出,则需要注意的问题是:1、缓冲区第三个字节才开始存放输入的字符,前两个字节分别存放缓冲区长度和字符串实际字符数;2、输出回车换行可利用字符串:CR DB 0AH,0DH,’$’。
三.源程序清单DATA SEGMENTN EQU 50MAXLEN DB N ;缓冲区字符的最大长度ACTLEN DB ? ;实际字符个数STRING DB N DUP(?) ;字符空间CR DB 0AH,0DH,'$'DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATA,SS:STACK START: MOV AX,DATAMOV DS,AXLEA DX,MAXLENMOV AH,0AHINT 21H ;字符串输入MOV AH,09HLEA DX,CRINT 21H ;回车换行MOV BL,MAXLEN+1 ;取实际的字符长度MOV BH,0LEA SI,MAXLEN+2 ;取字符开始的首地址MOV BYTE PTR [SI+BX],'$' ;输出结尾要加上$ MOV DX,SI ;把开始存放字符的首地址赋给DX MOV AH,09HINT 21HMOV AH,4CHINT 21HCODE ENDSEND START四.结果拷屏实验二一. 实验题目【汇编语言补充作业T23】假设CX:BX中存放了4为非压缩的BCD码表示的十进制数4386,请编写完整程序将这个数转化成2进制数并存放到DI寄存器中。
实验一(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所示。
汇编实验报告6汇编实验报告6引言:汇编语言是一种底层编程语言,它直接操作计算机硬件,提供了对计算机底层资源的更精确控制。
在本次实验中,我们将继续学习和实践汇编语言的相关知识,探索其在计算机系统中的作用和应用。
一、实验目的本次实验旨在加深我们对汇编语言的理解,并通过实践进一步掌握汇编语言的基本概念、语法和应用。
具体目标如下:1. 掌握汇编语言的基本指令和寻址方式;2. 理解和实现简单的汇编程序;3. 学会使用调试工具调试汇编程序。
二、实验环境本次实验使用的环境为Windows操作系统和MASM汇编器。
在实验开始前,我们需要确保已经正确安装了MASM汇编器,并配置好了相关环境变量。
三、实验过程1. 编写程序本次实验我们将编写一个简单的汇编程序,实现两个数相加并输出结果的功能。
首先,我们需要使用文本编辑器打开一个新的文件,并保存为.asm格式。
接下来,我们将按照汇编语言的语法规则,逐步编写程序。
2. 汇编程序的结构一个标准的汇编程序由三个部分组成:数据段、代码段和堆栈段。
在数据段中,我们定义了需要使用的变量和常量;在代码段中,我们编写了实际的汇编指令;而堆栈段则用于存储程序执行过程中的临时数据。
3. 汇编指令的使用在本次实验中,我们将使用一些常见的汇编指令,如MOV、ADD、SUB等。
这些指令用于操作寄存器、内存和立即数,实现数据的传输、运算和比较等功能。
4. 调试程序编写完汇编程序后,我们需要使用调试工具对程序进行调试,以确保程序的正确性。
调试工具可以帮助我们逐条执行程序,并查看寄存器和内存的变化,从而找出程序中的错误。
四、实验结果与分析经过编写和调试,我们成功地实现了两个数相加并输出结果的功能。
我们可以通过调试工具查看程序执行过程中寄存器和内存的变化,以验证程序的正确性。
同时,我们还可以对程序进行性能分析,了解其在不同输入情况下的执行效率。
五、实验总结通过本次实验,我们深入学习了汇编语言的基本概念和应用。
汇编语言实验6
分支程序设计
(2课时)
一、实验目的
1、学习使用汇编语言、连接程序对汇编语言源程序进行汇编、链接装配操作。
2、自学采用调试程序debug对可执行文件.exe展开调试运转。
3、训练分支程序的编制,逐步熟悉二元选择、多元选择等程序描述方法,加深对程序控制类指令的结构和功能的理解。
4、掌控调试分支程序的基本方法,以介绍程序的静态结构和动态继续执行情况的差异性。
二、实验设备
1、硬件:IBM PC及兼容机
2、软件:
操作系统Ms dos/Windows 98/Windows /Windows XP
编辑软件:edit、记事本
汇编语言程序包:masm5.0以上(包含masm、link)
三、实验内容
题目A:设立平面上有一点p直角坐标(x,y),先行基本建设顺利完成以下操作方式的程序例如点p在第i象限,则K单元←i(1,2,3,4)
如点p在坐标轴上,则K单元←0
题目B:编制程序谋A、B、C三个存有符号数的中间数。
(A、B、C为字节单元)
四、实验步骤
1、编辑源程序,创建一个以后绣为 .ASM的文件.
2、汇编源程序,检查程序有否错误,有错时回到编辑状态,修改程序中错误行。
无错时继续第3步。
3、相连接目标程序,产生可执行程序。
4、DEBUG调试可执行程序,记录程序运行结果。
5、在操作系统状态下,运转程序,并记录程序运行结果。
五、实验总结
1、实验中碰到哪些问题?分析主要问题的失效原因及化解方法。
2、本次实验有何收获和体会。
3、有何改良意见及建议。
最近自己对单片机特别的感兴趣,因为看到它能控制电机的转动,自己觉得很神奇。
就想弄清楚它到底是怎么做到的?
我看见书上谈:单片机可以用两种语言撰写,一种就是C语言,另外一种就是汇编语言。
汇编语言就是一种机器语言,且代码繁杂,难于记忆。
须要掌控单片机的内部结构和逻辑结构,通过看看了几本书使我介绍认识到编订的确太繁杂,不过我自学过C语言,也出席了全国计算机二级考试,真的自己在一方面具备优势,能够很快努力学习它。
不过在学习中,我才发现学习单片机不仅仅需要软件的知识,还需要硬件的知识。
我买了一个单片机在实践中就是一个活生生的例子,没有相应的硬件知识,我连单片机怎么和电脑相连都不知道,我为我当初的想法感到羞愧。
单片机是一门很好的学问,需要我去钻研它。
时光离别,一转眼,一个学期又入尾声了,本学期的单片机综合课程设计也在一周内顺利完成了。
俗话说“好的开始是成功的一半”。
说起课程设计,我认为最重要的就是做好设计的预习,认真的研究老师给的题目,选一个自己有兴趣的题目。
其次,老师对实验的讲解要一丝不苟的去听去想,因为只有都明白了,做起设计就会事半功倍,如果没弄明白,就迷迷糊糊的去选题目做设计,到头来一点收获也没有。
最后,要重视程序的模块化,修改的方便,也要注重程序的调试,掌握其方法。
虽然这次的课程设计算是出来在实验室的时间只有三天,不过因为我们都存有自己的实验板,所以在宿舍里搞实验的时间一定远不止三天。
硬件的设计跟焊接都要我们自己动手去焊,软件的编程也要我们不断的调试,最终一个能完成课程设计的劳动成果出来了,很高兴它能按着设计的思想与要求运动起来。
当然,这其中也存有很多问题,第一、比较细心比如说由于粗心大意焊错了线,由于对课本理论的不能熟识引致编程发生错误。
第二,就是在学习态度上,这次课设立就是对我的学习态度的一次检验。
对于这次单片机综合课程进修,我的第一小心得体会就是做为一名工程技术人员,建议具有的首要素质绝对必须就是细致。
我们这次进修所碰到的多半
问题多数都就是由于我们比较细致。
第三,在做人上,我认识到,无论搞什么事情,只要
你足够多勇敢,存有足够多的毅力与决意,存有足够多的挑战困难的勇气,就没什么胡扯的。
汇编语言是计算机能够提供给用户使用的最快而又最有效的语言,也是能够利用计算
机所有硬件特性并能直接控制硬件的惟一语言。
因而,对程序的存储空间和运行时间要求
较高的一些实际任务,一般都使用汇编语言进行编程处理;至于很多实时性强、需要直接
控制硬件的应用场合,则更是非用汇编语言不可了。
汇编语言程序设计就是高等院校计算机科学与技术专业“汇编语言程序设计”必修课,具备十分关键的专业基础地位。
课堂教学环节就是协助学生增进重新认识和认知理论教学
科学知识的重要途径。
学生必须通过大量的上机实验熟识 CPU的指令功能、用途和采用技巧,进而通过循序渐进的程序设计练,检验各类指令的功能和提升程序设计的能力
根据教学大纲的要求以及现有实验设备条件,对本课程的实验部分安排了10学时的
上机操作,具体分为4次进行,其安排如下:
实验一:分支程序设计
实验二:循环程序设计
实验三:子程序与DOS调用
实验四:常用程序设计和中断
为了使学生能比较不好的顺利完成实验,在搞实验前须要搞下列准备工作:
1.实验前的准备工作
① 深入细致备考理论教学内容及有关资料。
② 认真查询相关实验资料,做好预习准备。
2.实验时应特别注意的事项
① 按时参加上机实习,不得无故迟到、早退。
② 严格遵守机房管理制度和实验操作方式规则。
③ 上机者在上机规定的时间内,不能从事与实验无关的内容。
④ 单一制顺利完成实验,不得剽窃他人成果。
⑤ 按时提交实验报告。
3.实验报告建议
① 实验课题
② 实验设备及工具
③ 实验目的
④ 实验过程和结果分析
通过实验,学生应达到以下几点目的:
① 掌控汇编语言基本程序结构,熟识计算机指令和汇编语言语句的撰写。
② 熟识汇编语言的上机过程和debug调试工具的采用方法。
③ 掌握汇编语言简单分支程序设计、循环程序设计、子程序设计、DOS中断程序设
计。
熟练地采用汇编语言编写程序,顺利完成各项任务。
④ 根据所做实验,完成实验总结报告。