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

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

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

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

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

    实验报告实验课程:学生姓名:学号:专业班级:电气信息类III班2011 年 12 月 20 日1目录(1)汇编 语 言 程序 上 机 过 程.2(2)字符 串 处 理程 序 实 验.6(3)子程 序 实 验.13(4)中断 程 序 实验.21(5)C+调 用 汇 编子 程 序.252南昌大学实验报告-(1)汇 编 语言 程 序 上 机 过 程学生姓名:学号:专业班级:实验类型:验证 综合 设计 创新实验日期:2011.11.12/13实验成绩:一、实验目的熟练掌握汇编语言程序的编辑、调试和运行的过程和方法。了解汇编语言程序的汇编、运行环境。二、实验内容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 了解利用的 INT 21H的1号功能实现键盘输入的方法,了解.EXE文件和.COM文件的区别及用INT 21H 4C号功能返回系统的方法;3 阅读下面程序段。五、主要实验步骤程序:datasegmentmessagedbThis is asample program of keyboard and displydb0dh,0ah,Pleasestrike the key!,0dh,0ah,$dataendsstack segmentparastack stackdb50 dup(?)stack endscode segmentassumecs:code,ds:data,ss:stackstart:movax,datamovds,axmovdx,offset messagemovah,9int21hagain:movah,13int21hcmpal,1bhjeexitcmpal,61hjcndcmpal,7ahjandand al,11011111bnd:movdl,almovah,2int21hjmp againexit:movah,4chint21hcode endsendstart实验步骤:1 用用文字编辑工具(记事本或EDIT)将源程序输入,其扩展名为ASM。2 用 MASM 对源文件进行汇编,产生OBJ 文件和 LST 文件。若汇编时提示有错,用文字编辑工具修改源程序后重新汇编,直至通过。3 用 TYPE 命令显示1 产生的 LST 文件。44 用 LINK 将 OBJ 文件连接成可执行的EXE 文件。5 在 DOS 状态下运行LINK 产生的 EXE 文件。即在屏幕上显示标题并提示你按键。每按一键在屏幕上显示二个相同的字符,但小写字母被改成大写。按 ESC 键可返回DOS。若未出现预期结果,用DEBUG 检查程序。5六、思考题1、若在源程序中把INT 21H的H省去,会产生什么现象?代码编译连接均为正常,但是运行时无法输入与输出,也无法退出。2、把 INT 21H4CH号功能改为INT 20H,行不行?更改后,编译链接均正常,输入输出也正常,但是按下ESC 退出时会出现错误,错误如下:七、参考资料IBM-PC 汇编语言程序设计汇编语言实验指导书6南昌大学实验报告-(2)字 符 串 处 理 实 验学生姓名:学号:专业班级:实验类型:验证 综合 设计 创新实验日期:2011.11.20/21实验成绩:_一.实验目的1熟悉串操作指令的功能与应用;2掌握串操作指令的寻址方式及使用方法,编写常用的字符串处理程序。二实验内容1字符串统计。自STRN 开始的存储区中,有一个字符串,统计其中含有小写字母的个数,将统计结果以两位十进制数显示在屏幕上。2在给定的字符串中,删除重复的字符,其余的字符向前递补。三.实验要求1认真预习有关串操作的指令极其寻址方式的特点,能够正确使用串操作指令,并准备好数据。2按正常的方法将删除字符程序编成子程序,规定子程序的入口和出口参数。四实验环境PC 微机DOS 操作系统或Windows 操作系统MASM.EXE,LINK.EXE,DEBUG.COM或宏汇编集成环境五实验步骤1.用 1 号系统调用从键盘键入一个字符串,然后统计其中小写字母的个数。程序每次执行,都能得到不同的结果。;COUNTDC.ASMDATASEGMENTSTRNDB 80 DUP(?)DATAENDSCODESEGMENTASSUME CS:CODE,DS:DATASTART:MOV AX,DATAMOV DS,AXLEA DI,STRNMOV CL,07AGAIN:MOV AH,1INT 21HCMP AL,0DHJZDONEMOV DI,ALINC DIINC CLJMP AGAINDONE:LEA SI,STRNMOV CH,0MOV BL,0CLDCYCLE:LODSB CMP AL,61HMP AL,7AHCJA NEXTINC BLNEXT:LOOP CYCLEMOV AL,BLMOV AH,0MOV CL,10DIV CLXCHG AH,ALPUSH AXMOV DX,0DHMOV AH,2INT 21HMOV DX,0AHMOV AH,2INT 21HPOPAXMOV DL,AHORDL,30HMOV AH,2PUSHAXINT 21HPOPAXMOV DL,AL1ORDL,30H1INT21HPOPAXMOV DL,AL8OR DL,30HMOV AH,2INT 21HMOV AH,4CHINT 21HCODEENDSEND START编译源程序:如下,发现地29 行有错误。用 EDIT 命令找到错误地方,并进行修改,如下图所示:修改后保存程序,重新编译:9重新编译后程序没有错误,用反汇编查看指令代码:如下图所示:运行程序,验证程序设计结果的正确性。从键盘上输入字符串“ADKJjkdjfljdeowekdjg”,共二十个字符,其中小写字母十六个,显示结果如下:由运行结果可知,程序运行正确,实现了设计要求。实验 2 课参考教材第五章练习10 的解法,但要编写一个在同一个字符串中删除字符,并将其余字符向前递补。删除字符串中重复字符的源程序清单:REPEAT:PUSH SI PUSH CXPUSH CX;CX 为内循环计数POPDX;DX为外循环计数DECCXMOVAL,SICMP AL,0JENEXT1;若为空字符,则跳过COMP:DEC SICMP AL,SIMOV BYTE PTRSI,0GOON:LOOP COMP;查出与该字符重复的所有字符,并用0NEXT1:POPDXPOPSIDEC SIDEC DXMOV CX,DXJNZ REPEAT;对所有重复字符都进行查找LEA SI,STRN;删除重复字符;DELD.ASMDATASEGMENTSTRNDB 80 DUP(?)LENDB?DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATA,ES:DATASTART:MOV AX,DATAMOV DS,AXMOV ES,AXLEA SI,STRN1MOV CL,0AGAIN:MOV AH,1 INT 21HCMP AL,0DHJZDONEMOV SI,ALINC SIINC CLJMP AGAINDONE:MOV CH,0MOV LEN,CLDEC SIMOV BYTE PTR SI+1,$10MOV CL,LENMOV CH,0CYCLE:MOV AL,SIINC CLCMP AL,0;是重复字符吗?JNZ NEXT;不是,查找下一个字符DEC CX;递补子串长度送CXJZALLDONECALL DELE;删除该空字符并递补DEC SINEXT:INC SI LOOP CYCLEALLDONE:MOVDL,0AHMOV AH,2INT 21HMOV DL,0DHMOV AH,2INT 21HLEA DX,STRNMOV AH,9INT 21HMOV AH,4CHINT 21HDELEPROCPUSH SIPUSH CXCLDMOV DI,SI;空字符处为目的首址INC SI;下一个地址为源串首址REP MOVSBPOPCXPOPSIRETDELEENDPCODEENDSENDSTARTPOPSIRETDELEENDPCODEENDSEND START编译源程序,检查程序的正确性,如下图所示:11源程序在27 行有错误,有提示的消息可知,此处需要用到变址或基址寄存器,用EDIT 命令找到错误的地方,并改正:修改程序保存再编译以检查是否还有错误:有上图编译可知,程序修改正确,接下来连接成目标程序:此处是寄存器直接寻址,把cl的值送给标号为LEN 存储单元,所以应去掉”12生成的目标程序名为DELD.EXE用反汇编命令查看程序代码:运行程序,检验程序设计的正确性:执 行 程 序,输 入 字 符 串”DKJKLDKEIOWEJDLJAHNVL”,根 据 编 写 要 求,显 示 的 结 果 为“KIOWEDJAHNVL“,既删除字符串中重复的字符。如上图所示。13南昌大学实验报告-(3)子 程 序 实 验学生姓名:学号:专业班级:实验类型:验证 综合 设计 创新实验日期:2011.12.8/15实验成绩:一、实验目的1.掌握主程序与子程序之间的调用关系及调用方法;2.掌握子程序调用过程中近程调用与远程调用的区别;3.掌握通过堆栈转送参数的方法。二、实验内容1.将 BUF 开始的 10 个单元中的二进制数转换成两位十六进制数的ASCII 码,在屏幕上显示出来。要求码型转换通过子程序HEXAC 实现,在转换过程中,通过子程序DISP 实现显示。2.编写一个主程序,从键盘接收若干个字符,然后用远调用的方法,调用子程序统计字符串中字符”b”的个数.子程序的参数是字符串的首地址TABLE,字符串长度N 及字符”b”.子程序返回字符”b”的个数.参数传送采用堆栈实现.主程序在子程序返回后,显示字符”b”及其个数(设为一位十六进制数)。三、实验环境PC 微机DOS 操作系统或Windows 操作系统MASM.EXE,LINK.EXE,DEBUG.COM或宏汇编集成环境四、实验要求1.第一个实验程序用子程序的近程调用实现。由于在调用HEXASC 子程序时,子程序又调用了 DISP 子程序,这叫子程序的嵌套调用。实验过程中可以从堆栈的内容看到两个子程序的返回地址值。由于是近调用,地址值只包括返回地址的段内偏移量。在每个子程序的执行中,检查CS 值是不变的。2.第二个程序是利用远调用的方法调用子程序的。在远调用情况下,主程序与子程序处在不同的逻辑代码段中,可在子程序执行中查看CS 值,它与主程序中的CS 值是不同的。子程序调用后,堆栈中保留了返回地址的段地址及段内偏移量。3.第二个程序中,主程序与子程序之间参数的传送是由堆栈实现的。一段是将参数(此处是串首址 TABLE,串的长度N 及待统计的字符“b”)顺序压如堆栈,在子程序调用后,通过 BP 指针对堆栈中的参数访问,并将统计的结果通过堆栈返回。有关该方法的原理此处不再介绍。4.预习子程序设计的基本方法,根据实验内容要求,画出子程序及主程序的流程图;熟悉键盘键入字符串及用堆栈传送参数的程序段编制方法。五、主要实验步骤1.编辑、汇编两个源程序,生成相应的可执行文件(.EXE)2.用 DEBUG 的 R 命令,T 命令或 G 命令和 D 命令检查远程调用及近程调用时堆栈的变化。特别是通过堆栈传送的参数和子程序取出的参数是返回参数的详细过程。143.检查程序执行的结果是否正确。实验内容 1 流程图:主程序子程序 HEXASC15子程序 DISP实验内容 1 结果:16实验内容2 流程图:17主程序子程序实验内容 2 结果:18实验内容 1 代码:DATASEGMENTBUFDB 0ABH,0CDH,0DEH,01H,02H,03HDB 3AH,4BH,5CH,6FHDATAENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART:MOV AX,DATAMOV DS,AXLEA BX,BUFMOV CX,0AHLOP:MOV AL,BXCALL HEXASCINC BXLOOP LOPMOV AH,4CHINT 21HHEXASC PROC NEARPUSH CXPUSH AXMOV DL,ALMOV CL,4SHR DL,CL19CALL DISPPOPAXMOV DL,ALAND DL,0FHCALL DISPPOP CXRETHEXASC ENDPDISP PROC NEARCMP DL,9JBE NEXTADD DL,7NEXT:ADD DL,30HMOV AH,2INT 21HRETDISPENDPCODEENDSEND START实验内容 2 代码:DATASEGMENTCHARDB bBUFDB 50H,?,50H DUP(?)DATAENDSMCODE SEGMENTASSUME CS:MCODE,DS:DATASTART:MOV AX,DATAMOV DS,AXLEA DX,BUFMOV AH,10INT 21HMOV DL,0AHMOV AH,2INT 21HLEA SI,BUFMOV CL,SI+1MOV CH,0INC SIINC SIMOV AL,CHARMOV AH,0PUSH SIPUSH CXPUSH AXCALL FAR PTR CHECKPOPAXPUSH AXMOV DL,ALMOV CL,4SHR DL,CLCMP DL,9JBE J1ADD DL,7J1:ADD DL,30HMOV AH,2INT 21H20POPAXMOV DL,ALAND DL,0FHCMP DL,9JBE J2ADD DL,7J2:ADD DL,30HMOV AH,2INT 21HMOV AH,4CHINT 21HMCODE ENDSSCODESEGMENTASSUME CS:SCODECHECKPROC FARPUSH BPMOV BP,SPMOV SI,BP+10MOV CX,BP+8MOV AX,BP+6XOR AH,AHAGAIN:CMP AL,SIJNE NEXT1INC AHNEXT1:INC SILOOP AGAINMOV AL,AHMOV BP+10,AXPOP BPRET 4CHECKENDPSCODEENDSEND START六、思考题分析远程调用与近程调用的区别,在用DEBUG 有关命令观察时,执行过程有何不同。答:在近程调用中 CS值不变,而在远程调用中 CS 值发生改变;近程调用中 SP+2,远程调用中 SP+4。七、参考资料IBM-PC 汇编语言程序设计汇编语言实验指导书21南昌大学实验报告-(4)中断 程 序 设 计 实 验学生姓名:学号:专业班级:实验类型:验证 综合 设计 创新实验日期:2011.12.11/16实验成绩:一、实验目的:1.加 深 对 中 断 程 序 的 理 解,掌 握 中 断 程 序 结 构2.掌 握 中 断 程 序 的 设 计,调 试 方 法二、实验内容:编 制 程 序:程 序 开 始 时 要 有 输 入 数 字 的 提 示,通 过 键 盘 输 入 一 个 十 进 制 数(0-65535),用 中 断 程 序 调 用 来 读 取 键 盘 输 入 的 字 符、显 示 该 字 符。如 果 输 入 09 以 外 的 字 符 不 显 示该 字 符,并 且 继 续 输 入 的 09 紧 跟 在 前 面 的 字 符 后 面,在 屏 幕 上 面 要 以 十 六 进 制 形 式 显示;当 用 户 按 下 回 车 键 时 可 以 再 次 输 入 一 个 十 进 制 数,当 用 户 按 下 空 格 键 时 程 序 结 束。三、实验环境PC微机DOS操作系统或Windows操作系统MASM.EXE,LINK.EXE,DEBUG.COM或宏汇编集成环境四、实验步骤1.编写编辑、汇编源程序,生成相应的可执行文件(.EXE),得源程序如下:DATASEGMENTCOUNTDW1MESSDBHaha!,0DH,0AH,$DATAENDSCODESEGMENTASSUME CS:CODE,DS:DATA,ES:DATASTART:JMPGODW100 DUP(?)OLD_IPDW?22OLD_CS DW?GO:MOVAX,CSMOVDS,AXMOVSS,AXMOVSP,OFFSETOLD_IPMOVAL,9H;取中断向量MOVAH,35HINT21HMOVOLD_CS,ES;存原中断向量段址MOVOLD_IP,BX;存原中断向量偏移量PUSHDSMOVDX,OFFSET MYINT9;新偏移量送DXMOVAX,SEG MYINT9MOVDS,AX;新段址送DSMOVAL,9HMOVAH,25HINT21H;写入新的中断向量POPDSNEXT:JMP NEXTMYINT9PROCFARPUSHAXPUSHDXIN AL,60HTEST AL,80HJNZ EXIT;以下输出输入字符的键盘扫描码PUSH AXSHRAL,1SHRAL,1SHRAL,1SHRAL,1CMPAL,9JBEADD30H23ADDAL,7ADD30H:ADDAL,30HMOVDL,ALMOVAH,2INT21HPOPAXANDAL,0FHCMPAL,9JBEADD_30HADDAL,7ADD_30H:ADDAL,30HMOVDL,ALMOVAH,2INT21H;输出回车换行MOVAH,2MOVDL,0AHINT21HMOVDL,0DHINT21HEXIT:MOVAL,20HOUT20H,ALPOPDXPOPAXIRETMYINT9ENDPCODEENDSENDSTART文件命名为:INT9H.EXE此源程序段没有采用调用原来键盘中断程序,若要调用则在结尾处改为:EXIT:24POPDXPOPAXJMP DWORD PTR OLD_IPMYINT9ENDPCODEENDSENDSTART2.运行 INT9H.EXE,得结果如下:没有采用调用原来键盘中断程序:在键盘上依次输入:q、w、e、r、t、y、u、i、o、p、a、s、d、f 2调 用 原 键 盘 中 断 程 序:在 键 盘 重 复 依 次 输 入 得 结 果 如 下:所得结果是相同的。25南昌大学实验报告-(5)C+调 用 汇 编 子 程 序学生姓名:学号:专业班级:电 104实验类型:验证 综合 设计 创新实验日期:2011.12.17/18实验成绩:一实验目的1掌握主程序与子程序之间的调用关系及调用方法;2掌握子程序调用过程中近程调用与远程调用的区别;3掌握通过堆栈转送参数的方法。二实验内容1将 BUF 开始的 10 个单元中的二进制数转换成两位十六进制数的ASCII 码,在屏幕上显示出来。要求码型转换通过子程序HEXAC 实现,在转换过程中,通过子程序DISP 实现显示。2编写一个主程序,从键盘接收若干个字符,然后用远调用的方法,调用子程序统计字符串中字符b的个数.子程序的参数是字符串的首地址TABLE,字符串长度N 及字符”b”.子程序返回字符b”的个数.参数传送采用堆栈实现.主程序在子程序返回后,显示字符”b”及其个数(设为一位十六进制数)。三实验环境PC 微机DOS 操作系统或Windows 操作系统MASM.EXE,LINK.EXE,DEBUG.COM或宏汇编集成环境四实验步骤1编辑、汇编两个源程序,生成相应的可执行文件(.EXE)2用 DEBUG 的 R 命令,T 命令或 G 命令和 D 命令检查远程调用及近程调用时堆栈的变化。特别是通过堆栈传送的参数和子程序取出的参数是返回参数的详细过程。3检查程序执行的结果是否正确。五实验结果实验程序:1.DATASEGMENTBUFDB 0ABH,0CDH,0DEH,01H,02H,03HDB 3AH,4BH,5CH,6FHDATAENDSCODESEGMENTASSUME CS:CODE,DS:DATA26START:MOV AX,DATAMOV DS,AXMOV CX,10LEABX,BUFAGAIN:MOVAL,BXCALLHEXASCINCBXLOOPAGAINMOVAH,4CHINT 21HHEXASC PROC NEARMOV DL,ALPUSHCXMOVCL,4SHRDL,CLPOPCXCALLDISP;显示高位HEX 数MOVDL,ALANDDL,0FHCALLDISPRETHEXASC ENDPDISPPROPCMPDL,9JBENEXTADDDL,7NEXT:ADDDL,30HMOVAH,2INT21H;显示RETDISPENDPCODEENDSEND START2统计并显示某键入字符的个数的程序:;COUNTER.ASMDATASEGMENTCHARDB bBUFDB50H,?,50H DUP(?)DATAENDSMCODESEGMENTASSUME CS:MCODE,DS:DATASTART:MOVAX,DATAMOVDS,AXLEADX,BUF27MOVAH,9INT21HLEASIBUFMOVCL,SI+1MOVCH,0;CX 中为字符串长度INCSIINCSI;SI 指向串首址TABLEMOVAL,CHARMOVAH,0;AX 中为待查字符PUSHSIPUSHCXPUSHAX;参数送堆栈CALLCHECKPOPAX:统计个数在AL 中MOVDL,CHARMOVAH,2INT21HMOVDL,ALANDDL,0FHCMPDL,9JBENEXTADDDL,7NEXT:ADDDL,30HMOVAH,2INT21H;显示统计个数MOVAH,4CHINT21HM CODEENDSSCODESEGMENTASSUMECS:SCODECHECKPROCFARPUSHBPMOVBP,SPMOVSI,BP+10MOVCX,BP+8MOVAX,BP+6XORAH,AHAGAIN:CMPAL.SIJNENEXT1INCAHNEXT1:INCSILOOPAGAINMOVAL,AHMOVBP+10,AX28POPBPRET4CHECKENDPENDSTART29六.参考资料IBM-PC 汇编语言程序设计汇编语言实验指导书

    注意事项

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

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




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

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

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

    收起
    展开