微机原理实验

来源:网络收集 时间:2025-11-09 下载这篇文档 手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:xuecool-com或QQ:370150219 处理(尽可能给您提供完整文档),感谢您的支持与谅解。点击这里给我发消息

Experiment 4. Macros and subprogram

2.5 宏指令及子程序设计实验

2.5.1 实验目的

1、熟悉宏指令、宏定义、宏调用以及宏展开的概念;掌握宏指令的定义与调用的方法。 2、掌握子程序的定义、调用以及调用程序与子程序之间参数的传递方法。 3、了解宏指令与子程序的异同以及各自的适用场合。

2.5.2 实验预习要求

1、复习宏指令的定义与调用方法。 2、复习过子程序的定义与调用方法。

3、根据“2.5.3 实验内容”中给出的流程图和程序框架编写源程序,以便上机调试。 4、从“2.5.4 实验习题”中任选一道题目,编写源程序,以便上机调试。

2.5.3 实验内容

从键盘输入10个无符号十进制数(小于256),将其转换为二进制数并存放在NUM字节型变量中,找出其中的最大数,并将找出的最大数在屏幕上显示出来。

要求:

① 在屏幕上显示字符串提示信息的功能由宏指令DSTRING实现;

② 将键盘输入的十进制数转换成二进制数由子程序DTOB实现;

③ 在N个无符号字节型二进制数中找出最大数的功能由子程序FMAX实现;

④ 将一个无符号字节型二进制数转换为十进制数并在屏幕上显示的功能由子程序BTOAD实现。

程序运行结果如右图所示。 1、编程指导

(1)显示提示信息的宏指令DSTRING的编写

宏指令通常用于在程序中需要反复使用但所需指令条数又不是很多的情形;而对于需要经常使用且需要较多指令才能完成的功能通常通过子程序调用来实现。这是因为,从执行速度上看,由于子程序调用涉及到保护断点的操作,因此,子程序调用比宏调用执行时间相对要稍长一些;但从生成的可执行文件的大小方面考虑,子程序调用生成的文件要小一些。读者在进行汇编语言程序设计时,应综合考虑两者的利弊,以便进行合理选择。

下面给出实现提示信息显示的宏指令的定义:

DSTRING

MACRO STRING PUSH DX PUSH AX

MOV DX,OFFSET STRING MOV AH,09H INT 21H POP AX POP DX

ENDM

请读者注意,宏指令应该先定义,后调用。因此,宏定义通常紧跟在代码段中段寄存器赋值指令之后给出。

(2)将键盘输入的十进制数转换为二进制数的子程序DTOB的编写

子程序的定义方法请参阅教材“5.6.4 子程序设计”一节。将十进制数转换为二进制数的程序代码请参阅本书“2.4.3 实验内容”中“编程指导”部分。

(3)在N个无符号字节型二进制数中找出最大数的子程序FMAX的编写

请参阅教材“5.6.3 循环程序设计”一节例5.12。

(4)将一个无符号字节型二进制数转换为十进制数并在屏幕上显示的子程序BTOAD的编写

程序代码请参阅本书“2.4.3 实验内容”中“编程指导”部分。 2、程序框架

COUNT EQU 10

DATA

SEGMENT

NUM DB 10 DUP(?) IBUF DB 7,0,6 DUP(?) OBUF DB 6 DUP(?)

INFOR1 DB \INFOR2 DB \ found in the 10 numbers is $\INFOR3 DB 0AH,0DH,'$'

DATA ENDS

STACK SEGMENT stack

DATA2 DW 40 DUP(?)

TOP EQU LENGTH DATA2

STACK ENDS

CODE SEGMENT

ASSUME CS:CODE,DS:DATA,SS:STACK

start: MOV AX,DATA

MOV DS,AX MOV AX,STACK MOV SS,AX MOV AX,TOP MOV SP,AX

定义显示字符串信息的宏指令DSTRING DSTRING INFOR1

MOV BX,OFFSET NUM

MOV CX,COUNT LOOP1: CALL DTOB

DSTRING INFOR3 MOV [BX],AL

INC BX LOOP LOOP1

MOV AX,OFFSET NUM

PUSH AX ;通过堆栈向子程序传递参数(数据个数及数据在数据段内的偏移地址) MOV CX,COUNT

PUSH CX CALL FMAX DSTRING INFOR2 CALL BTOAD MOV AH,4CH INT 21H 定义将键盘输入的十进制数转换为二进制数的子程序DTOB 定义在N个无符号字节型二进制数中找出最大数的子程序FMAX 定义将一个无符号字节型二进制数转换为十进制数并在屏幕上显示的子程序BTOAD

CODE

ENDS END

start

2.5.4 实验习题

1、从键盘输入N个十进制数,求它们的和(累加和要求不大于65535),并将累加结果在屏幕上显示出来。要求给出必要的提示信息(用宏调用完成);累加功能由子程序调用实现;二进制数形式的累加和转换为十进制数并显示由子程序调用实现。

2、计算1+2+3+……N。要求N由键盘输入;给出必要的提示信息(由宏调用实现);累加功能由子程序调用实现;二进制数(累加和)转换为十进制数并显示由子程序调用实现。

3、编写在屏幕上顺序显示A B C ……Z的程序。要求两字符之间有一定的时间延迟,通过调用宏指令实现;延迟时间常数由键盘输入;将键盘输入的十进制数形式的延迟时间常数转换为二进制数由子程序实现。

2.5.5 实验报告要求

1、补全“2.5.3 实验内容”中源程序框架内未写出的程序代码,并说明你在调试该程序过程中遇到了哪些问题,是如何处理的?若允许输入大于255小于65536的十进制数,程序应如何修改? 2、从“2.5.4 实验习题”中任选一道题目,画出流程图,编写源程序,并说明在调试过程中遇到了哪些问题,是如何处理的。 3、写出实验小结,内容包括实验心得(收获)、不足之处或今后应注意的问题等。

百度搜索“70edu”或“70教育网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,70教育网,提供经典教育范文微机原理实验在线全文阅读。

微机原理实验.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印 下载失败或者文档不完整,请联系客服人员解决!
本文链接:https://www.70edu.com/fanwen/1133580.html(转载请注明文章来源)

相关推荐:

Copyright © 2020-2025 70教育网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:370150219 邮箱:370150219@qq.com
苏ICP备16052595号-17
Top
× 游客快捷下载通道(下载后可以自由复制和排版)
单篇付费下载
限时特价:7 元/份 原价:20元
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:xuecool-com QQ:370150219