接口技术第4章(4.6)模块化程序设计技术PPT课件
合集下载
微机原理与接口技术-第4-1章
例4-3 用键盘最多输入10个字符,并存 入内存变量Buff中,若按“Enter”键,则 表示输入结束。
用BIOS层功能调用实现 层功能调用实现 的源程序: 的源程序: .MODEL SMALL CR EQU 0DH .STACK 200H .DATA Buff DB 10 DUP(?) .CODE .STARTUP MOV CX, 0AH LEA BX, Buff
Windows层功能模块的调用
Win32 API使用堆栈来传递参数 API函数调用 C语言的消息框函数的声明: int MessageBox( HWND hWnd, // handle to owner window LPCTSTR lpText, // text in message box LPCTSTR lpCaption, // message box title UINT uType // message box style );//参数 最后还有一句说明: Library: Use User32.lib.//说明这个函数的位置
API 函数的返回值
有的API 函数有返回值,如MessageBox 定义 函数有返回值, 有的 的返回值是int类型的数,返回值的类型对汇编 的返回值是 类型的数, 类型的数 程序来说也只有dword 一种类型,它永远放在 一种类型, 程序来说也只有 eax 中。如果要返回的内容不是一个 如果要返回的内容不是一个eax所能 所能 容纳的, 容纳的,Win32 API 采用的方法一般是返回一 个指针, 个指针,或者在调用参数中提供一个缓冲区地 干脆把数据直接返回到缓冲区中去。 址,干脆把数据直接返回到缓冲区中去。
.REPEAT MOV AH, 0H INT 16H .BREAK .IF AL==CR MOV [BX],AL INC BX .UNTILCXZ .EXIT 0 END
《模块化程序设计》课件
03
避免模块间直接引用其他模块的内部实现 细节。
04
尽量减少模块间的直接依赖,可以通过引 入中介者模式或观察者模式来解耦。
模块的扩展性与可维护性
01
模块的扩展性与可维护性
02
模块的扩展性与可维护性是衡量模块化程序设计质 量的重要指标。
03
解决方案:采用灵活的模块划分和设计原则,使模 块能够适应未来的变化和需求。
特点
模块化程序设计具有清晰的结构、可 重用性、可维护性和可扩展性。每个 模块执行特定的功能,具有明确定义 的输入和输出,使得程序易于理解、 开发和维护。
模块化程序设计的重要性
提高代码质量
通过将程序分解为小模块,可以 降低复杂性,提高代码的可读性 和可维护性,减少错误和缺陷。
提高开发效率
模块化设计允许程序员重用现有 的模块,减少开发时间和成本, 加快软件开发速度。
ABCD
模块功能单一
每个模块应只负责一项功能或业务逻辑,避免模 块过于复杂。
模块可维护性
模块的设计应便于修改和维护,以便在需要时对 模块进行升级或修复错误。
02
CATALOGUE
模块化程序设计的基本概念
模块的划分与设计
模块的划分
将一个复杂的系统划分为若干个相对独立的、具有明确功能的模块。每个模块完成特定的子功能,共 同实现系统整体功能。
《模块化程序设计》ppt 课件
CATALOGUE
目 录
• 模块化程序设计概述 • 模块化程序设计的基本概念 • 模块化程序设计的方法与实践 • 模块化程序设计中的常见问题与解
决方案 • 模块化程序设计的未来发展与展望
01
CATALOGUE
模块化程序设计概述
《模块化程序设计 》课件
模块的可重用性
模块应具有通用性,可以在不同的程序和项目中重复 使用,提高软件开发的效率。
模块化程序设计的好处
提高软件质量
通过将程序分解为独立的模块 ,可以单独测试每个模块,提
高软件的质量和可靠性。
提高开发效率
模块化程序设计使得开发人员 可以并行开发不同的模块,加 快开发进度。
提高软件可维护性
独立的模块使得代码易于理解 和修改,降低了维护的难度和 成本。
提高软件可重用性
通用的、可重用的模块可以应 用于不同的项目和应用程序中
,提高了软件的可重用性。
PART 02
模块的划分与设计
如何划分模块
01
根据功能划分
将程序划分为独立的、具有明确 功能的模块,每个模块完成特定 的功能。
02
根据逻辑划分
03
根据数据划分
根据程序逻辑结构划分模块,使 模块间的逻辑关系清晰,便于理 解和维护。
2023-2026
END
THANKS
感谢观看
KEEP VIEW
REPORTING
如何优化模块的性能
性能瓶颈
模块内部可能存在性能瓶颈,如算法效率低下。
解决方案
使用性能分析工具找出性能瓶颈,优化算法或调整数据结构,提高模块执行效率。
PART 05
案例分析
一个简单的模块化程序设计案例
总结词:简单示例
详细描述:介绍一个简单的模块化程序设计案例,例如计算两个数的和或差。通过这个案例,展示如何将程序拆分成不同的 模块,每个模块执行特定的功能,并演示模块之间的通信和协作。
高耦合问题
模块间的依赖关系过强,一个模块的 变动可能影响其他模块。
解决方案
采用接口或抽象类来定义模块间的契 约,而非直接依赖具体实现,实现松 耦合设计。
模块应具有通用性,可以在不同的程序和项目中重复 使用,提高软件开发的效率。
模块化程序设计的好处
提高软件质量
通过将程序分解为独立的模块 ,可以单独测试每个模块,提
高软件的质量和可靠性。
提高开发效率
模块化程序设计使得开发人员 可以并行开发不同的模块,加 快开发进度。
提高软件可维护性
独立的模块使得代码易于理解 和修改,降低了维护的难度和 成本。
提高软件可重用性
通用的、可重用的模块可以应 用于不同的项目和应用程序中
,提高了软件的可重用性。
PART 02
模块的划分与设计
如何划分模块
01
根据功能划分
将程序划分为独立的、具有明确 功能的模块,每个模块完成特定 的功能。
02
根据逻辑划分
03
根据数据划分
根据程序逻辑结构划分模块,使 模块间的逻辑关系清晰,便于理 解和维护。
2023-2026
END
THANKS
感谢观看
KEEP VIEW
REPORTING
如何优化模块的性能
性能瓶颈
模块内部可能存在性能瓶颈,如算法效率低下。
解决方案
使用性能分析工具找出性能瓶颈,优化算法或调整数据结构,提高模块执行效率。
PART 05
案例分析
一个简单的模块化程序设计案例
总结词:简单示例
详细描述:介绍一个简单的模块化程序设计案例,例如计算两个数的和或差。通过这个案例,展示如何将程序拆分成不同的 模块,每个模块执行特定的功能,并演示模块之间的通信和协作。
高耦合问题
模块间的依赖关系过强,一个模块的 变动可能影响其他模块。
解决方案
采用接口或抽象类来定义模块间的契 约,而非直接依赖具体实现,实现松 耦合设计。
微机原理与接口技术实用教程4-PPT精品文档
2019/3/8
>>微机原理<<
7
3. 宏指令语句的结构 [宏名] 宏操作助记符 [操作数][;注释] 说明: (1)宏名即宏指令名,是一标识符,宏名后面不能有“:” (2)宏操作助记符共有8个,分别是MACRO、ENDM、 EXITM、LOCAL、REPT、IRPC、IRP、PURGE。 (3) 其余同指示性语句。
第四章
汇编语言程序设计
本章要点
汇编语言的基本语法规则
汇编语言常用的伪指令和DOS功能调用
顺序、分支、循环和子程序设计基本方法
ቤተ መጻሕፍቲ ባይዱ
2019/3/8
>>微机原理<<
2
汇编语言的基本概念 一、汇编语言与机器语言 1、机器语言:是计算机能够识别﹑直接执行的语言,这种形式也叫 目标代码(机器码),全由0﹑1组成。(高级语言编的源程序在执行 时也必须全翻译成机器语言) 2、汇编语言:用机器语言指令的助记符来编写程序的语言称汇编语言 (阅读理解方便,为程序员提供了完全控制目标代码的手段)。 3、源程序:用各种语言编写的程序本身。 4、汇编程序与编译程序: 汇编语言源程序---》汇编---》目标代码 高级语言源程序---》编译---》目标代码 5、汇编语言包含:指令 让微处理器执行操作的指令 伪指令 告诉汇编程序如何汇编的指令
2019/3/8
>>微机原理<<
5
4.1.2
语句类型与结构
1.指令性语句的结构 [标号:][前缀] 指令助记符 [操作数][;注释]
(1)方括号表示的成分可以选用或缺省。 (2)标号是后面紧跟“:”的一个标识符,标号代表该行指令在存 储器中的首地址,标号可作为转移指令和调用指令的一个操作数。 (3)前缀如重复前缀、总线封锁前缀等。 (4)操作数可以是一个、两个或没有,由指令类型决定,若有两 个操作数,前面为目的操作数,后面为源操作数,中间用逗号隔开。 (5)注释是以“;”开始的字符串,不影响程序的汇编与执行,仅 用于增加源程序的可读性。
微机原理与接口技术PPT_第4章 汇编语言程序设计
分段结构 程序按段编写, 内存分段编址相对应。 程序按段编写 与8086内存分段编址相对应。 内存分段编址相对应 每段由伪操作SEGMENT开始、由ENDS结束。 开始、 结束。 每段由伪操作 开始 结束 程序可由多个段构成,至少有一个代码段。 程序可由多个段构成,至少有一个代码段。 程序最后为END结束语句,后跟一启动地址。 程序最后为 结束语句,后跟一启动地址。 结束语句 启动地址指示程序开始执行的第一条语句。 启动地址指示程序开始执行的第一条语句。 程序中设有返回DOS的功能。 的功能。 程序中设有返回 的功能 使程序执行完后返回DOS系统的命令接受状态。 系统的命令接受状态。 使程序执行完后返回 系统的命令接受状态 程序中用到内存操作数时, 程序中用到内存操作数时, 应按操作数的寻址方式,给相应的段寄存器赋值 应按操作数的寻址方式 给相应的段寄存器赋值
根据语句功能的不同, 名字项可用来表示段名、 根据语句功能的不同, 名字项可用来表示段名、变量名 标号、过程名等。 、 标号、过程名等。 • 名字项用一个符号表示。 名字项用一个符号表示。 对符号的规定: 对符号的规定 ① 由字符 由字符A~Z ,a~z ,0~9及符号 、$、下划线 等组成 及符号@、 、下划线_ 及符号 最长31个字符 超出部分忽略。 个字符, ,最长 个字符,超出部分忽略。 不能用数字打头,以免与十六进制数相混。 ② 不能用数字打头,以免与十六进制数相混。 不使用汇编程序中的保留字。 如指令的助记符等 如指令的助记符等) ③ 不使用汇编程序中的保留字。 (如指令的助记符等 对定义的符号不区分大小写。但为便于记忆, ④ 对定义的符号不区分大小写。但为便于记忆,名字的定 义应该做到见名知意。 义应该做到见名知意。
例 4-1 给出一个完整的汇编语言源程序 完成两个字节数据相加。 完成两个字节数据相加。
《接口技术》PPT课件
TAB:DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H ;字段码表: "0"~"6"
DB 0F8H,80H,90H
;字段码表续:"7"~"9"
精选ppt
18
从SW0~SW3输入BCD码查表求七段码且驱动显示的程序方法
实验板上的SW0~SW7电平开关可用于输入8位二进制数据,要求实现读入 SW0~SW7电平开关所拨动设定的十进制0~9的非压缩BCD码,转换为对应的七段 码,驱动最左边的LED数码显示器显示该数字。 程序步骤如下: 设已编写查表求七段码子程序:C4-7
9
程序实现将41H、40H内容显示在数码管上。
ORG 0000H LJMP MAIN ORG 0030H MAIN:MOV 40H,#06H MOV 41H,#08H MOV DPTR,#DTAB MOV A,40H MOVC A,@A+DPTR MOV P3,A MOV A,41H MOVC A,@A+DPTR MOV P2,A SJMP $
21 R0
22 R1
23 R2
24 R3 25 R4 26 R5 27 R6 28 R7
510 510 510 510 510
510 510
1 2 3 4 5 6 7 8
P1.0 P1.1 P1.2 P1.3 P1.4 P1.5 P1.6 P1.7
P3.0/RXD P3.1/TXD P3.2/INT0 P3.3/INT1
74LS240八反相三态缓冲
PA0
器
a b
动态显示方式
P2.0/A8
U3 82C55A
FEFCH 输出
FEFDH 输出
《单片机原理与接口技术》第4章 汇编语言程序设计PPT课件
MOV 50H,R2
SJMP $
END
2.循环次数未知的循环程序
【例4.10】 从 60H单元开始的连续单元中有一个无符号数0FH,编
程求该数据的地址并存入5FH单元。
分析:
先取出60H单元的数据与立即数0FH比较。
如果不相等,再取下一个单元数据进行比较;
如此循环,直到两个数据相等时,记录数据地址,退出循环。
伪指令汇编后从1000H单元开始,保留10个字节,从100AH开始连续
存放12H、42H。
8.BIT位地址符号伪指令
格式: 字符名称BIT位地址
功能: 用规定的字符名称表示位地址。
最新课件
12
例如:
X0 BIT P1.0
X1 BIT 30H
经汇编后,P1口的第0位地址赋给X0,位地址30H赋给X1。
次只有一只二极管亮。
分析:
要使每个灯轮流被点亮,必须在P1口的各
位按指定顺序轮流输出 “1”,其余位输出0,可
以采用循环移位指令完成。
8个灯一轮的渐次点亮由循环体完成,然
后利用无条件转移指令反复执行循最新环课件体。
图4-7 单灯循环电路图 22
程序流程图如图4-8所示。
源程序:
ORG 1000H
SJMP $
END
最新课件
图4-6 例4.10程序流程2图1
【例4.11】 用 80C51单片机的 P1口作输出,经驱动电路接 8只发
光二极管,如图4-7所示。
当输出位是“1”时,发光二极管被点亮; 输出位是“0”时二极管
熄灭。
编制单灯循环亮程序,即按
P1.0→P1.1→P1.2→……P1.6→P1.7→P1.0→P1.1→……顺序,每
第4章(第5版)李朝青-单片机原理及接口技术(第5版)课件
START: PUSH ACC
;将A中内容进栈保护
MOV R0,#addr1
;将addr1地址值送R0
MOV R1,#addr3
;将addr3地址值送R1
MOV A,@R0
;被加数低字节内容送A
ADD A,@R1
;低字节数相加
MOV @R0,A
用。
12:08
单片机原理及接口技术 15
2、划分模块的原则
每个模块应具有独立的功能,能产生一个明确的结果,即单 模块的功能高内聚性。
模块之间的控制耦合应尽量简单,数据耦合应尽量少,即模 块间的低耦合性。控制耦合是指模块进入和退出的条件及方 式,数据耦合是指模块间的信息交换方式、交换量的多少及 交换频繁程度。
〔标号:〕〔操作码〕〔操作数〕;〔注释〕 每个字段之间要用分隔符分隔,而每个字段内部
不能使用分隔符。可以用作分隔符的符号:空格 “ ”、冒号“:”、、逗号“,”、分号“;” 等。 例:LOOP:MOV A,#00H;立即数00H→A
12:08
单片机原理及接口技术 8
标号
标号是用户定义的符号地址。 一条指令的标号是该条指令的符号名字,标号的值是汇编这
89C51中,由89C51的指令助记符组成。
12:08
单片机原理及接口技术 10
操作数
汇编语言指令可能要求或不要求操作数,所以这一字段可能有也可 能没有。
若有两个操作数,操作数之间用逗号“,”分开。 操作数包括的内容有: (1)工作寄存器:由PSW.3和PSW.4规定的当前工作寄存器区
中的R0~R7。 (2)特殊功能寄存器:21个SFR的名字。 (3)标号名:赋值标号—由汇编指令EQU等赋值的标号;指令标
良好的注释是汇编语言程序编写中的重要组 成部分。
接口技术概述PPT课件
00H
部分:① 工作寄存器区(00H---1FH)
② 位寻址区 (20H---2FH)
③ 普通RAM 区 (30H---7FH)
第 1 章 接口技术概述
1、工作寄存器区 是指00H~ 1FH区, 共分4个组, 每组有8个单 7FH
元, 共32个内部RAM单元。
普通RAM区
2、每次F只FH能有1组作为工作寄 30H
调用指令:
LCALL/ACALL 标号
返回指令:
RET
第 1 章 接口技术概述
DPTR RAM PC ROM
89C51内有256B的RAM单元,其地址范围为00H—FFH,分P为0 两大部
分: 低 128 字节(S0P0H~7FH)A为真正T的MRPAM区B;
P1
高 128 字节(80H~FFH)为特殊功能寄存器区SFR。 P2
P0
作用:PC存放CPUS将P要执行的指A令所在T的MROPM单元B的地址。 P1
特点:① 具有自动加1功能。
② CPU复位时PC=0000H,当8051脱离复位状态时,开始P从20000H 处执行程序,P因SW此,用户A程L序U应该从0000H ROM单元存P放3 。
③ PC的值可以用转移和调用/返回指令修改。
连接。 1 单片机内部资源不够用时,需要外扩芯片,外扩芯片通过三总线与
CPU交换信息。
第 1 章 接口技术概述
单片机最小控制系统的结构图
T0 T1
+5V RST
CPU
RAM ROM 定时计数器
振荡电路
并 行 口 串行口 中断系统
X1
X2 P0 P1 P2 P3 TXD RXD INT0 INT1
外设 外设 外设
《微型计算机原理与接口技术》课件第4章
DW定义字,其后的每个操作数占有一个字(16位), 其低位字节在第一个字节地址中,高位字节在第二个字节地 址中。
DD定义双字,其后的每个操作数占有两个字(32位)。 (3) operand(操作数):可以是十进制、十六进制、字符 串、占位符及复制操作符DUP。
第4章 汇编语言与程序设计 (4) comments(注释):用来说明该伪操作的功能,是任 选项。 这些伪操作可以把其后的数据存入指定的存储单元,形 成初始化数据;或者只分配空间而不存入确定的数值,形成 未初始化数据。 汇编程序可以在汇编期间把数据存入内存,如图4.2所 示。
第4章 汇编语言与程序设计 4.1.3 汇编语言程序
把汇编语言源程序翻译成能在机器上执行的机器语言程 序(目标代码程序)的过程叫做汇编,完成汇编过程的系统程 序称为汇编程序。
图4.1表示汇编语言程序的建立及处理过程。
图4.1 汇编语言程序的建立及处理过程
第4章 汇编语言与程序设计
首先用编辑软件(可用文本编辑程序,如EDIT等)产生汇 编语言的源程序(扩展名为 .asm的源文件),源程序就是用汇 编语言的语句编写的程序,它是不能被机器直接识别和执行 的,所以必须把它翻译成二进制代码组成的程序( .obj),通 常这一工作是由汇编程序完成的。因此汇编程序的作用就是 把源文件转换成用二进制代码表示的目标文件(称为OBJ文 件)。在转换过程中,汇编程序将对源程序进行扫描,如果 源程序中有语法错误,则汇编结束后,汇编程序将指出源程 序中的错误,用户再回到编辑程序中修改源程序中的错误, 最后得到无语法错误的OBJ文件。
第4章 汇编语言与程序设计
OBJ文件虽然已经是二进制文件,但它还不能直接运行, 必须经过连接程序(LINK)把目标文件与库文件或其他目标 文件连接在一起形成可执行文件(EXE文件),这个文件就可 以由操作系统装入内存并执行了。
DD定义双字,其后的每个操作数占有两个字(32位)。 (3) operand(操作数):可以是十进制、十六进制、字符 串、占位符及复制操作符DUP。
第4章 汇编语言与程序设计 (4) comments(注释):用来说明该伪操作的功能,是任 选项。 这些伪操作可以把其后的数据存入指定的存储单元,形 成初始化数据;或者只分配空间而不存入确定的数值,形成 未初始化数据。 汇编程序可以在汇编期间把数据存入内存,如图4.2所 示。
第4章 汇编语言与程序设计 4.1.3 汇编语言程序
把汇编语言源程序翻译成能在机器上执行的机器语言程 序(目标代码程序)的过程叫做汇编,完成汇编过程的系统程 序称为汇编程序。
图4.1表示汇编语言程序的建立及处理过程。
图4.1 汇编语言程序的建立及处理过程
第4章 汇编语言与程序设计
首先用编辑软件(可用文本编辑程序,如EDIT等)产生汇 编语言的源程序(扩展名为 .asm的源文件),源程序就是用汇 编语言的语句编写的程序,它是不能被机器直接识别和执行 的,所以必须把它翻译成二进制代码组成的程序( .obj),通 常这一工作是由汇编程序完成的。因此汇编程序的作用就是 把源文件转换成用二进制代码表示的目标文件(称为OBJ文 件)。在转换过程中,汇编程序将对源程序进行扫描,如果 源程序中有语法错误,则汇编结束后,汇编程序将指出源程 序中的错误,用户再回到编辑程序中修改源程序中的错误, 最后得到无语法错误的OBJ文件。
第4章 汇编语言与程序设计
OBJ文件虽然已经是二进制文件,但它还不能直接运行, 必须经过连接程序(LINK)把目标文件与库文件或其他目标 文件连接在一起形成可执行文件(EXE文件),这个文件就可 以由操作系统装入内存并执行了。
计算机接口技术.ppt
《接口技术》串讲课件(一)
第四章 总线技术
5)总线仲裁 串行链式查询方式 计数器定时查询方式 独立申请方式
《接口技术》串讲课件(一)
第五章 中断技术
1.中断定义 2.中断功能 3中断类型及中断向量表 4.中断作用 5.中断控制器作用 6.中断处理过程
《接口技术》串讲课件(一)
第五章 中断技术
1、中断定义: 是中断源中止CPU当前正执行的程序,转而为 其服务.运行结束,再返回原程序继续工作. 2、中断功能: 解决快速主机与慢速外设速度匹配 ,分时操 作,实现实时处理,故障处理。
1) 信号电平转换 2) 数据格式转换 3) 数据寄存和缓冲 4) 对外设的控制与检测 5) 产生中断请求, DMA请求 6) 寻址功能 7) 可编程功能 8) 错误检测功能
《接口技术》串讲课件(一)
第一章 概述
4、CPU与外设之间的数据传送方式 1) 什么叫地址,地址空间,字节 地址——辨识存储器和I/O寄存器内的存储单元。 地址空间——所有地址的组合。 字节——存储器和I/O寄存器的单位。 1字节=8bit。 地址线的多少,决定了地址空间的大小 n ————2n
《接口技术》串讲课件(一)
第三章 存储器技术
本章要点:
1、存储器分类 2、主要性能指标 3、存储系统的构成 4、存储器时序图 5、地址译码
《接口技术》串讲课件(一)
第三章 存储器技术
1、存储器分类 按作用:主存,辅存,缓存 按介质:磁表面,半导体,光介质 按存取方式:RAM,ROM 2、主要性能指标 1)存储容量 2)存取时间 3)可靠性 4)功耗 5)价格
《接口技术》串讲课件(一)
2、微机系统的硬件组成,及各部分作用 微处理器CPU:由运算器、控制器、寄存器3部分 组成。实现运算和控制功能。 存储器:由CPU之外的半导体存储器芯片组成,存 放程序、操作数、运算的中间结果和最终数据。 I/O设备及其接口电路:输入设备将程序、原始数 据和现场信息送给计算机;输出设备将计算机的计 算和处理结果或回答信号以各种形式表现出来。外 设与CPU间的硬件连线和信息交换要经接口电路。
《微机原理与接口技术》课件——第4章微机原理与接口技术
出错
连接 程序
LINK
出错 文件
XXX.EXE XXX.MAP XXX.LIB
出错
DEBUG
.OBJ:目标文件,.LST:列表文件,.CRF:交叉引用文件 .MAP:映像文件,LIB:库文件
说明:
操作使用的工具
操作得到的文件
4
4.2汇编语言格式
一个简单的8086系统下的汇编语言程序:
DATA SEGMENT
6
4.2汇编语言格式
➢ 指令语句
[标号:] 指令助记符 [操作数,操作数] [;注释]
例如: mov cx,8 ;2操作数指令
s: nop
;0操作数指令(nop空操作)
loop s
;1操作数指令
➢ 伪指令语句
[名字] 伪指令助记符 参数,参数… [;注释] 例如: data1 db 0,1,2 ;数据定义伪指令DB,在内存中定义
➢ 例如,对于代码段中的一条指令:
2000H:1234H ADDR: INC CX ;段地址=2000H 偏移量=1234H
则有:
MOV AX,SEG ADDR
;AX←2000H
MOV AX,OFFSET ADDR
;AX←1234H;与指令 “LEA
AX,ADDR” 等价
21
(2)TYPE、LENTH、SIZE
;3个连续的字节单元,初值是0,1,2 ;data1表示第一个数据0的偏移地址
7
4.3 汇编语言的基本数据
➢ห้องสมุดไป่ตู้汇编语言程序的语句中包含的元素 : 字符集 保留字与标识符 常量、变量与标号 表达式及运算符
8
一、字符集
➢ 允许使用的字符: 字母,包括大写字母A~Z和小写字母a~z; 数字,包括0~9; 特殊字符,包括:+ - * / =()[ ] < > ; , ‘ “ . — :? @ $ & 及空格、制表符、回车、换行等。
《模块化程序设计》PPT课件
函数体 }
10
C语言程序设计
1. 函数头 函数头结构:
函数类型 函数名(形式参数表列) 一个函数的函数头的结构如下: (1)函数类型:指定函数值的类型,即函数返回值 的类型。 (2)函数名:必须采用合法的用户标识符。 (3)圆括号:是“函数运算符”,表示进行函数运算 ,函数运算符具有很高的运算优先级别。
返回
f1()
f2()
参数
返回
参数 返回
参数
返回
f11()
f21()
f22()
程序结构图
7
大学信息管理系统
办 公 室 管 理
教 务 管 理
科 研 管 理
人 事 管 理
财 务 管 理
图 书 管 理
设 备 管 理
后 勤 管 理
学成排 籍绩课 管管管 理数的结构形式如下: 函数头 {
5
C语言程序设计
main(void)
操 作
{ ┇
f1();
系
┇
统
f2(); ┇
return 0;
}
f1() {
┇ f11();
┇ } f2() {
┇ f21();
┇ f22();
┇
f11() {
┇ } f21() {
┇ } f22() {
┇
}
}
一般hC语言程序的执行过程
6
参数
main() 返回 参数
14
C语言程序设计
int absolutevalue (int x) /* 绝对值函数 */ {
return (x>=0?x:-x); }
void spc (int n) /* n空格函数 */ {
10
C语言程序设计
1. 函数头 函数头结构:
函数类型 函数名(形式参数表列) 一个函数的函数头的结构如下: (1)函数类型:指定函数值的类型,即函数返回值 的类型。 (2)函数名:必须采用合法的用户标识符。 (3)圆括号:是“函数运算符”,表示进行函数运算 ,函数运算符具有很高的运算优先级别。
返回
f1()
f2()
参数
返回
参数 返回
参数
返回
f11()
f21()
f22()
程序结构图
7
大学信息管理系统
办 公 室 管 理
教 务 管 理
科 研 管 理
人 事 管 理
财 务 管 理
图 书 管 理
设 备 管 理
后 勤 管 理
学成排 籍绩课 管管管 理数的结构形式如下: 函数头 {
5
C语言程序设计
main(void)
操 作
{ ┇
f1();
系
┇
统
f2(); ┇
return 0;
}
f1() {
┇ f11();
┇ } f2() {
┇ f21();
┇ f22();
┇
f11() {
┇ } f21() {
┇ } f22() {
┇
}
}
一般hC语言程序的执行过程
6
参数
main() 返回 参数
14
C语言程序设计
int absolutevalue (int x) /* 绝对值函数 */ {
return (x>=0?x:-x); }
void spc (int n) /* n空格函数 */ {
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
SSEG ENDS
DSEG1 SEGMENT
DEC—NUM DW ?
DSEG1 ENDS
CSEG1 SEGMENT
ASSUME CS:CSEG1,DS:DSEG1
START: MOV AX,DSEG1
MOV DS,AX
;装入段基址
PUSH DS
JMP FAR PTR PROMPT
KEY—IN: CALL DECBIN
;键盘输入十进制数
MOV DEC—NUM,BX ;二进制数DEC—NUM
CALL FAR PTR BINHEX ;以十六进制形式显示
MOV AH,4CH
INT 21H
;返回DOS
;从键盘输入十进制数,将其转换为二进制数并送BX
DECBIN GETCHAR:
EXIT: DECBIN CSEG1
PROC MOV MOV INT SUB JL CMP JG MOV XCHG MOV MUL XCHG ADD JMP RET ENDP ENDS END
3. 多个模块的组合形式
NONE 表示本段为独立段,不与其他模块段发生连接逻辑。
PUBLIC 表示将本段与其他模块中说明为PUBLIC的同名段邻接
在一起,共用一个段地址。组成一个大的物理段(“段组”)。
STACK 表示将该段与其他同名的堆栈段连接在一起,组合后
的物理段的长度等于参与组合的各堆栈段的长度之和。
例1:键盘输入十进制数,以十六进制形式在屏幕上
显示。
;模块A 文件名MAIN. ASM
EXTRN PROMPT:FAR,BINHEX:FAR ;引用外部符号
PUBLIC DEC—NUM,KEY—IN
;定义外部符号
SSEG SEGMENT PARA STACK ‘ STACK ’
DB 100 DUP( ?)
4.6模块化程序设计技术
1. 全局符号的定义与引用 单个模块中使用的符号(变量、标号或子程序名)为 局部符号。一个模块中定义的符号如不另加说明,均 为局部符号,局部符号只能在定义它的模块中使用。
多个模块可共同使用的符号为全局符号。只要将局部 符号在定义和使用它的模块中分别用 PUBLIC 和 EXTRN语句说明,即可作为全局符号(又称外部符号) 使用,全局符号构成了模块间通信的主要渠道。 2. 模块间的转移 模块间的转移有两种:近(段内)转移和远(段间) 转移。它们都是通过转移语句来实现的。具体实现转 移的语句是:JMP、CALL 和 INT。
;否,再加上07H
PRINTIT:
MOV
DL,AL
;输出单个字符
MOV
AH,02H
INT
21H
DEC
CH
JNZ
ROTATE
;继续下次转换
RET
BINHEX
ENDP
CSEG2
ENDS
END
例2:求无序表中的最大元素及其位置
;模块A, 文件名MAIN.ASM
Hale Waihona Puke EXTRN FOUND:NEAR
DATA1 SEGMENT… ARRAY DB d1,d2,d3, … dn
RET
例1; D_SEG W X Y Z RESULT D_SEG S_SEG S_SEG C_SEG START:
DEC CX MOV AL,[SI] COMP: CMP AL,[SI+1]
JG BIGGER MOV AL,[SI+1] MOV DL,DH BIGGER: INC SI
INC DH
LOOP COMP ASSUME DS:DATA2 MOV BX,DATA2 MOV DS,BX MOV MAX,AL MOV PLACE,DL
COUNT EQU $ —ARRAY
;数据个数
DATA1 ENDS
CODE SEGMENT WORD PUBLIC ‘CODE ’
ASSUME CS:CODE,DS:DATA1
MAIN: MOV AX,DATA1
MOV DS,AX
;装入段基址
MOV CX,COUNT
LEA SI,ARRAY
CALL FOUND ;找出最大元素及位置
ASSUME CS:CSEG2,DS:DSEG2
PROMPT: MOV AX,DSEG2
MOV DS,AX
;装入段基址
LEA
DX,MSG
MOV AH,09H
INT
21H
POP DS
JMP
FAR PTR KEY—IN
;将DEC—NUM中的二进制数转换为十六进制数的ASCII 码并输出
BINHEX
PROC FAR
NEAR BX,0 AH,1 21H AL,30H EXIT AL,09H EXIT AH,0 AX,BX CX,0AH CX AX,BX BX,AX GETCHAR
START
;累加和BX(已转换的二进制)初始化
;键入值是否在0~9之间? ;否,转至EXIT
;是,将AX中的BCD数与BX内容交换 ;累加和AX乘以当前权值
MOV
BX,DEC—NUM
MOV
CH,04H
;共有4位十六进制数
ROTATE:
MOV
CL,04H
ROL
BX,CL
;取最4bit二进制数待转换
MOV
AL,BL
AND
AL,0FH
ADD
AL,30H
;十六进制数 ASCII码
CMP
AL,3AH
;十六进制数在0~9之间吗?
JL
PRINTIT
;是,输出
ADD
AL,07H
COMMON 各模块中由COMMON方式说明的同名段重叠覆
盖,重叠部分的内容取决于参与覆盖的最后一个段的内容,复合 段的长度等于参与覆盖的最长的段的长度。
MEMORY 表示该段将位于被链接在一起的其他段之上(高地
址处),如果链接时出现多个段有MEMORY组合类型,将对第 一个MEMORY的段赋予这一属性,其他段作COMMON段处理。
MOV AH,4CH
INT 21H
CODE ENDS
END MAIN
;模块B,文件名SUB.ASM
PUBLIC FOUND
DATA2 SEGMENT
MAX
DB ?
PLACE DB ?
DATA2 ENDS
CODE SEGMENT WORD PUBLIC ‘CODE ’
ASSUME CS:CODE
FOUND PROC NEAR MOV DH,1 MOV DL,0
;送累加和 BX
;模块B
文件名SUB. ASM
EXTRN
DEC—NUM:WORD,KEY—IN:FAR
PUBLIC
PROMPT,BINHEX
SSEG
SEGMENT PARA STACK ‘ STACK ’
DB 200 DUP ( ?)
SSEG
ENDS
DSEG2
ENDS
CSEG2
SEGMENT PARA