版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
实验五子程序设计1.实验目的和要求1、学习子程序的编写,主子程序的调用2、不同模块间程序的调用和调试2.实验环境实验的硬件环境是:IBM—PC机及其兼容机实验的软件环境是:操作系统:DOS2.0以上;调试程序:DEBUG.COM;文本编程程序:EDIT.EXE、WPS.EXE;宏汇编程序:MASM.EXE(或ASM.EXE);连接装配程序:LINK.EXE;交叉引用程序:CREF.EXE(可有可无)。3.实验内容及实验数据记录1、数据段中的3个字符,调用子程序将其逐个显示出来。子程序的功能是显示一个字符。单步执行,观察IP的变化DATA SEGMENT MAG DB‘ABC’ DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA START: MOV AX,DATA MOV DS,AX MOV SI,0 MOV CX,3 LL: MOV DL,MAG[SI] CALL MADD INC SI LOOP LL MOV AH,4CH INT 21H MADD PROC MOV AH,02H INT 21H RET MADD ENDP CODE ENDS END START2、阅读S31.ASM和S32.ASM两个模块中的程序,并分别汇编,然后连接成一个可执行文件S31.EXE。具体步骤如下: MASMS31.ASM(分别汇编) MASMS32.ASM LINKS31S32(将两个文件连接成为一个文件名为S31) S31.EXE(运行)3、编程:利用主程序调用子程序,比较BUF1和BUF2缓冲区中不相等的字符,并将不相等的字符显示出来。(也可以将找到的不相等字符逐个显示,用INT21H的02功能调用)4、编程:子程序搜索指定字符缓冲区中是否有n,如果有用y替代。调用子程序将BUF1,BUF2,BUF3中的n全部用y替代4.算法描述及实验步骤3、比较不相同字符串代码:DATASEGMENTBUF1DB'HUIFEHJSHEGDC'LEN1=$-BUF1BUF2DB'HUISWHJSAWQDC'BUFDBLEN1DUP(?);不相同的字符存在BUF开始的缓冲区DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATASTART:MOVAX,DATAMOVDS,AXLEADI,BUF1LEASI,BUF2MOVCX,LEN1LEABX,BUFCALLKLLMOVBYTEPTR[BX],'$';在要显示的字符串末尾加‘$’,显示字符串bufLEADX,BUFCALLPRINTMOVAH,4CHINT21HKLLPROC;比较2个字符串,将不同的字符送入BXAL1:MOVAL,[SI]CMP[DI],ALJEAL2MOV[BX],ALINCBXAL2:INCSIINCDILOOPAL1RETKLLENDPPRINTPROCNEAR;显示字符串子程序MOVAH,9INT21HRETPRINTENDPCODEENDSENDSTART4、将字符缓冲区中的n改为y:DATASEGMENTBUF1DB'EVERNDOGHASHISDAN!',0AH,0DH,'$'LEN1=$-BUF1BUF2DB'HAPPNEVERNDAN!',0AH,0DH,'$'LEN2=$-BUF2BUF3DB'HELLO!','$'LEN3=$-BUF3DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATASTART:MOVAX,DATAMOVDS,AXLEASI,BUF1;入口参数SI,CX设置MOVCX,LEN1CALLCMMP;调用子程序LEASI,BUF2;入口参数SI,CX设置MOVCX,LEN2CALLCMMP;调用子程序LEASI,BUF3;入口参数SI,CX设置MOVCX,LEN3CALLCMMPMOVAH,4CHINT21HCMMPPROC;子程序名为CMMPMOVDX,SI;DOS9号功能,输出字符串CMP1:CMPBYTEPTR[SI],'N'JNENOTNMOVAL,'Y'MOV[SI],ALNOTN:INCSILOOPCMP1MOVAH,09H;显示字符串INT21HRETCMMPENDPCODEENDSENDSTART5.调试过程1、程序执行第一句之后的IP值执行到CALL语句前IP执行完CALL语句IP值为第2次执行CALL语句前IP值为执行完后IP值为当执行到RET前IP值为执行完为第3次执行CALL语句前IP值为执行后为执行到RET前IP值为执行后为6.实验结果2、连接s31、s32后,显示结果3、运行程序显示buf1和buf2中不同的字符为:4、运行程序,将字符串中n全都改为y7.总结这次实验学习了子程序的编写以及主程序和子程序的调用,不同模块间程序的调用和调试方法,实践的过程中加深了对子程序调用的代码的使用。附录:附源程序: NAMES31.ASM 不同模块间的段间调用。从键盘输入2位非压缩BCD数,存入AX寄存器中。为了将其转换为二进制数,编写一个子程序TRAN。显示子程序DISP完成将16进制数转换为对应的ASCII码并显示该字符,显示子程序在另一模块S32中。输入数据为00时结束。 EXTRN DISP:FAR CODE SEGMENT PARA'CODE' ASSUME CS:CODE START: MOV AH,01H INT 21H MOV BL,AL INT 21H MOV AH,AL MOV AL,BL CMP AX,3030H JE EXIT CALL NEARPTRTRAN CALL FARPTRdisp JMP START EXIT: MOV AH,4CH INT 21H TRAN PROC NEAR ;将输入的ASCII码转换成2进制数 AND AX,0F0FH ;将ASCII码转换成非压缩BCD码, ;高位在AL中 MOV BL,AH MOV CL,10D MUL CL ADD AL,BL RET TRAN ENDP CODE ENDS END START NAME S32.ASM PUBLIC DISP CODE1 SEGMENT PARA'CODE' ASSUME CS:CODE1 DISPPROCFAR MOV BL,AL MOV BH,00 MOV CH,4 ROLL: MOV CL,4 ROL BX,CL MOV DL,BL AND DL,0FH CMP DL,9 JBE N
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年商丘市农村信用社联合社秋季校园招聘笔试备考题库(浓缩500题)参考答案详解
- 三亚市农村信用社联合社秋季校园招聘笔试备考题库(浓缩500题)及完整答案详解一套
- 2026年延庆县农村信用社联合社秋季校园招聘笔试备考题库(浓缩500题)及答案详解(历年真题)
- 2026年金华市农村信用社联合社秋季校园招聘笔试备考题库(浓缩500题)及完整答案详解一套
- 柳州市农村信用社联合社秋季校园招聘笔试备考题库(浓缩500题)及答案详解(夺冠)
- 海南省农村信用社联合社秋季校园招聘笔试备考题库(浓缩500题)含答案详解(综合题)
- 广西壮族自治区农村信用社联合社秋季校园招聘笔试备考题库(浓缩500题)附答案详解(达标题)
- 2026年揭阳市农村信用社联合社秋季校园招聘笔试备考题库(浓缩500题)及答案详解(有一套)
- 长治市农村信用社联合社秋季校园招聘笔试备考题库(浓缩500题)含答案详解
- 廊坊市农村信用社联合社秋季校园招聘笔试备考题库(浓缩500题)带答案详解
- 冷链设施设备验证与校准培训课件
- 消防中控证考试题及答案
- 2024年三年级英语上册全册教案外研版
- 制造业智能化改造和数字化转型 诊断工作指引
- 2025年4月自考00160审计学试题及答案含评分标准
- 2020公路工程质量检验评定标准第二册机电工程
- 食堂摊位转让合同协议
- 小学五年级女生心理教育
- 铁路新人培训课件
- JJG972-2023离心式恒加速度试验机检定规程
- 制造业企业转型升级路径
评论
0/150
提交评论