欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    汇编语言上机实验指导书.doc

    • 资源ID:78773833       资源大小:71.50KB        全文页数:26页
    • 资源格式: DOC        下载积分:20金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要20金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    汇编语言上机实验指导书.doc

    汇编语言程序设计课程实 验 教 学 指 导 书课程编号:XXXXXXX撰写人:刘玮审核人:XXX重庆师范大学涉外商贸学院数学与计算机学院二一三年11月17日前 言一、实验总体目标本课程是计算机专业的专业课。汇编语言是面向机器的程序设计语言,直接使用机器指令编程,要求学生具有较多的计算机硬件知识。 通过本课程的学习,学生应该了解计算机的基本结构,INTEL微处理器的发展和计算机语言及汇编语言的特点。应具有使用宏汇编编写程序的能力,对顺序、分支、循环三大程序结构在汇编语言的实现方法有较好的掌握,对模块化设计技术有进一步的了解。对于可能在将来从事计算机控制工作的学生打下必要的基础。学生还可以对新型主流CPU如Pentium CPU的工作模式及扩充指令有所了解。以跟踪微型计算机新技术的发展,为后续的专业技术课程打下坚实基础。二、适用专业年级专业:计算机科学与技术,网络工程年级:二年级三、先修课程(数字逻辑,计算机组成原理,C语言程序设计,微型计算机与接口技术)四、实验项目及课时分配实验项目实验要求实验类型实验学时项目一汇编程序与汇编器的使用必修验证性2项目二顺序程序设计实验必修设计性2项目三分支结构程序设计必修设计性2项目四循环结构程序设计必修设计性2项目五子程序设计必修设计性2项目六字符处理程序设计必修设计性2项目七输入输出程序设计必修设计性2项目八中断程序设计选修设计性2五、实验总体要求汇编语言是一门实践性很强的课程,只用通过大量的上机实践过程,才能更好的掌握汇编语言程序设计技术。为保证教学效果与质量,以下几点是学好这门课程的必要的要求和注意事项。1、汇编语言程序设计的实验课主要是供学生测试、调试汇编语言程序。2、必须充分重视实验课。实验课是汇编语言程序设计课程的重要组成部分,是理论联系实践的重要环节。通过它,能够培养学生独立分析和解决问题的能力。3、在每个实验之前,学生必须准备好被测程序的有关设计资料(包括程序的基本设计说明、程序流程图、汇编语言程序清单等)、测试数据、测试驱动程序、测试需要的“桩模块”等。4、必须做好实验前的一切准备工作,包括程序测试调试的详细过程安排等。在实验中应严格按照预先确定的实验过程进行实验,决不允许在实验过程中准备实验程序、测试数据与测试调试过程计划。凡未做好实验准备者,一律禁止进入实验室。5、应当系统记录实验过程中的现象(通过情况、排除问题的调试过程等),以便写出充实的实验报告。六、本课程的重点、难点及教学方法建议重点:远过程性质的汇编语言子程序的设计;良好程序设计习惯的培养;程序测试-调试能力的培养。难点:开发可被高级语言程序调用的汇编语言子程序;测试数据的设计;调试器命令的熟练使用;汇编语言程序设计能力的提高。建议:学生最好是将在高级语言程序设计课程中已完成的、程序效率受制于硬件资源利用率的综合性程序改用汇编语言程序实现;在实验前系统地“走查”被测程序,并使之成为习惯。七、主要参考书目蔡启先,王智文,黄晓璐,汇编语言程序设计实验指导,北京:清华大学出版社,2008年3月 冯康,范理,王利丽,汇编语言,武汉:武汉大学出版社,2007年5月实验项目一周数: 2 学分:2实验项目:汇编程序与调试器的使用 计划学时:2一、实验作用和目的熟悉DOS操作系统环境下汇编程序的编辑、编译、链接及运行过程,掌握汇编源程序的基本结构,编译运行的基本环境,熟练使用edit.exe或者qe.exe,masm.exe以及link.exe。二、实验内容与步骤1、源程序的编辑:编写一个名字为ABCD.ASM的源程序,该程序的功能是在计算机屏幕上显示一个字符串“HELLO!”2、源程序的汇编:C:>MASM ABCD.ASM3、目标文件的链接:LINK ABCD.OBJ4、可执行文件的调试。三、实验环境条件个人计算机:40台Win32操作系统MS DOSMASM 6.0及其以上版本的汇编程序及其配套的80X86汇编程序开发环境。四、实验报告要求1、总结用EDIT或者QE编辑源程序的方法。2、说明源程序的连接、汇编过程3、分析运行结果。4、按要求写出完整的实验报告(必须列出程序清单)。五、实验注意事项预习80X86微处理的结构预习程序发展的三个阶段预习汇编源程序的基本框架六、思考题编译后的OBJ文件和连接后的EXE文件的本质区别是什么?实验项目二周数: 2 学分:2实验项目:顺序程序设计实验 计划学时:2一、实验作用和目的掌握顺序程序设计方法。熟悉数据传送及算术和逻辑运算指令的用法。学会在PC上建立,汇编,连接,调试和运行80X86汇编程序的过程。二、实验内容与步骤1、复习教材中顺序程序结构设计的相关内容2、源程序的编辑:编写一程序计算以下表达式的值。W=(v-(x*y+z-540)/x式中x,y,z,v均为有符号字数据3、汇编,链接并调试运行上述程序三、实验环境条件个人计算机:40台Win32操作系统MS DOSMASM 6.0及其以上版本的汇编程序及其配套的80X86汇编程序开发环境。四、实验报告要求1、列出源程序(加以注释),说明程序的基本结构,并给出程序流程图。2、说明程序中各部分所用的算法以及上机调试中可能遇到的问题。3、分析运行结果。4、按要求写出完整的实验报告。五、实验注意事项注意:win7禁止第三方软件直接写屏,运行结果只能通过debug来查看,具体方法查看书中DEBUG调试相关内容。六、思考题数字在内存中的表示方法以及数制之间的转换。实验项目三周数: 2 学分:2实验项目:分支结构程序设计 计划学时:2一、实验作用和目的掌握分支结构程序的结构。掌握分支结构程序的设计,调试方法熟悉汇编语言的汇编,连接及调试方法二、实验内容与步骤1、预习教材中分支程序设计的相关内容2、源程序的编辑:已知在内存中有一个字节单元NUM,存有带符号数据,要求计算出它的绝对值后,放入RESULT单元中。3、画出流程图,编写程序4、汇编,连接和调试运行程序三、实验环境条件个人计算机:40台Win32操作系统MS DOSMASM 6.0及其以上版本的汇编程序及其配套的80X86汇编程序开发环境。四、实验报告要求1、画出流程图,并用EDIT或者QE编辑源程序(加以注释)。2、说明程序中各部分所用的算法以及上机调试中可能遇到的问题。3、说明源程序的连接、汇编过程4、分析运行结果。五、实验注意事项注意单分支和多分支的结构特征注意无条件跳转和条件跳转的区别六、思考题一个多分支可以用多个单分支来设计实现吗?实验项目四周数: 2 学分:2实验项目:循环结构程序设计 计划学时:2一、实验作用和目的加深对循环结构的理解。掌握循环程序的设计方法。进一步熟悉汇编程序的汇编、连接及调试技术二、实验内容与步骤1、预习循环程序设计的相关内容2、画出流程图,用EDIT或者QE编辑扩展名为.ASM的源程序源程序:在以BUF为首址的字存储区中存放有N个有符号数,采用“冒泡法”将它们按从大到小的顺序排列在BUF存储区中。3、编译、连接生成可执行程序4、运行程序三、实验环境条件个人计算机:40台Win32操作系统MS DOSMASM 6.0及其以上版本的汇编程序及其配套的80X86汇编程序开发环境。四、实验报告要求1、列出源程序(加以注释)。2、说明程序中各部分所用的算法以及上机调试中可能遇到的问题。3、说明源程序的连接、汇编过程4、分析运行结果。五、实验注意事项循环计数器的存放循环的入口和出口六、思考题循环嵌套的次数与循环复杂性的关系?实验项目五周数: 2 学分:2实验项目:子程序设计 计划学时:2一、实验作用和目的学习子程序的定义和调用方法,加深对子程序的了解。学习子程序设计、编写及调试方法。二、实验内容与步骤1、预习教材中与子程序设计相关的内容。2、利用EDIT或者QE编写扩展名为.ASM的源程序:已知3个8位无符号数X、Y、Z,分别存放于BUF、BUF+1和BUF+2存储单元里,计算2X+5Y+8Z,结果送RES和RES+1单元。利用段内调用实现对子程序的调用访问。3、编译和连接源程序4、运行程序三、实验环境条件个人计算机:40台Win32操作系统MS DOSMASM 6.0及其以上版本的汇编程序及其配套的80X86汇编程序开发环境。四、实验报告要求1、列出源程序(加以注释)。2、说明程序中各部分所用的算法以及上机调试中可能遇到的问题。3、说明源程序的连接、汇编过程4、分析运行结果。五、实验注意事项子程序类型与其调用关系子程序调用中的参数传递六、思考题模块化程序设计思想与子程序设计实验项目六周数: 2 学分:2实验项目:字符处理程序设计 计划学时:2一、实验作用和目的学习字符处理的相关指令,加深对这些指令的理解和运用掌握字符处理程序设计、及调试方法。掌握在程序设计中合理利用字符串的尾符。二、实验内容与步骤(4号宋体加粗)1、预习教材中与字符处理设计相关的内容。2、利用EDIT或者QE编写扩展名为.ASM的源程序: 3、编译和连接源程序4、运行程序三、实验环境条件(4号宋体加粗)个人计算机:40台Win32操作系统MS DOSMASM 6.0及其以上版本的汇编程序及其配套的80X86汇编程序开发环境。四、实验报告要求1、列出源程序(加以注释)。2、说明程序中各部分所用的算法以及上机调试中可能遇到的问题。3、说明源程序的连接、汇编过程4、分析运行结果。五、实验注意事项字符在存储器里的保存办法六、思考题字符的运算以及实现方法实验项目七周数: 2 学分:2实验项目:输入输出程序设计 计划学时:2一、实验作用和目的学习输入、输出的相关指令,加深对输入,输出相关指令的理解。掌握输入、输出程序设计编写及调试的方法。加深对输入、输出端口的理解。二、实验内容与步骤1、预习教材中与输入输出设计相关的内容。2、利用EDIT或者QE编写扩展名为.ASM的源程序,实现读取COMS实时钟,并把读到的时、分和秒保存到相应的变量中。3、汇编和连接源程序4、执行生成的可执行三、实验环境条件(4号宋体加粗)个人计算机:40台Win32操作系统MS DOSMASM 6.0及其以上版本的汇编程序及其配套的80X86汇编程序开发环境。四、实验报告要求1、列出源程序(加以注释)。2、说明程序中各部分所用的算法以及上机调试中可能遇到的问题。3、说明源程序的连接、汇编过程4、分析运行结果。五、实验注意事项CMOS时钟端口的设置以及测试六、思考题端口输入输出的原理。实验项目八周数: 2 学分:2实验项目:中断程序设计 计划学时:2一、实验作用和目的学习中断的原理和设置中断向量,加深对中断处理程序的理解。掌握中断的分类、中断向量的设置。会编程实现简单中断。二、实验内容与步骤1、预习教材中有关中断程序设计的内容。2、利用QE编译源程序:编写一个中断处理程序,在主程序运行的过程中,每隔10s响铃一次,同时在屏幕上显示“The bell is ring!”3、编译和连接源程序,生成可执行程序4、执行可执行程序。三、实验环境条件个人计算机:40台Win32操作系统MS DOSMASM 6.0及其以上版本的汇编程序及其配套的80X86汇编程序开发环境。四、实验报告要求1、列出源程序(加以注释)。2、说明程序中各部分所用的算法以及上机调试中可能遇到的问题。3、说明源程序的连接、汇编过程4、分析运行结果。五、实验注意事项调用一些常见中断处理程序(例如DOS 功能调用-键盘输入和屏幕显示以及常见的BIOS显屏操作)六、思考题中断程序的调用和普通子程序的调用有什么区别?执笔人:刘玮 2012年11月审定人:××× ×××年×月 教学单位负责人:××× ×××年×月第二部分 各实验程序参考清单实验一:汇编语言基本操作实验Data segmentS1 db hello!,$Data endsStack segment para stack Db 64 dup(?)Stack endsCode segment Assume cs: code, ds:dataStart: mov ax, data Mov ds, ax Mov ah, 09h Mov dx,offset s1 Int 21h Mov ah, 4ch Int 21hCode ends Ends start实验二:顺序程序设计Data segmentX dw 200Y dw 100Z dw 3000V dw 10000W dw 2 dup(?)Data endsCode segmentassume ds: data, cs: codestart: mov ax, data mov ds, ax mov ax, x imul y mov cx, ax mov bx, dx mov ax, z cwd add cx, ax adc bx, dx sub cx, 540 sbb bx, 0 mov ax, v cwd sub ax, cx sbb dx, bx idiv x mov w, ax mov w+2, dx mov ah, 4ch int 21hcode ends end start实验三:分支程序设计Data segment Num db 25 Result db ?Data endsCode segment Assume ds:data,cs:codeStart: Mov ax,data Mov ds,ax Mov al,num Cmp al,0h Jge next Neg alNext: Mov result,al Mov ah,4ch Int 21hCode ends End start实验四:循环程序设计.model small.stack.data Buf dw 13,-4,6,9,8,2,11,-8,-6,-20,30 N=($-buf)/2.codeStart: mov ax,data Mov ds,ax Mov cx,n Dec cxLoop1: mov dx,cx Mov bx,0Loop2: mov ax,buf(bx) Cmp ax,buf(bx+2) Jge next Xchg ax,buf(bx+2) Mov buf(bx),axNext: add bx,2 Loop loop2 Mov cx,dx Loop loop1 Mov ax,4c00h Int 21h End start 实验五:子程序设计Data segmentBuf db 71h,0a4h,9bhRes db 2 dup(?)Data endsStack segment para stackstackStack db 100 dup(?)Top equ length stapnStack endsCode segment Assume cs:code,ds:data,ss:stackStart: mov ax,data Mov ds,ax Mov ax, stack Mov ss,ax Mov ax,top Mov sp,ax Mov ax,0 Mov word ptr res,ax Lea bx,buf Mov al,2 Call mull Mov al,5 Call mull Mov al,8 Call mull Mov ah,4ch Int 21hMull proc Mul byte ptrbx Add word ptr res,ax Mov ax,0 Inc bxMull endpCode ends End start实验六:字符处理程序设计Data segmentString db abcefghil50xyz,0dhResult db ?Cr equ 0dhData endsCode segment Assume cs:code,ds:data,es:dataStart: push ds Mov ax, 0 Push ax Mov ax, data Mov ds, ax Mov es, ax Lea di, string ;获取串的偏移地址 Mov dl, 0 ;置串长度初值为0 Mov al, cr ;串结束标志alAgain: scasb ;搜索串 Je done ;找到结束标志,停止 Inc dl ;串长度加1 Jmp againDone: lea bx, result Mov bx, dl Mov ah, 4ch Int 21hCode ends End start实验七:输入输出程序设计print proc Push dx ;保护现场 Push ax Out dx,al ;向数据端口输出打印数据 Inc dx ;使dx含状态寄存器端口地址print0:xor cx,cx ;1个超时参数单位表示查询65536次print1:in al,dx ;读取状态信息 Mov ah,al ;保存状态信息 Test al,80h ;测是否忙,d7=0,说明打印机不能接收数据 Jnz print2 ;不忙则转print2 Loop print1 ;继续查询 Dec bl ;超时参数减1 Jnz print0 ;未超时,继续查询 And ah,0f8h ;已超时,去掉状态信息中的无用位 Or ah,1 ;置超时标志 Jmp print3 ;转print3print2:inc dx ;不忙,使dx含状态寄存器端口地址 Mov al,0dh ;准备选通命令 Out dx,al ;选通 Mov al,0ch ;准备复位选通命令 Jmp $+2 Out dx,al ;复位选通命令 And ah,0f8h ;去掉状态信息中的无用位print3:xor ah,48h ;是返回状态信息中的有关位符合要求 pop dx mov al,dl ;恢复al寄存器的值 pop dx retprint end实验八:中断程序设计data segmentcount dw 1mess db the bell is ring!,0dh,0ah,$data endscode segmentassume cs:code,ds:data,es:datamain proc farstart: push ds sub ax,ax push ax mov ax,data mov ds,ax mov al,1ch ;取原中断向量 mov ax,35h int 21h push es ;存原中断向量段址 push bx ;存原中断向量偏移量 push ds mov dx,offset ring ;新偏移量送dx mov ax,seg ring mov ds,ax ;新段址送ds mov al,1ch mov ah,25h int 21h ;写入新的中断向量 pop ds int al,21h ;读取中断屏蔽字 and al,b ;允许定时器中断 out 21h,al sti ;开中断 mov di,2000delay: mov si,3000 ;延时(只适用于主频为60mhz左右的计算机)delay1:dec si jnz delay1 dec di jnz delay1 pop dx ;恢复原中断向量 pop ds mov al,1ch mov ah,25h int 21h retmain endpring proc near push ds ;各工作寄存器内容入栈 push ax push cx push dx mov ax,data mov ds,ax sti dec count ;计秒值 jnz exit mov dx,offset mess mov ah,09h int 21h mov dx,100 ;(8048666为此值100h,p42.4g大约为9fffh,其他机型可调试确定此值) in al,61h and al,ofchsound: xor al,02 out 61h,al ;扬声器发声 mov cx,140h ;(8048666为此值140h,p42.4g大约为9fffh,其他机型可调试确定此值)wait1: loop wait1 延时等待 dec dx jne sound mov count,182exit: cli ;关中断 pop dx pop cx pop ax pop ds iret ;中断返回ring endp code ends end start

    注意事项

    本文(汇编语言上机实验指导书.doc)为本站会员(飞****2)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开