版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
_实验目的及实验环境实验环境:熟悉宏指令、宏定义、宏调用以及宏展开的概念;掌握宏指令的定义与调用的方法。掌握子程序的定义、调用以及调用程序与子程序之间参数的传递方法。了解宏指令与子程序的异同以及各自的适用场合。实验环境:80x86系列微型计算机一台以及进行汇编语言程序设计所必需的编程工具(文本编辑器、ASM.EXE、LINK.EXE、DEBUG.EXE)实验内容从键盘输入10个无符号十进制数(小于256),将其转换为二进制数并存放在NUM字节型变量中,找出其中的最大数,并将找出的最大数在屏幕上显示出来。要求:=1\*GB3①在屏幕上显示字符串提示信息的功能由宏指令DSTRING实现;=2\*GB3②将键盘输入的十进制数转换成二进制数由子程序DTOB实现;=3\*GB3③在N个无符号字节型二进制数中找出最大数的功能由子程序FMAX实现;=4\*GB3④将一个无符号字节型二进制数转换为十进制数并在屏幕上显示的功能由子程序BTOAD实现。程序运行结果如右图所示。方案设计编程指导显示提示信息的宏指令DSTRING的编写宏指令通常用于在程序中需要反复使用但所需指令条数又不是很多的情形;而对于需要经常使用且需要较多指令才能完成的功能通常通过子程序调用来实现。这是因为,从执行速度上看,由于子程序调用涉及到保护断点的操作,因此,子程序调用比宏调用执行时间相对要稍长一些;但从生成的可执行文件的大小方面考虑,子程序调用生成的文件要小一些。读者在进行汇编语言程序设计时,应综合考虑两者的利弊,以便进行合理选择。下面给出实现提示信息显示的宏指令的定义:DSTRING MACRO STRING PUSH DX PUSHAX MOV DX,OFFSETSTRING MOV AH,09H INT 21H POP AX POP DX ENDM请读者注意,宏指令应该先定义,后调用。因此,宏定义通常紧跟在代码段中段寄存器赋值指令之后给出。将键盘输入的十进制数转换为二进制数的子程序DTOB的编写子程序的定义方法请参阅教材“5.6.4子程序设计”一节。将十进制数转换为二进制数的程序代码请参阅本书“2.4.3实验内容”中“编程指导”部分。在N个无符号字节型二进制数中找出最大数的子程序FMAX的编写请参阅教材“5.6.3循环程序设计”一节例5.12。将一个无符号字节型二进制数转换为十进制数并在屏幕上显示的子程序BTOAD的编写程序代码请参阅本书“2.4.3实验内容”中“编程指导”部分。程序框架COUNTEQU 10DATA SEGMENT NUM DB10DUP(?) IBUF DB7,0,6DUP(?) OBUF DB6DUP(?) INFOR1 DB"Pleaseinput10numbers:",0AH,0DH,'$' INFOR2 DB"Themaxfoundinthe10numbersis$" INFOR3 DB0AH,0DH,'$'DATA ENDSSTACK SEGMENTstack DATA2DW40DUP(?) TOP EQULENGTHDATA2STACKENDSCODE SEGMENTASSUMECS:CODE,DS:DATA,SS:STACKstart: MOV AX,DATA MOV DS,AX MOV AX,STACK MOV SS,AX MOV AX,TOP定义显示字符串信息的宏指令DSTRING MOV SP,AX定义显示字符串信息的宏指令DSTRING DSTRINGINFOR1 MOV BX,OFFSETNUM MOV CX,COUNTLOOP1: CALLDTOB DSTRINGINFOR3 MOV [BX],AL INC BX LOOP LOOP1 MOV AX,OFFSETNUM PUSH AX ;通过堆栈向子程序传递参数(数据个数及数据在数据段内的偏移地址) MOV CX,COUNT PUSH CX CALL FMAX DSTRINGINFOR2 CALL BTOAD MOV AH,4CH定义将键盘输入的十进制数转换为二进制数的子程序DTOB INT 21H定义将键盘输入的十进制数转换为二进制数的子程序DTOB定义将一个无符号字节型二进制数转换为十进制数并在屏幕上显示的子程序BTOAD定义在N个无符号字节型二进制数中找出最大数的子程序FMAX CODE ENDS定义将一个无符号字节型二进制数转换为十进制数并在屏幕上显示的子程序BTOAD定义在N个无符号字节型二进制数中找出最大数的子程序FMAX END start3、实验习题。计算1+2+3+……N。要求N由键盘输入;给出必要的提示信息(由宏调用实现);累加功能由子程序调用实现;二进制数(累加和)转换为十进制数并显示由子程序调用实现。测试数据及运行结果(1)从键盘输入10个无符号十进制数(小于256),将其转换为二进制数并存放在NUM字节型变量中,找出其中的最大数,并将找出的最大数在屏幕上显示出来。课后题计算1+2+3+……N。要求N由键盘输入;给出必要的提示信息(由宏调用实现);累加功能由子程序调用实现;二进制数(累加和)转换为十进制数并显示由子程序调用实现。总结通过此次实验我熟悉了宏指令、宏定义、宏调用以及宏展开的概念,掌握了宏指令的定义与调用的方法,子程序的定义、调用以及调用程序与子程序之间参数的传递方法,并了解了宏指令与子程序的异同以及各自的适用场合。这次实验总体来说较难,一开始没有成功,最终通过研究课本和同学讨论,再此进行调试才得到了正确的程序。要想熟练地掌握会汇编语言,还要更多地练习。附录:宏指令及子程序设计源代码COUNTEQU10DATASEGMENT NUM DB10DUP(?)IBUFDB7,0,6DUP(?) OBUFDB6DUP(?)INFOR1 DB"Pleaseinput10numbers:",0AH,0DH,'$'INFOR2 DB"Themaxfoundinthe10numbersis$"INFOR3 DB0AH,0DH,'$'DATA ENDSSTACK SEGMENTstackDATA2DW40DUP(?)TOP EQULENGTHDATA2STACK ENDSCODE SEGMENT ASSUMECS:CODE,DS:DATA,SS:STACKSTART:MOV AX,DATAMOVDS,AXMOVAX,STACKMOVSS,AXMOVAX,TOPMOVSP,AXDSTRINGMACROSTRING PUSHDX PUSHAX MOVDX,OFFSETSTRING MOVAH,09H INT21H POPAX POPDX ENDM DSTRINGINFOR1 MOVBX,OFFSETNUM MOVCX,COUNTLOOP1: CALLDTOB DSTRINGINFOR3 MOV[BX],AL INCBX LOOPLOOP1 MOVAX,OFFSETNUM PUSHAX MOVCX,COUNT PUSHCX CALLFMAX DSTRINGINFOR2 CALLBTOAD MOVAH,4CH INT21H DTOBPROCNEAR PUSHCX MOVDX,OFFSETIBUF MOVAH,0AH INT21H MOVCL,IBUF+1 MOVCH,0 MOVSI,OFFSETIBUF+2 MOVAX,0AGAIN:MOVDX,10 MULDX ANDBYTEPTR[SI],0FH ADDAL,[SI] ADCAH,00H INCSI LOOPAGAIN POPCX RET DTOBENDP FMAXPROCNEAR MOVAL,NUM MOVSI,OFFSETNUM MOVCX,9LOOP2:INCSI CMPAL,[SI] JAELOOP3 XCHGAL,[SI]LOOP3:DECCX JNZLOOP2 XORAH,AH MOVOBUF,AL RET FMAXENDP BTOADPROCNEAR MOVBX,OFFSETOBUF+5 MOVBYTEPTR[BX],'$' MOVCX,10LOOP4:MOVDX,0 DIVCX ADDDL,30H DECBX MOV[BX],DL ORAX,AX JNZLOOP4 MOVDX,BX MOVAH,09H INT21H RET BTOADENDPCODE ENDS ENDSTART(2)实验课后习题源代码STACK SEGMENTSTACK DB100DUP(?)STACK ENDSDATA SEGMENT INF1 DB"PleaseinputanumberN:$" IBUF DB7,0,6DUP(?) OBUF DB6DUP(?) INF2 DB0AH,0DH,"$"DATA ENDSCODE SEGMENT ASSUMECS:CODE,DS:DATASTART: MOV AX,DATA MOV DS,AXDSTRINGMACROSTRING PUSH DX PUSH AX MOVDX,OFFSETSTRING MOVAH,09H INT21H POPAX POPDX ENDM DSTRINGINF1 CALL DTOB CALL ADDN CALL BTOAD MOV AH,4CH INT 21HDTOB PROCNEAR PUSH CX MOV DX,OFFSETIBUF MOV AH,0AH INT 21H MOV CL,IBUF+1 MOV CH,0 MOV SI,OFFSETIBUF+2 MOV AX,0AGAIN: MOV DX,10 MUL DX AND BYTEPTR[SI],0FH ADD AL,[SI] ADC AH,0 INC SI LOOP AGAIN POP CX RETDTOB ENDPADDN PROCNEAR MOV CX,AX XOR AX,AX MOV BX,01HLOOP5: ADD AX,BX INC BX LOO
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025-2026学年验光流程 教学设计案例
- 室内给排水专项施工方案
- 2025-2026学年莫高窟教学设计感手机壳
- 2025-2026学年幼儿太阳教学设计
- 2025-2026学年写作课教案模版
- 2025-2026学年诡辩论跟护教学设计模板
- 2026关于统计工作的自查报告(3篇)
- (2026年)小学思想道德建设工作计划
- 燃气锅炉供暖系统安装施工方案及技术措施
- 气瓶充装作业试题附答案
- 2025福建中闽海上风电有限公司招聘5人笔试参考题库附带答案详解
- 网架吊装施工方案(3篇)
- 装卸煤炭合同范本
- GB/T 46445.1-2025影像材料和印刷品耐磨性第1部分:通用摩擦试验方法
- 基于惯性传感器与正交里程计的平面定位系统:设计、实现与性能优化
- 施工安全隐患排查治理实施方案完整版
- 心理咨询热线工作人员培训手册
- 2026春夏·淘宝天猫运动户外鞋服趋势白皮书
- 护理质量指标解读2025年非计划拔管
- 辅导员调动工作申请书范文
- 海洋弧菌护理查房
评论
0/150
提交评论