第6章(龚尚福) 子程序结构


MOV
MOV CALL RET
AX,DATA
DS,AX NEAR PTR PROADD
MAIN ENDP
第6章
子程序结构
NEAR AX CX SI SI,ARY CX,COUNT AX,AX AX,[SI] SI,2 NEXT SUM,AX PUSH PUSH PUSH LEA MOV XOR
PROADD PROC
RET SUBR1 ENDP
主子程序 编写在同 一个程序 段中。
MAIN ENDP
第6章
子程序结构
【例6-2】 调用程序和子程序不在同一个代码段内。 CODE SEGMENT SUBT PROC FAR RET SUBT ENDP
SUBT是一个子程序,它在 两处被调用,一处是与 CODE同在段内,另一处是 在 SEGY 段 内 。 因 此 , SUBT必须具有FAR属性以 适应SEGY段调用的需要。 既然SUBT有FAR属性,则 不 论 在 CODE 段 中 还 是 SEGY 段 中 , 对 SUBT 的 调 用就都具有FAR属性,这样 不会发生什么错误;反之, 如 果 这 里 的 SUBT 使 用 了 NEAR 属 性 , 则 在 SEGY 段 内对它的调用就要出错了。
文件中,要求用子程序PROADD累加数组中的所有元素,
并把和(不考虑溢出的可能性)送到指定的存储单元中去。 在这里子程序PROADD直接访问模块的数据区。
程序如下:
第6章
子程序结构
DATA SEGMENT ARY SUM DATA ENDS CODE SEGMENT MAIN PROC FAR ASSUME CS:CODE,DS:DATA START:PUSH DS SUB PUSH AX,AX AX DW DW 100 100 ? DUP(?) COUNT DW
第6章 分析:
子程序结构
1、用一个子程序DECIBIN实现从键盘取得十进制数并把它转换 为二进制数;
2、另一个子程序BINIHEX把此二进制数以十六进制数的形式在
屏幕上显示出来。 3、用CRLF子程序取得回车和换行效果。
整个程序结构如图6.2所示。在这里,各个子程序之间用BX寄存 器来传送信息。在子程序DECIBIN中取得的输入数据转换为二进
21H DL,0AH ;执行换行
MOV
INT RET
AH,2
21H
CRLF
DECIHEX
ENDP
ENDS END MAIN
第6章
子程序结构
6.3.2 直接参数传递 若子程序和调用程序在同一源文件(同一程序模块)中, 则子程序可直接访问模块中的变量(局部变量),进行参 数传递。 【例6-5】 主程序MAIN和子程序PROADD在同一源
6.3 子程序的参数传送
主程序在调用子程序时,经常需要传送一些参数给子 程序,子程序运行完后也经常要回送一些信息给主程序。 这种调用程序和被调用程序之间的信息传送称为主—子程 序参数传送(或称变量传送和过程通信)。
6.3.1 通过寄存器传送参数
通过寄存器传送是最常用的一种参数传送方式,使用 方便,但参数太多时不宜使用此法。 【例6-4】 十进制数到十六进制数转换程序,要求从 键盘取得一个十进制数,然后把该数以十六进制形式在 屏幕上显示出来。
结束
图6.2 十进制数到十六进制数转换的程序结构
第6章
子程序结构
程序如下:
DECIHEX SEGMENT ASSUME CS: DECIHEX
MAIN
REPEAT:
PROC FAR
CALL DECIBIN CALL CRLF ;调用键入子程序 ;调用回车换行子程序
CALL BINIHEX
CALL CRLF JMP
BINIHEX PROC ROTATE:
PRINTIT:
MOV
MOV
INT DEC JNZ
AH,2
21H CH ;是第四个字符? ROTATE ;不,继续
RET
BINIHEX ENDP
;是,返回
第6章
子程序结构
CRLF
PROC NEAR MOV DL,0DH ;执行回车
MOV
INT MOV
AH,2
为使子程序具有可递归和可重入性,应当利用堆栈 和寄存器作为中间结果的暂存器,而不能用固定的存储 单元作暂存器。
第6章
子程序结构
6.2 子程序结构形式与操作
子程序定义伪操作用在子程序的前后,使整个子程序 形成清晰的、具有特定功能的代码块。其格式为 <PROCEDURE NAME> PROC ATTRIBUTE (子程序体) <PROCEDURE NAME> ENDP
由于执行CALL时已使返回地址入栈,所以执行RET时
应该使返回地址出栈,如果子程序中不能正确使用堆 栈而造成执行RET前SP并未指向进入子程序时的返回
地址,则必然会导致运行出错,因此子程序中对堆栈
的使用应该特别小心,以免发生错误。
第6章
子程序结构
6.2.3 现场保护与现场恢复 主程序和子程序通常是分别编制的,所以它们所 使用的寄存器往往会发生冲突。如果主程序在调用子 程序之前的某个寄存器内容在从子程序返回后还有用, 而子程序又恰好使用了同一个寄存器,这就破坏了该
NEXT: ADD ADD LOOP MOV
POP
POP POP RET
SI
CX AX
PROADD ENDP
CODE ENDS END START
第6章
子程序结构
如果数据段中有如下两个数组: DATA SEGMENT ARY COUNT SUM NUM N DW DW DW DW DW 100 DUP(?) 100 ? 100 DUP(?) 100
其中,子程序名为标识符,它又是子程序入口的符号地址。
它的写法与标号的写法相同。属性(Attribute)是指子程序 的类型属性,可以是NEAR或FAR。段内调用使用NEAR 属性,但可以隐含;段间调用使用FAR属性。
第6章
子程序结构
子程序是属性决定对它的调用(CALL)和返回(RET)
属性的。这样,用户只需在定义子程序时考虑它的属
第6章
子程序结构
第6章 子程序结构
6.1 子程序的概念 6.2 子程序结构形式与操作 6.3 子程序的参数传送 6.4 子程序的嵌套与递归 习题6
第6章
子程序结构
6.1 子程序的概念
6.1.1 子程序概念
把可以多次调用、能够完 成特定操作功能的程序段编写成 独立的程序模块,该程序模块称 为子程序,又称为过程。调用这 些子程序的程序称为主程序。在 主程序中,如果调用到子程序, 就需要把控制转移到子程序,这 个过程称为转子。子程序执行完 了,要把控制再返回到主程序, 这个过程称为返主。主程序与子 程序之间的关系如图6.1所示。
============ RET
MAIN ENDP
SUBR1 RET SUBR1
PROC NEAR
;子程序(NEAR可省略)
ENDP
第6章
子程序结构
例6-1的情况也可以写成如下的程序:
MAIN PROC FAR CALL SUBR1
==========
RET SUBR1 PROC NEAR
========
是用来向主程序回送结果的寄存器,就更不应该因保存
和恢复寄存器而破坏了应该向主程序传送的信息。 从 80286 CPU 开 始 可 用 的 PUSHA/POPA 指 令 和 从
80386 CPU开始的高档微机可用的PUSHAD/POPAD指令
为子程序中保存和恢复寄存器内容提供了有力的支持。
第6章
子程序结构
;取下一个字符
EXIT:
DECIBIN
RET
ENDP
第6章
子程序结构
NEAR MOV CH,4 CL,4 BX,CL AL,BL AL,0FH AL,30H AL,3AH PRINTIT AL,7H ;数大于9吗? ;否,显示 ;大于加7成为‘A’~‘F’ DL,AL ;显示字符 MOV ROL MOV AND ADD CMP JL ADD ;转换成16进制数 ;字数送CH ;位数送CL ;BX值循环左移 ;组装ASCII字符
CALL SUBT
CODE ENDS SEGY SEGMENT CALL SUBT SEGY ENDS
第6章
子程序结构
6.2.2 子程序的调用和返回 子程序的正确执行是由子程序的正确调用和正确 返回保证的。80x86的CALL和RET指令完成的就是调 用和返回的功能。为保证其正确性,除PROC的属性要 正确选择外,还应该注意子程序运行期间的堆栈状态。
主程序 1 调用子程序 2 3 调用子程序 1 调用子程序 2 3 返回 子程序
图6.1 主程序与子程序之间的关系
第6章
子程序结构
子程序具有如下4个特性: (1) 重复性。一个子程序只占用一段存储区域,但 可以多次被调用,避免了编程人员的重复劳动,又节 省程序的存储空间。 (2) 通用性。只能完成特定功能的子程序用处不大, 例如,只能实现5个字节加法运算的多字节加法子程序 和只能在定长字符串上查找某一固定字符的子程序都 没有通用性,因而用处也就不大。要能够得到广泛应 用的通用的多字节加法子程序,字节数应该是任意的, 字符查找子程序、字符串的长度和查找的字符都应是 任意的。
PUSH PUSH PUSH PUSH <子程序体> POP POP POP POP RET SUBT ENDP
DX CX BX AX
;现场恢复
第6章
子程序结构
在子程序设计时,应仔细考虑哪些寄存器必须保护, 哪些不必保护。一般说来,子程序中用到的寄存器都必 须保护。但是,如果使用寄存器在主程序和子程序之间 传送参数的话,则这种寄存器就不一定需要保护,特别
合集下载

最新教科版选修1第二章《程序的基本结构》教案

最新教科版选修1第二章《程序的基本结构》教案

最新教科版选修1第二章《程序的基本结构》教案一、教材分析1、“程序的基本结构”是信息技术选修模块《算法与程序设计》第二章程序设计ABC第3节的内容,也是本章的重点内容。

本节授课课时共计2课时,这节课为第1课时,主要介绍顺序结构和选择结构的If语句及If语句的嵌套方法。

本节内容是在学习了自然语言、算法描述、流程图、基本语句和基本函数的基础上学习的。

二、教学目标1、知识目标掌握顺序、选择、循环三种基本结构。

2、能力目标通过例题教学,培养学生能够使用三种基本结构编写简单的程序解决具体问题。

3、情感目标通过本节的学习,体会用结构化方法解决总分数学问题的便捷性,明确三种控制结构的重要作用。

三、教学重点、难点重点: If语句及If语句的嵌套方法,三种结构的实现语句的格式和功能。

难点:使用三种基本结构编写简单的程序,以及同种结构的不同实现语句之间的差异。

四、教学学法,学情分析1、学情这节课的教学对象是高二年级重点班的学生,他们的基础以及对知识的接受能力相对其它班来说是较好的,学习兴趣也相对高些,因此在教学中要注意引导的方法,启发它们的思维能力,解决问题能力。

2、教法教学活动是教与学的双边活动,必须充分发挥教师主导作用和学生主体地位。

根据这一教学原则和学情分析,主要用如下方法进行教学即“点拨、分析、猜想、归纳、概括”等探索式教学方法。

五、教学程序设计㈠创设问题情境,引导学生思考,引入课堂。

1、问题1:前面我们学习了哪些基本语句?①赋值语句②输出语句 print③注释语句④结束语句2、问题2:学习了哪些基本的函数?①与用户交互函数InputBox()、MsgBox()②数学函数③字符串函数④日期函数3、通过第一章的学习我们对VB编程有了初步的体验,知道了计算机解决问题的过程和三种描述算法的方法。

接下来我们应如何利用这些基本的语句及函数来实现算法和进行编程呢?由此引入课题,并板书。

课题:程序的基本结构㈡展示目标:知识目标,能力目标,情感目标。

数字电子技术基础二版张克农6章习题解答.docx

数字电子技术基础二版张克农6章习题解答.docx

6章习题题解6」集成施密特触发器及输入波形如图 题6.1所示,试画出输出妬的波形图。

施密 特触发器的阈值电平S+和U T -如图所示。

[解]集成施密特触发器输出如的波形如图解6」所示。

6.2图题6.2所示为数字系统屮常用的上电复位电路。

试说明其工作原理,并定性画岀 ⑷与心波形图。

若系统为高电平复位,如何改接电路?R\\C 丄I图题6.2[解]工作原理分析如下(1) 当Vcc 刚加上时,由于电容C 上的电压不能突变,尙为低电平,输出“()为低电平;随着电容充电,血按指数规律上升,当 QU T 时,输出仇()变为高电平,完成了低电平复位功 能。

波形如图解6.2所示。

(2) 若系统为高电平复位,仅将图中R, C 互换位置即可。

6.3图题6.3是用TTL 与非门、反相器和 肚积分电路组成的积分型单稳态触发器。

该电 路用图题6.3所示正脉冲触发,R<R试分析电路工作原理,画出w ()i> «i2和坎)的波形图。

JT图解6」1JT图解6.2图题6」[解]工作原理分析如下触发信号未到来时,⑷为低电平,输出问为高电平;正触发脉冲到来时,问I 翻为低电平 此时由于均2仍为高电平,输出如为高电平不变,电容通过尺放电,当⑷2下降到S 时 仙 仍为高电平),输出“()翻为高电平,暂稳态过程结束。

”()i 、”】2和〃()的波形见图解6.3。

图题6.51 M O1R U 12 Ln __ 1 --- ]・&)—w o"IG|C H 5Ot6.4集成单稳态触发器74121组成的延时电路如图丿 (1) 计算输出脉宽的调节范圉; (2) 电位器旁所串电阻有何作用?图题6.4[解]⑴ 输出脉宽:d=0fi7(R + RQ ,分别代入Rw=O 和22kQ 计算,可得心 的调节范围为:3.6mS</w <19mS o(2)电阻/?起保护作用。

若无R,当电位器 调到零时,若输出由低变高,则电容C 瞬间 相当于短路,将直接加于内部门电路输 出而导致电路损坏。

5项目五 子程序的应用

5项目五  子程序的应用
化学工业出版社
任务一
子程序的格式和应用
2. 从子程序返回 RET/M17/M02
(1)指令格式
RET M17 M02 (2)指令功能
(子程序中)当前程序段的其它指令执行完成后,返 回主程序中由P指定的程序段继续执行。
化学工业出版社
任务一
化学工业出版社
任务一
子程序的格式和应用
③在加工较复杂的零件时,往往包含许多独立的 工序,有时工序之间需要作适当的调整,为了优化加 工程序,把每一个独立的工序编成一个子程序,这样 形成了模块式的程序结构,便于对加工顺序的调整, 主程序中只有换刀和调用子程序等指令。
化学工业出版社
化学工业出版社
任务一
子程序的格式和应用
2. 子程序结束指令
(1)指令格式 M99 (2)指令功能 子程序运行结束,返回主程序 (3)指令说明 ①执行到子程序结束M99指令后,返回至主程序 ,继续执行M98 P××××程序段下面的主程序; ②若子程序结束指令用M99 P___格式时,表 示执行完子程序后,返回到主程序中由P___指定的 程序段; ③若在主程序中插入M99程序段,则执行完该 指令后返回到主程序的起点。
化学工业出版社
任务一
2.子程序的嵌套
子程序的格式和应用
为了进一步简化程序,可以让子程序调用另一个子程序 ,这种程序的结构称为子程序嵌套。在编程中使用较多的 是二重嵌套,其程序的执行情况如图5-1所示。
图5-1 程序的嵌套
化学工业出版社
任务一 3.子程序的应用
任务二
一、加工图纸
子程序综合加工实例
本任务以图5-4为子程序综合应用为例,巩固前面 所学习的任务,工件毛坯为经过预先铣削加工过的规则 合金铝块,尺寸为80mm×80mm×30mm。

学生课程成绩统计程序设计

学生课程成绩统计程序设计

《微机原理与接口技术》课程设计(学年论文)说明书课题名称:学生课程成绩统计程序设计(A1 难度系数1)学生学号:专业班级:学生姓名:学生成绩:指导教师:课题工作时间:2013-6-13 至2013-6-18填写说明:1. 一、二、三项由指导教师在课程设计(学年论文)开始前填写并交由学生保管;2. 第五项由学生在完成课程设计后填写,并将此表与课程设计一同装订成册交给指导教师;3. 成绩评定由指导教师按评定标准评分。

4. 此表格填写好后与正文一同装订成册。

课程设计评审标准(指导教师用)学生课程成绩统计程序设计说明书1、方案论证(1)汇编程序设计步骤、要点(2)DOS系统调用2、程序设计(1)总体设计设计分析与思路说明总体框图(框图中每一个模块的功能说明)(2)程序设计流程图程序代码及注释3、程序调试步骤与结果(1)编辑源程序(2)汇编源程序(3)连接程序(4)在TD中调试程序(5)程序运行结果截屏图片结果说明4、结论用结果说明设计成功之处,对某些问题进行分析、展望。

1.方案论证(1)汇编程序设计步骤、要点1 引言汇编语言能充分利用计算机所有的硬件特性并对硬件进行直接控制,汇编语言编制的程序比使用其它语言编制的程序执行速度快、资源占用少,所以,汇编语言在工业自动化控制和智能化产品的生产上有着十分广泛的用途。

但是,汇编语言是一种低级符号语言,与机器指令有着一一对应的关系,与高级语言相比不太符合人的思维习惯,它向寄存器、内存单元,必须通过一种具体的计算机来学习,同时要求初学者应具有一定的硬件基础,真正掌握起来有一定的难度。

2 汇编语言程序设计技巧808618088汇编语言程序设计中一般说来遵循以下几个步骤:首先分析题意,确定解题算法。

然后根据算法由粗到精画程序流程图,最后编写程序。

3 寻址方式的准确使用程序设计的目的是将输入数据加工处理转换成输出数据,获取正确的数据是保证程序处理正确的前提,而获取正确的数据又与正确地使用寻址方式关系密切,所以有必要先从寻址方式谈起。

中职学校《机械基础》重庆高考重点总复习课件(下)(第六章至第九章)(教材:高教版统编)(云天课件)

中职学校《机械基础》重庆高考重点总复习课件(下)(第六章至第九章)(教材:高教版统编)(云天课件)
3.死点位置 当以机构的摇杆为主动件、曲柄为从动件,在机构 处于压力角 90 的位置时,曲柄不能动作的位置。 死点位置有两个,位于连杆与曲柄共线时的位置。 死点的害处:影响机构平稳性,特别是启动性能。 死点的解决办法:惯性、多组错列。
P.126
死点的用处:用于锁定机构。
第二节 平面四杆机构 任务实施
P.117
常用机构:平面连杆机构、凸轮机构、棘轮机构等机构。 内容:
运动副
低副:转动副、移动副、螺旋副 高副:齿轮、凸轮… …
铰链四杆机构的形式 铰链四杆机构类型的判定 含有一个移动副的四杆机构 平面四杆机构的基本特性
平面四杆机构 常 用 机 构
凸轮机构
凸轮机构的类型 凸轮机构的材料及结构 凸轮机构的运动分析 平面凸轮轮廓曲线的绘制 凸轮机构的传力特性
无论何杆作机架,都是 双摇杆机构 “短+长 〉另两杆长之和”, (0个曲柄)
以最短杆之相邻杆作机架,得曲柄摇杆机构(1个曲柄)
得双曲柄机构 (2个曲柄) “短+长 ≤ 另两杆长之和” 以最短杆作机架, 以最短杆之相对杆作机架, 得双摇杆机构 (0个曲柄)
曲柄摇杆机构
双曲柄机构
双摇杆机构
第二节 平面四杆机构 三、含有一个移动副的四杆机构
中职学校《机械基础》重庆高考重点总复习课件
P.117
课件制作: 重庆市涪陵区职教中心 数控组 胡志恒
中职学校《机械基础》重庆高考重点总复习课件
P.117
课件制作: 重庆市涪陵区职教中心 数控组 胡志恒
第六章
常用机构
P.117
任务描述
平面连杆机构:基本形式及其演化。 机构的组成、运动规律
第六章
常用机构
*四、平面四杆机构的基本特性 1.急回运动特性 在曲柄摇杆机构中, 当以曲柄(主动)为匀速旋转时, 摇杆 的往返速度不等.

计算机组成与结构 for 期末 郝尚富

计算机组成与结构 for 期末   郝尚富

(期中考试已考)1.己知某计算机有80条指令,平均每条指令由12条微指令组成,其中有一条取指微指令是所有指令公用的,设微指令长度为32位。

请算出控制存储器容量。

解:微指令所占的单元总数:(80×12-80+1) ×32=(80×11+1 ) ×32 =881 ×32所以控制存储器容量可选IK × 32。

2.某机采用微程序控制方式,微指令字长24位,水平型编码控制的微指令格式,断定方式,共有微命令30个,构成4个相斥类,各包含5个、8个、14个和3个微命令,外部条件共3个。

(1)控制存储器的容量应为多少?(2)设计出微指令的具体格式。

解:(1)30个微命令构成4个相斥类,其中5个相斥微命令需3位编码;8个相斥微命令需4位编码,14个相斥微命令需4位编码,3个相斥微命令需2位编码:外部条件3个,采用断定方式需2位控制位。

以上共需15位。

微指令字长24位,采用水平型编码控制的微指令格式,所以还剩9位作为下址字段,这样控制存储器的容量应为512×24.(2)微指令的具体格式如图所示。

3,流水线工作原理:机器的各部分在某些周期内在进行操作,而在某些周期内是空闲的。

如果控制器调度恰当,让各个部件紧张工作,可提高计算机运行速度---流水线结构。

(期中考试已考)4. 已知某运算器的基本结构如图所示,它具有+(加)、-(减)、M(传送)种操作。

(1)写出图中1~12表示的运算器操作的微命令。

(2)指出相斥性微操作。

(3)设计适合此运算器的微指令格式。

解:(1)图中1~12表示的运算器操作的微命令分别为:1:+ 2:- 3:M4:R1→A 5:R2→A 6:R3→A7:R3→B 8:R2→B 9:R1→B10:BUS→R1 11:BUS→R2 12:BUS→R3(2)以下几组微命令是相斥的:1:+ 2:- 3:M4:R1→A 5:R2→A 6:R3→A7:R3→B 8:R2→B 9:R1→B10:BUS→R1 11:BUS→R2 12:BUS→R3(3)此运算器的微指令格式如图所示。

单片机原理及应用 课件 教学配套课件 陈桂友 孙同景 第6章 C语言程序设计及仿真调试

乘法运算符“*”:双目运算,具有左结合性。 除法运算符“/”:双目运算具有左结合性。参与运算 量均为整型时,结果也为整型,舍去小数。如果运算量中有 一个是实型,则结果为双精度实型。 求余运算符(模运算符)“%”:双目运算,具有左结 合性。要求参与运算的量均为整型。 求余运算的结果等于 两数相除后的余数。
a+b,(a*2)/c,(x+r)*8-(a+b)/7,++i, sin(x)+sin(y),(++i)-(j++)+(k--)。
5:01:31
6/8
版权所有。
单片机原理及应用
9/89
尚辅教学配套课件
6. 赋值运算符和赋值表达式
简单赋值运算符和表达式,简单赋值运算符记为“=”。由“= ” 连接的式子称为赋值表达式。其一般形式为:变量=表达式。例 如:
x=a+b
w=sin(a)+sin(b)
如果赋值运算符两边的数据类型不相同,系统将自动进行类型 转换,即把赋值号右边的类型换成左边的类型。具体规定如下:
实型赋予整型,舍去小数部分。整型赋予实型,数值不变,但 将以浮点形式存放,即增加小数部分(小数部分的值为0)。
字符型赋予整型,由于字符型为一个字节,而整型为二个字 节,故将字符的ASCII码值放到整型量的低八位中,高八位为0。
单片机原理及应用
1/89
尚辅教学配套课件
第6章 C语言程序设计及仿真调试
6.1 C语言程序设计基础 6.2 Keil C 和 ANSI C 6.3 C语言程序设计及调试实例
5:01:31
6/8
版权所有。
单片机原理及应用
2/89
尚辅教学配套课件

基于51单片机的音乐盒的设计与实现

基于51单⽚机的⾳乐盒的设计与实现沈阳航空航天⼤学课程设计报告课程设计名称:单⽚机系统综合课程设计课程设计题⽬:基于51单⽚机的⾳乐盒的设计与实现沈阳航空航天⼤学课程设计报告⽬录第1章总体设计⽅案 (1)1.1设计原理 (1)1.2设计思路 (1)1.3实验环境 (2)第2章详细设计⽅案 (3)2.1硬件电路设计 (3)2.2主程序设计 (6)2.3功能模块的设计与实现 (7)第3章结果测试及分析 (10)3.1结果测试 (10)3.2结果分析 (10)参考⽂献 (11)附录1:元件清单 (12)附录2:总电路图 (13)附录3:程序代码 (14)第1章总体设计⽅案1.1设计原理电⼦⾳乐已⼴泛地应⽤于社会⽣活的各个领域。

其类型从⾳乐卡⽚到CD、MP3 等多种多样,制作原理也各不相同。

声⾳是通过振动产⽣的。

单⽚机对某⼀I/O引脚以⼀定的频率循环置1和清0,这⼀引脚便产⽣⼀定频率的⽅波,该⽅波通过放⼤后作⽤于扬声器便产⽣⼀定频率的声⾳。

若改变输出⽅波的频率,产⽣的声⾳也就改变了。

通过控制输出⽅波的时间长短,声⾳的长短也就得到控制。

因此,根据乐谱,单⽚机就可产⽣电⼦⾳乐。

⾳乐中最关键的两个要素是⾳符和节拍。

单⽚机控制的⾳乐发⽣器系统由硬件电路和软件两部分构成。

利⽤单⽚机控制的电⼦⾳乐发⽣器软硬件上具有独特的优点,系统的开发周期短,成本低,电路制作容易。

更换歌曲时,硬件电路⽆需作任何修改,只需修改软件即可实现。

软件编程时,可⽤51系列单⽚机的汇编语⾔。

同时还可根据个⼈的习好通过软件改变节拍的延时时间,增加电⼦⾳乐的趣味性。

1.2 设计思路采⽤汇编语⾔程序设计的⽅法结合硬件电路设计⽅法,利⽤Lab6000实验箱上已有芯⽚来实现⾳乐盒的各项功能。

1)提出⽅案利⽤定时器计时这个半周期时间,每当计时到后就将输出脉冲的I/O反相,然后重复计时此半周期时间再对I/O⼝反相就可在I/O 脚上得到此频率的脉冲。

当键盘有键按下时,判断键值,启动计数器T0,产⽣⼀定频率的脉冲,驱动蜂鸣器,放出乐曲。

六章子程序结构-PPT精选


5
一、子程序指令—返回指令RET的参数
RET i16
;有参数返回
RET指令可以带有一个立即数i16,则堆栈指针SP将增 加,即
SP←SP+i16
这个特点使得程序可以方便地废除若干执行CALL指令 以前入栈的参数
6
二、子程序的调用与返回
主程序
子程序
CALL label
RET
回到CALL指令后的指令处 ——返回地址
RET
;无参数段内返回
RET i16
;有参数段内返回
RET
;无参数段间返回
பைடு நூலகம்
RET i16
;有参数段间返回
需要弹出CALL指令压入堆栈的返回地址
段内返回——偏移地址IP出栈
IP←SS:[SP], SP←SP+2
段间返回——偏移地址IP和段地址CS出栈
IP←SS:[SP],SP←SP+2
CS←SS:[SP],SP←SP+2
CALL far ptr mem
;段间调用、间接寻址
CALL指令需要保存返回地址:
段内调用——偏移地址IP入栈
SP←SP-2,SS:[SP]←IP
段间调用——偏移地址IP和段地址CS入栈
SP←SP-2,SS:[SP]← CS
SP←SP-2,SS:[SP]← IP
4
一、子程序指令—返回指令
根据段内和段间、有无参数,分成4种类型
① 数据本身(传值) ② 数据的地址(传址)
传递的方法:
① 寄存器 ② 变量 ③ 堆栈
13
例:将两个给定的二进制数转换成为二进制数的ASCII 码形式并加以显示
对两个数进行转换、显示的工作是相同的,没有必要重 复编写,以子程序的形式来完成

微机原理与接口技术(第三版) 龚尚福章 (4)

类型属性:变量的类型属性定义该变量所保留的字节数, 如BYTE(DB,1个字节长)、WORD(DW,2个字节长)、DWORD(DD, 4个字节长)、FWORD(DF,6个字节长)、QWORD(DQ,8个字节长)、 TBYTE(DT,10个字节长)。
在同一个程序中,同样的标号或变量的定义只允许出现一 次,否则汇编程序会指示出错。
第4章 汇编语言程序设计
4.2.1 定义符号的伪指令 有时程序中多次出现同一个表达式,为方便起见,可以用
赋值伪操作给表达式赋予一个名字。 1. 等值伪指令EQU 格式: <符号名> EQU <表达式> 功能:给符号名定义一个值,赋予一个符号名、表达式或
助记符。
第4章 汇编语言程序设计
此后,程序中凡需要用到该表达式之处,就可以用表达式 名来代替了。可见,EQU的引入提高了程序的可读性,也使其 更加易于修改。上式中的表达式可以是任何有效的操作数格式, 可以是任何可以求出常数值的表达式,也可以是任何有效的助 记符。举例如下:
第4章 汇编语言程序设计
(3) 符号常数。用符号名来代替的常数就是符号常数,如 COUNT EQU 3或COUNT=3定义后COUNT就是一个符号常数,与数 值常数3等价。
第4章 汇编语言程序设计
2) 表达式
由运算对象和运算符组成的合法式子就是表达式。表达式
分为数值表达式、关系表达式、逻辑表达式和地址表达式等。
类型(TYPE)属性:类型表示该标号所代表的指令的转移范 围,分为NEAR和FAR两种。如果为NEAR型,则标号只能在段内 引用;如果为FAR型,则标号可以在段间引用。
第4章 汇编语言程序设计
(2) 变量。变量在数据段、附加数据段或堆栈段中定义, 后面不跟冒号。它也可以用LABEL或EQU伪操作来定义。变量经 常在操作数字段出现。它也有段、偏移及类型三种属性。
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
相关文档
最新文档