ImageVerifierCode 换一换
格式:DOCX , 页数:37 ,大小:552.73KB ,
资源ID:3275973      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/3275973.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(大学课程汇编语言的实验报告.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

大学课程汇编语言的实验报告.docx

1、大学课程汇编语言的实验报告实 验 报 告实验课程: 学生姓名: 学 号: 专业班级: 电气信息类III班 2011年12月20日目录(1)汇编语言程序上机过程 2(2)字符串处理程序实验 6(3)子程序实验 13(4)中断程序实验 21(5)C+调用汇编子程序 25 南昌大学实验报告-(1)汇编语言程序上机过程学生姓名: 学 号: 专业班级: 实验类型: 验证 综合 设计 创新 实验日期: 2011.11.12/13 实验成绩: 一、 实验目的熟练掌握汇编语言程序的编辑、调试和运行的过程和方法。了解汇编语言程序的汇编、运行环境。二、 实验内容1 掌握常用的编辑工具软件(如WORD、EDIT)、

2、MASM和LINK的使用;2 伪指令: SEGMENT,ENDS,ASSUME,END,OFFSET,DUP;3 利用的INT 21H的1号功能实现键盘输入的方法;三、 实验环境PC微机DOS操作系统或 Windows 操作系统MASM.EXE,LINK.EXE,DEBUG.COM或宏汇编集成环境四、 实验要求1 仔细阅读有关伪指令SEGMENT,ENDS,ASSUME,END,OFFSET,DUP的内容;2 了解利用的INT 21H的1号功能实现键盘输入的方法,了解.EXE文件和.COM文件的区别及用INT 21H 4C号功能返回系统的方法;3 阅读下面程序段。五、 主要实验步骤程序:dat

3、a segmentmessage db This is a sample program of keyboard and disply db 0dh,0ah,Please strike the key!,0dh,0ah,$data endsstack segment para stack stack db 50 dup(?)stack endscode segmentassume cs:code,ds:data,ss:stackstart: mov ax,data mov ds,ax mov dx,offset message mov ah,9 int 21hagain: mov ah,1 i

4、nt 21h cmp al,1bh je exit cmp al,61h jc nd cmp al,7ah ja nd and al,11011111bnd: mov dl,al mov ah,2 int 21h jmp againexit: mov ah,4ch int 21hcode endsend start实验步骤:1 用用文字编辑工具(记事本或EDIT)将源程序输入,其扩展名为ASM。2 用MASM对源文件进行汇编,产生OBJ文件和LST文件。若汇编时提示有错,用文字编辑工具修改源程序后重新汇编,直至通过。3 用TYPE命令显示1产生的LST文件。4 用LINK将OBJ文件连接成可执

5、行的EXE文件。5 在DOS状态下运行LINK产生的EXE文件。即在屏幕上显示标题并提示你按键。每按一键在屏幕上显示二个相同的字符,但小写字母被改成大写。按ESC键可返回DOS。若未出现预期结果,用DEBUG检查程序。六、 思考题1、 若在源程序中把INT 21H的H省去,会产生什么现象?代码编译连接均为正常,但是运行时无法输入与输出,也无法退出。2、 把 INT 21H 4CH号功能改为 INT 20H,行不行?更改后,编译链接均正常,输入输出也正常,但是按下ESC退出时会出现错误,错误如下:七、 参考资料IBM-PC汇编语言程序设计汇编语言实验指导书 南昌大学实验报告-(2)字符串处理实验

6、学生姓名: 学 号: 专业班级: 实验类型: 验证 综合 设计 创新 实验日期: 2011.11.20/21 实验成绩: _ 一. 实验目的1熟悉串操作指令的功能与应用;2掌握串操作指令的寻址方式及使用方法,编写常用的字符串处理程序。二实验内容1字符串统计。自STRN开始的存储区中,有一个字符串,统计其中含有小写字母的个数,将统计结果以两位十进制数显示在屏幕上。2在给定的字符串中,删除重复的字符,其余的字符向前递补。三. 实验要求1认真预习有关串操作的指令极其寻址方式的特点,能够正确使用串操作指令,并准备好数据。2按正常的方法将删除字符程序编成子程序,规定子程序的入口和出口参数。四实验环境PC

7、微机DOS操作系统或 Windows 操作系统MASM.EXE,LINK.EXE,DEBUG.COM或宏汇编集成环境五实验步骤 1. 用1号系统调用从键盘键入一个字符串,然后统计其中小写字母的个数。程序每次执行,都能得到不同的结果。;COUNTDC.ASMDATA SEGMENTSTRN DB 80 DUP(?)DATA ENDSCODE SEGMENT ASSUME CS:CODE,DS:DATASTART: MOV AX, DATA MOV DS, AX LEA DI, STRN MOV CL, 0AGAIN: MOV AH,1 INT 21H CMP AL, 0DH JZ DONE MO

8、V DI, AL INC DI INC CL JMP AGAINDONE: LEA SI, STRN MOV CH, 0 MOV BL, 0 CLDCYCLE: LODSBCMP AL, 61H MP AL,7AHCJA NEXT INC BLNEXT: LOOP CYCLE MOV AL, BL MOV AH,0 MOV CL, 10 DIV CL XCHG AH, AL PUSH AX MOV DX,0DH MOV AH,2 INT 21H MOV DX,0AH MOV AH,2 INT 21H POP AX MOV DL, AH OR DL, 30H MOV AH, 2PUSH AXIN

9、T 21HPOP AXMOV DL, AL1 OR DL, 30H1 INT 21HPOP AXMOV DL, ALOR DL, 30HMOV AH,2INT 21HMOV AH, 4CHINT 21HCODE ENDSEND START编译源程序:如下,发现地29行有错误。用EDIT命令找到错误地方,并进行修改,如下图所示:修改后保存程序,重新编译:重新编译后程序没有错误,用反汇编查看指令代码:如下图所示:运行程序,验证程序设计结果的正确性。从键盘上输入字符串“ADKJjkdjfljdeowekdjg”,共二十个字符,其中小写字母十六个,显示结果如下:由运行结果可知,程序运行正确,实现了设计

10、要求。 实验2课参考教材第五章练习10的解法,但要编写一个在同一个字符串中删除字符,并将其余字符向前递补。删除字符串中重复字符的源程序清单:REPEAT: PUSH SI PUSH CX PUSH CX;CX为内循环计数 POP DX;DX为外循环计数 DEC CXMOV AL, SI CMP AL,0 JE NEXT1;若为空字符,则跳过COMP: DEC SI CMP AL,SI MOV BYTE PTRSI,0GOON: LOOP COMP ;查出与该字符重复的所有字符,并用0NEXT1: POP DX POP SI DEC SI DEC DX MOV CX,DX JNZ REPEAT;

11、对所有重复字符都进行查找 LEA SI,STRN;删除重复字符 MOV CL,LEN MOV CH,0CYCLE: MOV AL,SI INC CL CMP AL,0;是重复字符吗? JNZ NEXT;不是,查找下一个字符 DEC CX;递补子串长度送CX JZ ALLDONE CALL DELE;删除该空字符并递补 DEC SI NEXT: INC SI LOOP CYCLEALLDONE:MOV DL,0AH MOV AH,2 INT 21H MOV DL,0DH MOV AH,2 INT 21H LEA DX,STRN MOV AH,9 INT 21H MOV AH,4CH INT 21

12、HDELE PROC PUSH SI PUSH CX CLD MOV DI,SI;空字符处为目的首址 INC SI;下一个地址为源串首址 REP MOVSB POP CX POP SI RETDELE ENDPCODE ENDSEND START POP SI RETDELE ENDPCODE ENDS END START 编译源程序,检查程序的正确性,如下图所示:源程序在27行有错误,有提示的消息可知,此处需要用到变址或基址寄存器,用EDIT命令找到错误的地方,并改正:修改程序保存再编译以检查是否还有错误:有上图编译可知,程序修改正确,接下来连接成目标程序:生成的目标程序名为DELD.EXE

13、用反汇编命令查看程序代码:运行程序,检验程序设计的正确性:执行程序,输入字符串”DKJKLDKEIOWEJDLJAHNVL”,根据编写要求,显示的结果为“KIOWEDJAHNVL“,既删除字符串中重复的字符。如上图所示。 南昌大学实验报告 -(3)子程序实验学生姓名: 学 号: 专业班级: 实验类型: 验证 综合 设计 创新 实验日期: 2011.12.8/15 实验成绩: 一、 实验目的1. 掌握主程序与子程序之间的调用关系及调用方法;2. 掌握子程序调用过程中近程调用与远程调用的区别;3. 掌握通过堆栈转送参数的方法。二、 实验内容1. 将BUF开始的10个单元中的二进制数转换成两位十六进

14、制数的ASCII码,在屏幕上显示出来。要求码型转换通过子程序HEXAC实现,在转换过程中,通过子程序DISP实现显示。2. 编写一个主程序,从键盘接收若干个字符,然后用远调用的方法,调用子程序统计字符串中字符”b”的个数.子程序的参数是字符串的首地址TABLE,字符串长度N及字符”b”.子程序返回字符”b”的个数.参数传送采用堆栈实现.主程序在子程序返回后,显示字符”b”及其个数(设为一位十六进制数)。三、 实验环境PC微机DOS操作系统或 Windows 操作系统MASM.EXE,LINK.EXE,DEBUG.COM或宏汇编集成环境四、 实验要求1. 第一个实验程序用子程序的近程调用实现。由

15、于在调用HEXASC子程序时,子程序又调用了DISP子程序,这叫子程序的嵌套调用。实验过程中可以从堆栈的内容看到两个子程序的返回地址值。由于是近调用,地址值只包括返回地址的段内偏移量。在每个子程序的执行中,检查CS值是不变的。2. 第二个程序是利用远调用的方法调用子程序的。在远调用情况下,主程序与子程序处在不同的逻辑代码段中,可在子程序执行中查看CS值,它与主程序中的CS值是不同的。子程序调用后,堆栈中保留了返回地址的段地址及段内偏移量。3. 第二个程序中,主程序与子程序之间参数的传送是由堆栈实现的。一段是将参数(此处是串首址TABLE,串的长度N及待统计的字符“b”)顺序压如堆栈,在子程序调

16、用后,通过BP指针对堆栈中的参数访问,并将统计的结果通过堆栈返回。有关该方法的原理此处不再介绍。4. 预习子程序设计的基本方法,根据实验内容要求,画出子程序及主程序的流程图; 熟悉键盘键入字符串及用堆栈传送参数的程序段编制方法。五、 主要实验步骤1. 编辑、汇编两个源程序,生成相应的可执行文件(.EXE)2. 用DEBUG的R命令,T命令或G命令和D命令检查远程调用及近程调用时堆栈的变化。特别是通过堆栈传送的参数和子程序取出的参数是返回参数的详细过程。3. 检查程序执行的结果是否正确。实验内容1流程图: 主程序 子程序HEXASC子程序DISP实验内容1结果:实验内容2流程图: 主程序 子程序

17、实验内容2结果:实验内容1代码:DATA SEGMENTBUF DB 0ABH,0CDH,0DEH,01H,02H,03HDB 3AH,4BH,5CH,6FHDATA ENDSCODE SEGMENT ASSUME CS:CODE,DS:DATASTART: MOV AX,DATA MOV DS,AX LEA BX,BUF MOV CX,0AHLOP: MOV AL,BX CALL HEXASC INC BX LOOP LOP MOV AH,4CH INT 21HHEXASC PROC NEAR PUSH CX PUSH AX MOV DL,AL MOV CL,4 SHR DL,CL CALL

18、 DISP POP AX MOV DL,AL AND DL,0FH CALL DISP POP CX RETHEXASC ENDPDISP PROC NEAR CMP DL,9 JBE NEXT ADD DL,7NEXT: ADD DL,30H MOV AH,2 INT 21H RETDISP ENDPCODE ENDS END START实验内容2代码:DATA SEGMENTCHAR DB bBUF DB 50H,?,50H DUP(?)DATA ENDSMCODE SEGMENT ASSUME CS:MCODE,DS:DATASTART: MOV AX,DATA MOV DS,AX LE

19、A DX,BUF MOV AH,10 INT 21H MOV DL,0AH MOV AH,2 INT 21H LEA SI,BUF MOV CL,SI+1 MOV CH,0 INC SI INC SI MOV AL, CHAR MOV AH,0 PUSH SI PUSH CX PUSH AXCALL FAR PTR CHECK POP AX PUSH AX MOV DL,AL MOV CL,4 SHR DL,CL CMP DL,9 JBE J1 ADD DL,7J1: ADD DL,30H MOV AH,2 INT 21H POP AX MOV DL,AL AND DL,0FH CMP DL,

20、9 JBE J2 ADD DL,7J2: ADD DL,30H MOV AH,2 INT 21H MOV AH,4CH INT 21HMCODE ENDSSCODE SEGMENT ASSUME CS:SCODECHECK PROC FAR PUSH BP MOV BP,SP MOV SI,BP+10 MOV CX,BP+8 MOV AX,BP+6 XOR AH,AHAGAIN: CMP AL,SI JNE NEXT1 INC AHNEXT1: INC SI LOOP AGAIN MOV AL,AH MOV BP+10,AX POP BP RET 4CHECK ENDPSCODE ENDS E

21、ND START六、 思考题分析远程调用与近程调用的区别,在用DEBUG有关命令观察时,执行过程有何不同。答:在近程调用中CS值不变,而在远程调用中CS值发生改变;近程调用中SP+2,远程调用中SP+4。七、 参考资料IBM-PC汇编语言程序设计汇编语言实验指导书 南昌大学实验报告-(4)中断程序设计实验学生姓名: 学 号: 专业班级: 实验类型: 验证 综合 设计 创新 实验日期: 2011.12.11/16 实验成绩: 一、实验目的:1.加深对中断程序的理解,掌握中断程序结构2.掌握中断程序的设计,调试方法二、实验内容:编制程序:程序开始时要有输入数字的提示,通过键盘输入一个十进制数(0-

22、65535),用中断程序调用来读取键盘输入的字符、显示该字符。如果输入09以外的字符不显示该字符,并且继续输入的09紧跟在前面的字符后面,在屏幕上面要以十六进制形式显示;当用户按下回车键时可以再次输入一个十进制数,当用户按下空格键时程序结束。三、实验环境PC微机DOS操作系统或 Windows 操作系统MASM.EXE,LINK.EXE,DEBUG.COM或宏汇编集成环境四、 实验步骤1.编写编辑、汇编源程序,生成相应的可执行文件(.EXE),得源程序如下:DATA SEGMENTCOUNT DW 1MESS DB Haha!, 0DH,0AH,$DATA ENDSCODE SEGMENT A

23、SSUME CS:CODE, DS:DATA, ES: DATASTART: JMP GO DW 100 DUP(?)OLD_IP DW ?OLD_CS DW ?GO: MOV AX,CS MOV DS,AX MOV SS,AX MOV SP,OFFSET OLD_IP MOV AL,9H ;取中断向量 MOV AH,35H INT 21H MOV OLD_CS,ES ;存原中断向量段址 MOV OLD_IP,BX ;存原中断向量偏移量 PUSH DS MOV DX, OFFSET MYINT9 ;新偏移量送DX MOV AX, SEG MYINT9 MOV DS, AX ;新段址送DS MO

24、V AL, 9H MOV AH, 25H INT 21H ;写入新的中断向量 POP DS NEXT: JMP NEXT MYINT9 PROC FAR PUSH AX PUSH DX IN AL,60H TEST AL,80H JNZ EXIT ;以下输出输入字符的键盘扫描码 PUSH AX SHR AL,1 SHR AL,1 SHR AL,1 SHR AL,1 CMP AL,9 JBE ADD30H ADD AL,7ADD30H: ADD AL,30H MOV DL,AL MOV AH,2 INT 21H POP AX AND AL,0FH CMP AL,9 JBE ADD_30H ADD

25、 AL,7ADD_30H: ADD AL,30H MOV DL,AL MOV AH,2 INT 21H ;输出回车换行 MOV AH, 2 MOV DL,0AH INT 21H MOV DL,0DH INT 21HEXIT: MOV AL,20H OUT 20H,AL POP DX POP AX IRET MYINT9 ENDPCODE ENDS END START文件命名为:INT9H.EXE此源程序段没有采用调用原来键盘中断程序,若要调用则在结尾处改为:EXIT: POP DX POP AX JMP DWORD PTR OLD_IP MYINT9 ENDPCODE ENDS END STA

26、RT2.运行INT9H.EXE,得结果如下:没有采用调用原来键盘中断程序:在键盘上依次输入:q、w、e、r、t、y、u、i、o、p、a、s、d、f 2 调用原键盘中断程序:在键盘重复依次输入得结果如下:所得结果是相同的。 南昌大学实验报告-(5)C+调用汇编子程序学生姓名: 学 号: 专业班级: 电104 实验类型: 验证 综合 设计 创新 实验日期: 2011.12.17/18 实验成绩: 一实验目的1掌握主程序与子程序之间的调用关系及调用方法;2掌握子程序调用过程中近程调用与远程调用的区别;3掌握通过堆栈转送参数的方法。二实验内容1将BUF开始的10个单元中的二进制数转换成两位十六进制数的

27、ASCII码,在屏幕上显示出来。要求码型转换通过子程序HEXAC实现,在转换过程中,通过子程序DISP实现显示。2编写一个主程序,从键盘接收若干个字符,然后用远调用的方法,调用子程序统计字符串中字符b的个数.子程序的参数是字符串的首地址TABLE,字符串长度N及字符”b”.子程序返回字符b”的个数.参数传送采用堆栈实现.主程序在子程序返回后,显示字符”b”及其个数(设为一位十六进制数)。三实验环境PC微机DOS操作系统或 Windows 操作系统MASM.EXE,LINK.EXE,DEBUG.COM或宏汇编集成环境四实验步骤1编辑、汇编两个源程序,生成相应的可执行文件(.EXE)2用DEBUG

28、的R命令,T命令或G命令和D命令检查远程调用及近程调用时堆栈的变化。特别是通过堆栈传送的参数和子程序取出的参数是返回参数的详细过程。3检查程序执行的结果是否正确。五实验结果 实验程序:1. DATA SEGMENTBUF DB 0ABH,0CDH,0DEH,01H,02H,03HDB 3AH,4BH,5CH,6FHDATA ENDSCODE SEGMENT ASSUME CS:CODE,DS:DATASTART: MOV AX,DATA MOV DS,AX MOV CX,10 LEA BX,BUFAGAIN: MOV AL,BX CALL HEXASC INC BX LOOP AGAIN MOV AH,4CH INT 21HHEXASC PROC NEARMOV DL,ALPUSH CXMOV CL,4SHR DL,CLP

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1