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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

汇编语言实验报告.docx

1、汇编语言实验报告实 验 报 告实验课程: IBM-PC汇编语言程序设计 学生姓名: 毛训星 学 号: 6100410101 专业班级: 电气信息类III 103班 2011年12月17日 南昌大学实验报告 南昌大学实验报告-(4)汇编语言程序上机过程学生姓名: 毛训星 学 号: 6100410101 专业班级: 电103班 实验类型: 验证 综合 设计 创新 实验日期: 实验成绩: 一、 实验目的熟练掌握汇编语言程序的编辑、调试和运行的过程和方法。了解汇编语言程序的汇编、运行环境。二、 实验内容1 掌握常用的编辑工具软件(如WORD、EDIT)、MASM和LINK的使用;2 伪指令: SEGM

2、ENT,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 阅读下面程序段。五、 主要实验步骤程序:data segmentmessage db This

3、 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 int 21h cmp al,1bh je exi

4、t 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文件连接成可执行的EXE文件。5 在DOS状态下运行LINK产

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

6、专业班级: 电103班 实验类型: 验证 综合 设计 创新 实验日期: 实验成绩: 一、 实验目的1. 掌握主程序与子程序之间的调用关系及调用方法;2. 掌握子程序调用过程中近程调用与远程调用的区别;3. 掌握通过堆栈转送参数的方法。二、 实验内容1. 将BUF开始的10个单元中的二进制数转换成两位十六进制数的ASCII码,在屏幕上显示出来。要求码型转换通过子程序HEXAC实现,在转换过程中,通过子程序DISP实现显示。2. 编写一个主程序,从键盘接收若干个字符,然后用远调用的方法,调用子程序统计字符串中字符”b”的个数.子程序的参数是字符串的首地址TABLE,字符串长度N及字符”b”.子程序

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

8、序与子程序处在不同的逻辑代码段中,可在子程序执行中查看CS值,它与主程序中的CS值是不同的。子程序调用后,堆栈中保留了返回地址的段地址及段内偏移量。3. 第二个程序中,主程序与子程序之间参数的传送是由堆栈实现的。一段是将参数(此处是串首址TABLE,串的长度N及待统计的字符“b”)顺序压如堆栈,在子程序调用后,通过BP指针对堆栈中的参数访问,并将统计的结果通过堆栈返回。有关该方法的原理此处不再介绍。4. 预习子程序设计的基本方法,根据实验内容要求,画出子程序及主程序的流程图; 熟悉键盘键入字符串及用堆栈传送参数的程序段编制方法。五、 主要实验步骤1. 编辑、汇编两个源程序,生成相应的可执行文件

9、(.EXE)2. 用DEBUG的R命令,T命令或G命令和D命令检查远程调用及近程调用时堆栈的变化。特别是通过堆栈传送的参数和子程序取出的参数是返回参数的详细过程。3. 检查程序执行的结果是否正确。实验内容1流程图: 主程序 子程序HEXASC子程序DISP实验内容1结果:实验内容2流程图: 主程序 子程序实验内容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 D

10、S,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 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

11、 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 LEA 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 AXC

12、ALL 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,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,B

13、P+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 END START六、 思考题分析远程调用与近程调用的区别,在用DEBUG有关命令观察时,执行过程有何不同。答:在近程调用中CS值不变,而在远程调用中CS值发生改变;近程调用中SP+2,远程调用中SP+4。七、 参考资料IBM-PC汇编语言程序设计汇编语言实验指导书 南昌大学实验报告-(8)字符

14、处理程序实验学生姓名: 毛训星 学 号: 6100410101 专业班级: 电103班 实验类型: 验证 综合 设计 创新 实验日期: 实验成绩: 一. 实验目的1熟悉串操作指令的功能与应用;2掌握串操作指令的寻址方式及使用方法,编写常用的字符串处理程序。二实验内容1字符串统计。从键盘最多输入80个字符存放在STR开始的存储区中,统计其中含有小写字母的个数,将统计结果以两位十进制数显示在屏幕上。2删除重复字符。从键盘最多输入80个字符存放在STR开始的存储区中,删除其中重复的字符,输出删除处理后的字符串。三. 实验要求1认真预习有关串操作的指令极其寻址方式的特点,能够正确使用串操作指令,并准备

15、好数据。2 依题意分析给出程序设计算法。四实验环境PC微机DOS操作系统或 Windows 操作系统MASM.EXE,LINK.EXE,DEBUG.COM或宏汇编集成环境RADASM五实验步骤1用1号系统调用从键盘键入一个字符串,然后统计其中小写字母的个数。程序每次执行,都能得到不同的结果。2要求编写一个在同一个字符串中删除字符,并将其余字符向前递补的程序。六实验报告要求1、对照参考程序,画出程序流程图。2、总结字符串处理的编程方法,提出改进和完善此类程序的设计方案。七思考题1.如果要求以INT 21H的10号功能调用来实现字符串的输入,请修改程序;2.如果要统计输入的数字字符个数,指出程序修

16、改的地方;3.如果输入的小写字母数小于10(如输入了8个小写字符,这时候参考程序会输出小写字母个数是08)时候,如何修改程序,使得输出小写字母只有一位数而不是两位(如输入小写字母个数为个时输出8而不是08)。 参考程序清单1统计小写字母个数的程序清单:DATA SEGMENTMSG1 DB Input a string:,0AH,0DH,$MSG2 DB The number of lowercase letter is:$STR DB 80 DUP(?) DATA ENDS CODE SEGMENT ASSUME CS:CODE, DS:DATASTART: MOV AX, DATA MOV

17、 DS, AX ;输出提示 LEA DX,MSG1 MOV AH,9 INT 21H LEA DI, STR MOV CL, 0 ;CL用来记录输入字符数AGAIN: MOV AH, 1 INT 21H CMP AL,0DH JZ DONE ; 输入回车键则转DONE MOV DI,AL INC DI INC CL JMP AGAIN DONE: LEA SI,STR MOV CH,0 ;CX保存输入字符数 MOV BL,0 ;BL用来统计小写字符个数 CLDCYCLE: LODSB CMP AL,a JB NEXT CMP AL,z JA NEXT INC BL NEXT: LOOP CYC

18、LE ;回车换行 MOV AH,2 MOV DL,0AH INT 21H MOV DL,0DH INT 21H ;输出提示 LEA DX,MSG2 MOV AH,9 INT 21H ;以下显示输入小写字母个数的两位十进制数 MOV AL,BL ;小写字符个数送AL MOV AH,0 ;AX存放小写字符个数 MOV CL,10 DIV CL ;十位数在AL中,个位数在AH中 MOV BX,AX ;十位数在BL中,个位数在BH中 MOV DL,BL MOV AH,2 OR DL,30H INT 21H ;输出小写字母个数的十位数字 MOV DL,BH OR DL,30H MOV AH,2 INT

19、21H ;输出小写字母个数的个位数字 MOV AH,4CH INT 21HCODE ENDS END START2删除字符串中重复字符的源程序清单:DATA SEGMENT STR DB 80 DUP(?) LEN DW ?DATA ENDSCODE SEGMENT ASSUME CS:CODE,DS:DATA,ES:DATASTART: MOV AX,DATA MOV DS,AX MOV ES,AX ;初始化数据段和附加段为同一段值 LEA SI,STR ;SI=输入串的首地址 ;从键盘输入字符串 MOV CL,0 ;CL用来存放输入字符数 AGAIN: MOV AH,1 INT 21H C

20、MP AL,0DH ;回车结束输入 JZ IN_DONE MOV SI,AL INC SI INC CL JMP AGAIN IN_DONE: MOV CH,0 ;CX存放输入字符数 MOV LEN,CX ;将输入字符数保存到LEN ;将输入字符串中重复出现字符替换为0 LEA SI,STR ;SI=输入串的首地址 MOV DI,SI INC DI AGN: CMP CX,1 JZ OK ;只有剩一个字符就结束替换 PUSH CX ;保护外层循环计数 MOV AL,SI AND AL,AL JZ NEXT ;当前字符已被替换为0 L1: CMP AL,DI JNZ L2 MOV BYTE PT

21、RDI,0 L2: INC DI LOOP L1 ;内部循环,扫描当前字符后面是否与当前字符相同,相同则用0替换 NEXT: INC SI MOV DI,SI INC DI POP CX LOOP AGN OK: ;将那些被替换成0的字符去掉 LEA SI,STR ;SI=输入串的首地址 MOV CX,LEN RPT: AND CX,CX JZ RTN ;CX=0结束子程序 MOV AL,SI AND AL,AL JNZ NEXT1 ;当前字符不是被替换为0的字符 PUSH CX MOV DI,SI XOR BX,BX CLD REPZ SCASB JNZ L3 POP CX JMP RTN

22、;后面全是0,不用再继续 L3: DEC DI MOV AL,DI MOV SI,AL MOV BYTE PTRDI,0 POP CX NEXT1: INC SI DEC CX JMP RPT RTN: ;回车换行 MOV AH,2 MOV DL,0AH INT 21H MOV AH,2 MOV DL,0DH INT 21H ;输出结果 LEA SI,STR ;SI=输入串的首地址 MOV CX,LEN MOV AH,2 LOP: MOV DL,SI CMP DL,0 JZ EXIT INT 21H INC SI LOOP LOP EXIT: MOV AH,4CH INT 21HCODE EN

23、DS END START附件:修改结果参考1.DATA SEGMENTBUF DB 0ABH,0CDH,0DEH,01H,02H,03H DB 3AH,4BH,5CH,6FHDATA ENDSSTACK SEGMENT STACK DW 10 DUP(?)TOS EQU THIS WORDSTACK ENDS CODE 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 IN

24、T 21H HEXASC PROC NEAR MOV DL,AL PUSH CX MOV CL,4 SHR DL,CL POP CX CALL DISP ;显示高位HEX数 MOV DL,AL AND DL,0FH CALL DISP RETHEXASC ENDPDISP PROC PUSH AX CMP DL,9 JBE NEXT ADD DL,7NEXT: ADD DL,30H MOV AH,2 INT 21H ;显示 POP AX RET DISP ENDPCODE ENDS END START2.DATA SEGMENTCHAR DB bBUF DB 50H,? ,50H DUP(?)

25、DATA ENDS STACK SEGMENT STACK DW 10 DUP(?)TOS EQU THIS WORDSTACK ENDS MCODE SEGMENT ASSUME CS: MCODE, DS: DATASTART: MOV AX,DATA MOV DS,AX MOV AX,STACK MOV SS,AX MOV SP,OFFSET TOS LEA DX,BUF MOV AH,10 INT 21H LEA SI,BUF MOV CL, SI+1 MOV CH, 0 ;CX中为字符串长度 INC SI INC SI ;SI指向串首址TABLE MOV AL,CHAR MOV AH

26、,0 ;AX中为待查字符 PUSH SI PUSH CX PUSH AX ; 参数送堆栈 CALL CHECK MOV AH,2 MOV DL,0AH INT 21H MOV DL,0DH INT 21H MOV DL,CHAR MOV AH,2 INT 21H POP AX ;统计个数在AL中 MOV DL,AL AND DL,0FH CMP DL,9 JBE NEXT ADD DL,7NEXT: 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 END START

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2