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

上传人:第*** 文档编号:56000926 上传时间:2018-10-08 格式:PDF 页数:30 大小:1.84MB
返回 下载 相关 举报
大学课程汇编语言实验报告_第1页
第1页 / 共30页
大学课程汇编语言实验报告_第2页
第2页 / 共30页
大学课程汇编语言实验报告_第3页
第3页 / 共30页
大学课程汇编语言实验报告_第4页
第4页 / 共30页
大学课程汇编语言实验报告_第5页
第5页 / 共30页
点击查看更多>>
资源描述

《大学课程汇编语言实验报告》由会员分享,可在线阅读,更多相关《大学课程汇编语言实验报告(30页珍藏版)》请在金锄头文库上搜索。

1、实验报告实验课程:学生姓名:学号:专业班级:电气信息类电气信息类 IIIIII 班班20112011 年年 1212 月月 2020 日日1目录(1 1)汇编语言程序上机过程)汇编语言程序上机过程2 2(2 2)字符串处理程序实验字符串处理程序实验6(3 3)子程序实验子程序实验.13(4 4)中断程序实验中断程序实验21(5)C+C+调用汇编子程序调用汇编子程序.252南昌大学实验报告南昌大学实验报告-(1)汇编语言程序上机过程学生姓名:学号:专业班级:实验类型: 验证 综合 设计 创新实验日期:2011.11.12/13实验成绩:一、一、 实验目的实验目的熟练掌握汇编语言程序的编辑、调试和

2、运行的过程和方法。了解汇编语言程序的汇编、运行环 境。二、二、 实验内容实验内容1 掌握常用的编辑工具软件(如WORD、EDIT)、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 了解利用的IN

3、T 21H的1号功能实现键盘输入的方法, 了解.EXE文件和.COM文件的区别及用 INT 21H 4C号功能返回系统的方法; 3 阅读下面程序段。五、五、 主要实验步骤主要实验步骤程序程序: datasegment messagedb This is a sample program of keyboard and disply db 0dh,0ah,Please strike the key!,0dh,0ah,$ dataends stack segmentpara stack stack db 50 dup(?) stack ends code segment assumecs:code

4、,ds:data,ss:stack start:movax,data movds,ax movdx,offset message movah,9 int 21h again:movah,13int 21h cmpal,1bh jeexit cmpal,61h jcnd cmpal,7ah jand and al,11011111b nd:movdl,al movah,2 int 21h jmpagain exit:movah,4ch int 21h code ends endstart实验步骤实验步骤:1 用用文字编辑工具(记事本或 EDIT)将源程序输入,其扩展名为ASM。 2 用 MASM

5、 对源文件进行汇编,产生OBJ 文件和LST 文件。若汇编时提示有错,用 文字编辑工具修改源程序后重新汇编,直至通过。3 用 TYPE 命令显示 1 产生的LST 文件。44 用 LINK 将OBJ 文件连接成可执行的EXE 文件。5 在 DOS 状态下运行 LINK 产生的EXE 文件。即在屏幕上显示标题并提示你按键。每 按一键在屏幕上显示二个相同的字符, 但小写字母被改成大写。 按 ESC 键可返回 DOS。 若未出现预期结果,用 DEBUG 检查程序。5六、六、 思考题思考题1、 若在源程序中把INT 21H的H省去,会产生什么现象?代码编译连接均为正常,但是运行时无法输入与输出,也无法

6、退出。 2、 把 INT 21H4CH号功能改为 INT 20H,行不行?更改后,编译链接均正常,输入输出也正常,但是按下 ESC 退出时会出现错误,错误如下:七、七、 参考资料参考资料IBM-PC 汇编语言程序设计 汇编语言实验指导书6南昌大学实验报告南昌大学实验报告-(2)字符串处理实验学生姓名:学号:专业班级: 实验类型: 验证 综合 设计 创新实验日期:2011.11.20/21实验成绩: _一一. 实验目的实验目的1熟悉串操作指令的功能与应用; 2掌握串操作指令的寻址方式及使用方法,编写常用的字符串处理程序。二二实验内容实验内容1字符串统计。自 STRN 开始的存储区中,有一个字符串

7、,统计其中含有小写字母的个数, 将统计结果以两位十进制数显示在屏幕上。 2在给定的字符串中,删除重复的字符,其余的字符向前递补。三三. 实验实验要求要求1认真预习有关串操作的指令极其寻址方式的特点,能够正确使用串操作指令,并准备好数 据。 2按正常的方法将删除字符程序编成子程序,规定子程序的入口和出口参数。四实验环境四实验环境PC 微机DOS 操作系统或 Windows 操作系统 MASM.EXE,LINK.EXE,DEBUG.COM 或宏汇编集成环境五实验步骤五实验步骤1. 用 1 号系统调用从键盘键入一个字符串,然后统计其中小写字母的个数。程序每次执行,都能 得到不同的结果。 ;COUNT

8、DC.ASM DATASEGMENT STRNDB 80 DUP(?) DATAENDS CODESEGMENT ASSUME CS:CODE,DS:DATA START: MOVAX, DATA MOV DS, AX LEA DI, STRN MOV CL, 07AGAIN: MOVAH,1 INT 21H CMPAL, 0DH JZDONE MOV DI, AL INC DI INC CL JMPAGAIN DONE:LEA SI, STRN MOV CH, 0 MOV BL, 0 CLD CYCLE: LODSB CMPAL, 61H MPAL,7AHC JANEXT INC BL NE

9、XT:LOOP CYCLE MOVAL, BL MOVAH,0 MOV CL, 10 DIV CL XCHG AH,AL PUSHAX MOV DX,0DH MOVAH,2 INT 21H MOV DX,0AH MOVAH,2 INT 21H POPAX MOV DL, AH ORDL, 30H MOVAH, 2 PUSH AXINT 21H POPAX MOV DL, AL1OR DL, 30H1INT 21HPOPAX MOV DL, AL8OR DL, 30H MOVAH,2 INT 21H MOVAH, 4CH INT 21H CODEENDS END START 编译源程序:如下,发

10、现地 29 行有错误。用 EDIT 命令找到错误地方,并进行修改,如下图所示:修改后保存程序,重新编译:9重新编译后程序没有错误,用反汇编查看指令代码:如下图所示:运行程序,验证程序设计结果的正确性。 从键盘上输入字符串“ADKJjkdjfljdeowekdjg” ,共二十个字符,其中小写字母十六个,显示结果如下:由运行结果可知,程序运行正确,实现了设计要求。 实验 2 课参考教材第五章练习 10 的解法,但要编写一个在同一个字符串中删除字符,并将其余字 符向前递补。 删除字符串中重复字符的源程序清单:REPEAT:PUSH SI PUSH CX PUSH CX;CX 为内循环计数 POPDX

11、;DX 为外循环计数 DECCX MOVAL, SI CMPAL,0 JENEXT1;若为空字符,则跳过 COMP:DEC SI CMPAL,SIMOV BYTE PTRSI,0 GOON:LOOP COMP ;查出与该字符重复的所有字符,并用 0 NEXT1: POP DX POP SI DEC SI DEC DX MOV CX,DX JNZ REPEAT;对所有重复字符都进行查找 LEA SI,STRN;删除重复字符;DELD.ASM DATASEGMENT STRNDB 80 DUP(?) LENDB ? DATAENDS CODESEGMENT ASSUME CS:CODE,DS:DA

12、TA,ES:DATA START:MOVAX,DATA MOV DS,AX MOV ES,AX LEA SI,STRN1MOV CL,0AGAIN:MOVAH,1 INT 21H CMPAL,0DH JZDONE MOV SI,AL INC SI INC CL JMPAGAIN DONE:MOV CH, 0 MOV LEN,CL DEC SI MOV BYTE PTR SI+1,$10MOV CL,LEN MOV CH,0 CYCLE: MOVAL,SI INC CL CMPAL,0;是重复字符吗? JNZ NEXT;不是,查找下一个字符 DEC CX;递补子串长度送 CX JZALLDONE

13、 CALL DELE;删除该空字符并递补 DEC SI NEXT:INC SI LOOP CYCLE ALLDONE:MOV DL,0AH MOVAH,2 INT 21H MOV DL,0DH MOVAH,2 INT 21H LEA DX,STRN MOVAH,9 INT 21H MOVAH,4CH INT 21H DELEPROC PUSH SI PUSH CX CLD MOV DI,SI;空字符处为目的首址 INC SI;下一个地址为源串首址 REP MOVSB POP CX POP SI RET DELEENDP CODEENDS ENDSTART POP SI RET DELEENDP

14、 CODEENDS END START编译源程序,检查程序的正确性,如下图所示:11源程序在 27 行有错误,有提示的消息可知,此处需要用到变址或基址寄存器,用 EDIT 命令找到错误 的地方,并改正:修改程序保存再编译以检查是否还有错误:有上图编译可知,程序修改正确,接下来连接成目标程序:此处是寄存器直接寻址,把 cl 的值送给标号为 LEN 存储单 元,所以应去掉”12生成的目标程序名为 DELD.EXE用反汇编命令查看程序代码:运行程序,检验程序设计的正确性:执 行 程 序 , 输 入 字 符 串 ”DKJKLDKEIOWEJDLJAHNVL” , 根 据 编 写 要 求 , 显 示 的

15、 结 果 为 “KIOWEDJAHNVL“,既删除字符串中重复的字符。如上图所示。13南昌大学实验报告南昌大学实验报告-(3)子程序实验学生姓名:学号:专业班级: 实验类型: 验证 综合 设计 创新实验日期: 2011.12.8/15实验成绩:一、一、 实验目的实验目的1.掌握主程序与子程序之间的调用关系及调用方法; 2.掌握子程序调用过程中近程调用与远程调用的区别; 3.掌握通过堆栈转送参数的方法。二、二、 实验内容实验内容1.将 BUF 开始的 10 个单元中的二进制数转换成两位十六进制数的 ASCII 码,在屏幕上显示 出来。要求码型转换通过子程序 HEXAC 实现,在转换过程中,通过子

16、程序 DISP 实现显示。 2.编写一个主程序,从键盘接收若干个字符,然后用远调用的方法,调用子程序统计字符串中字 符”b”的个数.子程序的参数是字符串的首地址 TABLE,字符串长度 N 及字符”b”.子程序返回 字符”b”的个数.参数传送采用堆栈实现.主程序在子程序返回后,显示字符”b”及其个数(设为 一位十六进制数)。三、三、 实验环境实验环境PC 微机 DOS 操作系统或 Windows 操作系统 MASM.EXE,LINK.EXE,DEBUG.COM 或宏汇编集成环境四、四、 实验要求实验要求1.第一个实验程序用子程序的近程调用实现。由于在调用 HEXASC 子程序时,子程序又调用 了 DISP 子程序,这叫子程序的嵌套调用。实验过程中可以从堆栈的内容看到两个子程序 的返回地址值。由于是近调用,地址值只包括返回地址的段内偏移量。在每个子程序的执 行中,

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号