第6章 子程序结构
例6.5 三个模块中的外部符号定义。 ; source module 1 extrn var2:word,lab2:far public var1,var4,lab1 data1 segment var1 db ? var3 dw ? var4 dw ? data1 ends code1 segment assume cs:code1,ds:data1 main proc far start: mov ax,data1 mov ds,ax ; ...... lab1: ; ...... mov ax,4c00h int 21h main endp code1 ends end start
6.1.3 保存与恢复寄存器 由于调用程序(又称主程序)和 子程序经常是分别编制的,所以 它们所使用的寄存器往往会发生 冲突。 如果主程序在调用子程序以前的 某个寄存器内容在从子程序返回 后还有用,而子程序又恰好使用 了同一寄存器,造成破坏了寄存 器的原有内容,那就会造成程序 运行错误,这是不允许的。
1.通过寄存器传送变量
开始 从键盘收得十进制 数保存在BX中
例6.3十进制到十六进 制数转换程序。程序 要求从键盘取得一个 十进制数,然后把该 数以十六进制形式在 屏幕上显示出来。
程序结构
通用DECIBIN
通用CRLF 显示回车换行 通用BINIHEX 用十六制数形式 显示BX中的数
通用CRLF
结束
pop
ret proadd endp
ax
;恢复寄存器
;功能:将BX的内容按4位十六进制数格式 输出
;入口条件:BX中存放待输出的数据
binihex proc push push push mov rotate: mov rol mov and near ax cx dx ch,4 cl,4 bx,cl al,bl al,0fh ;数据位数 ;循环移位次数 ;向左循环移位,将高四位移到低四位 ;取低字节到AL ;屏蔽高四位,截取低四位 ;保护寄存器
al,0fh ;屏蔽高四位,截取低四位 al,30h ;加30H,转换成十进制数的ASCII
cmp jl add print: mov mov
al,3ah ; print al,7h dl,al ah,2 ;如果是十六进制数A-F, 则再加7 ;转存到DL ;显示功能调用
int
dec jnz
21h
main
endp
proadd proc push push push lea mov xor next: add add loop mov pop pop
near ax cx si si,ary cx,count ax,ax ax,[si] si,2 next sum,ax si cx ;相加 ;SI指向下一数 ;未完继续 ;存和 ;SI置为数组首址 ;CX为数组长度 ;累加器清0 ;保护寄存器
;DECIHEX----主程序 ; 将键盘输入的十进制数转换成十六进制数送屏幕输出 decihex segment assume cs:decihex ;程序的主要内容,包括过程
main
proc
far
decibin ;将键盘所送的十进制数转换成二进制数存入BX crlf ;屏幕输出回车换行
repeat: call call
AND
JZ call call jmp DONE: MOV INT main endp
BX,BX
DONE binihex crlf repeat AX,4C00H 21H ;将BX中的二进制数转换成十六进制数送屏幕输出 ;屏幕输出回车换行
;过程名:DECIBIN ;功能 ;出口 :将键盘所送的十进制数转换成二进制数 :转换结果在BX寄存器中 near bx,0 ;BX赋初值
exit:
ret
decibin endp ;过程名:BINIHEX ;功能 ;入口 :将BX中的二进制数转换成十六进制数送屏幕输出 :BX中有待转换的二进制数 near ch,4 cl,4 bx,cl al,bl ;数据位数 ;循环移位次数 ;向左循环移位,将高四位移到低四位 ;取低字节到AL
binihex proc mov rotate: mov rol mov and add
dx cx
;非0则转换完,继续
pop
ret binihex endp code ends end
ax
;恢复寄存器
;返回 ;
start
除此以外,还可以通过地址表传送参数地址和通过堆栈传送参数或参数地址。
3.多个模块之间的参数传送问题 多个模块和程序之间的参数连接时,并不一定要把所有的代码段或数据段放在一起 形成一个大代码段。通常,各程序模块可有各自的分段,通过模块之间的调用来进行工 作。 (1)外部符号——在某一个模块中定义,而在另一个模块中引用的符号称为外部符号, 包括变量,标号,过程名等。
第6章 子程序结构
子程序又称为过程,相当于高级 语言中的过程和函数,引入过程的目 的是为了减少相同功能的程序段在程 序中的重复出现,提高代码的可重用 性,也是模块化的程序设计的基础。
6.1子程序的设计方法
6.1.1 过程定义伪操作 过程定义的一般形式: 过程名 PROC 属性 … 过程名 其中: 过程名为标识符,它又是子程序的入口地址,它的写法和标识符的写法相同。 属性是指类型属性,它可以是NEAR或FAR 说明: 1.过程是位于代码段中的子程序,由调用程序通过CALL指令调用。 2.过程的最后一个语句是RET语句。 ENDP
6.1.4 子程序的变量传送 调用程序在调用子程序时经常需要传送一些参数给子程序; 子程序运行完成后也经常要回送一些信息给调用程序。这种调用 程序和子程序之间的信息传送称为变量传送(或称为参数传送或 过程通信)。变量传送方式有以下几种: 1. 通过寄存器传送参数; 2. 如果过程和调用程序在同一程序模块中,则直接访问模块中 的变量; 3. 通过地址表传送参数地址; 4. 通过堆栈传送参数或参数地址; 5. 多个模块之间的参数传送问题可通过对引用符号的说明后在 连接过程中解决。
end main
2.如子程序和调用程序在同一个源文件中,则可以直接访问模块中的变量
例6.4 主程序MAIN和过程PROADD在同一源文件中,要求用过程 PROADD累加数组中的所有元素,并把和(不考虑溢出的可能性) 送到指定存储单元中去。
data ary count sum data code main segment dw dw dw ends segment proc far ;定义代码段 ;定义数据段 100,200,300,400,9000 ;其和为十进制数10000十六进制数2710H ($-ary)/2 ? ;数据个数 ;和存放单元
SUBT
PROC … RET
FAR
SUBT为一个过程,它 有两处被调用,一处是与它 在同一段的SEGX段内,另 一处是在另一段SEGY段内, 为此它必须声明具有FAR属 性以适应SEGY段调用的需 要。SUBT既有FAR属性, 则不 论 在 SEGX和 SEGY段 对 SUBT 的 调 用 就 都 具 有 FAR属性了,这样不会发生 什么错误,反之,如果这里 的SUBT使用了NEAR属性, 则SEGY段能者多劳它调用 就会出错了。
SUBT PROC NEAR PUSH AX PUSH BX PUSH CX PUSH DX
…
POP POP DX CX
为了避免这种错误的产生,在一 进入子程序后就应该把子程序所 需要用到的寄存器内容保存在堆 栈中,而在退出子程序前把寄存 器内容恢复原状。例如:
POP
POP RET
BX
AX
SUBT ENDP
相对而言,在本模块中定义又在本模块中引用的符号称为局部符号。
有两个伪操作与外部符号有关。 • PUBLIC伪操作:
ห้องสมุดไป่ตู้
格式:PUBLIC symbol[, ….]
作用:用于说明本模供其他模块调用的符号。 • EXTRN伪操作: 格式:EXTRN symbol name:type [, ….] 其中,type 对变量而言可以是byte,word,dword等, 而对标号而言,可以是near或far。 作用:用于说明本模供要引用的在其他模块定义的符号。 这两个伪操作就提供了模块之间相互访问的可能性。使用时,要注意两者的匹配。
3.当调用程序和过程在同一个代码段中时,定义过程为NEAR属性
4.当调用程序和过程不在同一个代码段中时,定义过程为FAR属性
例6.1调用程序和子程序在同一代码段中。 MAIN … CALL … SUBR1 PROC FAR
或定义成 MAIN … CALL … SUBR1 PROC FAR
RET
MAIN ; ENDP ; SUB1 PROC
assume cs:code,ds:data start: push ds
sub push mov mov call
ax,ax ax ax,data ds,ax near ptr proadd
;建立返回堆栈
;DS指向数据段
;调用proadd子程序
mov
call ret
bx,sum
binihex ;将和输出显示
ch rotate
;
;位数减1 ;非0则转换完,继续
ret
binihex endp ;过程名:CRLF
;返回
;功能 :输出回车换行
crlf proc mov mov int near dl,0dh ah,2 21h crlf
mov mov int ret endp
dl,0ah ah,2 21h
decihex ends
在子程序设计时,应该仔细考虑哪些寄存器是必须保存的, 哪些寄存器是不必要或不应该保存的。 一般说来,子程序中用到的寄存器是应该保存的。但是, 如果使用寄存器来在主程序和子程序之间传送参数的话, 这种寄存器就不一定需要保存,特别是用来向主程序回送 结果的寄存器,就更不应该保存和恢复寄存器而破坏了应 该向主程序传送的信息。
《IBM PC 80X86汇编语言程序设计》PPT电子课件教案-第六章 子程序设计
《IBM PC 80X86汇编语言程序设计》
冶金工业出版社
第6章
1、子程序的概念和特点
子程序:把在程序中多次出现,具有独立功能 的程序段写成程序模块,该模块可被多次调用, 称之为子程序。
特点:①可重复使用(调用) ②具有通用性(可通过入口参数实现) ③可浮动性(存放位置灵活) ④可递归性和可重入性
第6章
第六章 子程序设计
一、子程序的定义 二、子程序的结构形式
三、子程序的设计和调用 四、子程序的参数传递方法 五、子程序的嵌套和递归调用 六、子程序的设计举例 七、多模块程序设计 八、汇编语言和高级语言的混合编程
《IBM PC 80X86汇编语言程序设计》
冶金工业出版社
第6章
一、子程序的定义
1、子程序的概念和特点 2、子程序的定义 3、子程序的调用和返回
《IBM PC 80X86汇编语言程序设计》
冶金工业出版社
第6章
2、子程序的定义
子程序的定义是由过程定义伪指令PROC和ENDP 来完成的。其格式如下:
过程名 PROC [NEAR/FAR]
┆
过程名 ENDP
其中PROC表示过程定义开始,ENDP表示过程定 义结束。过程名是过程入口地址的符号表示。
一般过程名同标号一样,具有三种属性,即段 属性、偏移地址属性以及类型属性。
《IBM PC 80X86汇编语言程序设计》
冶金工业出版社
第6章
3、子程序的调用和返回
❖ 调用
①段内直接调用
格式:CALL 子程序名
功能:将子程序返回地址(断点)入栈
SP←SP-2
(SP)←IP,
并转到子程序入口地址去执行子程序。
❖ 返回指令
第6章S7-200PLC顺序控制程序设计方法.
08:09:56
天津职业技术师大自动化学院
第6章 S7-200PLC顺序控制程序设计方法
08:09:56
Байду номын сангаас
天津职业技术师大自动化学院
第6章 S7-200PLC顺序控制程序设计方法
初始步
转移条件
工作步
08:09:56
天津职业技术师大自动化学院
第6章 S7-200PLC顺序控制程序设计方法
三个电机顺序启停 的控制程序
手动启动按钮i00泵p1接触器q001号容器满i01泵p2接触器q011号容器空i02泵p3接触器q022号容器满i03泵p4接触器q032号容器空i04泵p5接触器q043号容器满i05泵p6接触器q053号容器空i06加热器接触器q064号容器满i07搅拌器接触器q074号容器空i10温度传感器i1109
08:09:56
天津职业技术师大自动化学院
第6章 S7-200PLC顺序控制程序设计方法
6.1.2 步(状态)与动作
顺序控制设计法的最基本思想:
将系统的一个工作周期划分为若干个顺序相连的阶段,这些阶 段称为步,并用编程元件来代表各步。步是根据输出量的状态来划 分的,在任何一步之内,各输出量的ON/OFF状态不变,但相邻两 步输出量总的状态是不同的。步的划分使代表各步的编程元件的状 态与各输出量的状态之间有着极为简单的逻辑关系。
转换条件控制代表各步的编程元件,让它们的状态按一定的控 制顺序变化,然后用代表各步的编程元件去控制PLC的各输出。
步用方框表示,并用辅助存储器的编号作为步的顺序编号。
08:09:56
天津职业技术师大自动化学院
第6章 S7-200PLC顺序控制程序设计方法
图5-11 波形图
《汇编语言程序设计》(第四版)教案及答案解析
《汇编语言程序设计》教案附:习题参考答案《汇编语言程序设计》(第4版)钱晓捷主编前言1.汇编语言是计算机能提供给用户的最快而又最有效的语言,也是能够利用计算机所有硬件特性并能直接控制硬件的唯一语言。
2.汇编语言程序设计是高等院校电子计算机硬、软件及应用专业学生必修的核心课程之一。
它不仅是计算机原理、操作系统等其它核心课程的必要先修课,而且对于训练学生掌握程序设计技术、熟悉上机操作和程序调试技术都有重要作用。
3.本教材共有十一章,其内容安排如下:(1).第一、二章为汇编语言所用的基础知识。
(2).第三章详细介绍80x86系列CPU的指令系统和寻址方式。
(3).第四章介绍伪操作、汇编语言程序格式及汇编语言的上机过程。
(4).第五、六章说明循环、分支、子程序结构和程序设计的基本方法。
(5).第七章说明宏汇编、重复汇编及条件汇编的设计方法。
(6).第八章叙述输入/输出程序设计方法,重点说明中断原理、中断过程及中断程序设计方式。
(7).第九章说明BIOS和DOS系统功能调用的使用方法。
(8).第十~十一章分别说明图形显示、发声及磁盘文件存储的程序设计方法,同时提供各种程序设计方法和程序实例。
附:教学参考书1.沈美明、温冬婵编著,IBM–PC汇编语言程序设计(第2版),清华大学出版社,2001年(教材)2.沈美明、温冬婵编著,IBM–PC汇编语言程序设计,清华大学出版社,1991年3.沈美明、温冬婵编著,IBM–PC汇编语言程序设计—例题习题集,清华大学出版社,1991年6月4.沈美明、温冬婵、张赤红编著,IBM–PC汇编语言程序设计—实验教程,清华大学出版社,1992年5.周明德,微型计算机IBM PC/XT(0520系列)系统原理及应用(修订版),清华大学出版社,19916.郑学坚、周斌,微型计算机原理及应用(第二版),清华大学出版社,19957.王士元、吴芝芳,IBM PC/XT[长城0520] 接口技术及其应用,南开大学出版社,19908.杨素行,微型计算机系统原理及应用,清华大学出版社,19959.戴梅萼、史嘉权,微型计算机技术及应用—从16位到32位(第二版),清华大学出版社,199610.张昆藏,IBM PC/XT微型计算机接口技术,清华大学出版社,199111.孟绍光,李维星,高档微机组成原理及接口技术(80386/80486/Pentium),学苑出版社,199312.吴秀清,周荷琴,微型计算机原理与接口技术,中国科学技术大学出版社目录第 1 章基础知识 (1)1.1进位计数制与不同基数的数之间的转换 (1)1.2二进制数和十六进制数的运算 (2)1.3计算机中数和字符的表示 (3)1.4几种基本的逻辑运算 (3)第 2 章 80X86计算机组织 (4)2.180X86微处理器 (4)2.2基于微处理器的计算机系统构成 (4)2.3中央处理机 (5)2.4存储器 (6)2.5外部设备 (7)第 3 章 80X86的指令系统和寻址方式 (8)3.180X86的寻址方式 (8)3.2程序占有的空间和执行时间 (10)3.380X86的指令系统 (10)第 4 章汇编语言程序格式 (27)4.1汇编程序功能 (27)4.2伪操作 (27)4.3汇编语言程序格式 (31)4.4汇编语言程序的上机过程 (34)第 5 章循环与分支程序设计 (37)5.1循环程序设计 (37)5.2分支程序设计 (38)5.3如何在实模式下发挥80386及其后继机型的优势 (38)第 6 章子程序结构 (40)6.1子程序的设计方法 (40)6.2子程序的嵌套 (41)6.3子程序举例 (41)第 7 章高级汇编语言技术 (43)7.1宏汇编 (43)7.2重复汇编 (44)7.3条件汇编 (45)第 8 章输入/输出程序设计 (46)8.1I/O设备的数据传送方式 (46)8.2程序直接控制I/O方式 (47)8.3中断传送方式 (47)第 9 章 BIOS和DOS中断 (50)9.1键盘I/O (50)9.2显示器I/O (52)9.3打印机I/O (53)9.4串行通信口I/O (54)第 10 章图形与发声系统的程序设计 (55)10.1显示方式 (55)10.2视频显示存储器 (55)10.3EGA/VGA图形程序设计 (56)10.4通用发声程序 (57)10.5乐曲程序 (58)第 11 章磁盘文件存取技术 (59)11.1磁盘的记录方式 (59)11.2文件代号式磁盘存取 (60)11.3字符设备的文件代号式I/O (61)11.4BIOS磁盘存取功能 (62)附录:《IBM—PC汇编语言程序设计》习题参考答案 (63)第一章.习题 (63)第二章.习题 (64)第三章.习题 (65)第四章.习题 (79)第五章.习题 (84)第六章.习题 (104)第七章.习题 (118)第八章.习题 (125)第九章.习题 (130)第十章.习题 (134)第十一章.习题 (145)第 1 章 基础知识【教学目的】本章内容是本课程的基础,通过本章学习,使学生明确汇编语言程序设计的学科性质、基本内容和学习意义,掌握数制的转换、数据的编码,了解本门课程的教学要求和学习方法。
软件工程导论第6章
70年代初N.Wirth在Pascal语言中设置支持“顺序 结构”、“IF-THEN-ELSE选择结构”、“DO-WHILE 重复结构”或“DO-UNTIL重复结构”三种基本控制 结构语句。
25
3种基本控制结构
(1) 顺序型
A B
(2) 选择型
F P A B T
(2) 多情况选择型(case)
T T
P=1 F P=2 F P=n F
…
A1 A2
T
An
(3) 先判定型循环
后判定型循环
(do-while)
F
(do-until)
P T S
S P F
T
例1、某模块有两个输入a和b,一 个输出c,当满足条件(a>0)and(b<2) 时,c=a+b,否则c=a-b。画出该模 块的程序流程图。
a b
第6章 详细设计
6.1 结构程序设计 6.2 人机界面设计 6.3 过程设计的工具 6.4 面向数据结构的设计方法 6.5 程序复杂程度的定量度量 6.6 小结 习题
1
详细设计阶段的根本目标:确定应该怎样具体地 实现所要求的系统。 为软件结构图中的每一个模块确定使用的算法和 块内数据结构,并用某种选定的表达工具给出清晰 的描述。
100 110
120
130 140
Eq:等于 ne:不等于 gt:大于 lt:小于 ge:大于等于 le:小于等于
例:打印A、B、C三数中最小者的程序 if (A.LT.B .AND. A.LT.C)then write(6,*) A else if (A.GE.B .AND. B.LT.C) then write(6,*) B else write(6,*) C endif endif
VFP 第6章
目录
上一张
结束
3.WAIT命令 . 命令 WAIT [ <字符表达式>] [TO <内存变量>]
功能:该命令显示字符表达式之值作为提示信息,暂停程序的执行 ,直到用户按任意键或单击鼠标时继续程序的执行。 说明:
如果 <字符表达式>值为空串,那么不会显示任何提示信息。如果没 有指定 <字符表达式>,则显示默认的提示信息:“按任何键继续...”。 <内存变量>用来保存用户键人的字符,其类型为字符型。
INPUT “请输入货物重量:” TO w IF w<=50 f=w*0.1 ELSE f=50*01+(w-50)*0.2 ENDIF ? “托运费为:”,f 目录 上一张 结束
&&货物重量超过50公斤时的计算公式 &&货物重量没有超过50公斤时的计算公式
用单分支选择编写YH2.prg程序如下:
VFP的结构化程序设计 第6章 VFP的结构化程序设计
6.1 程序与程序文件 6.2 程序的基本结构 6.3 模块化程序设计 本章要点
目录
上一张
结束
前面各章都是以交互方式,即在命令窗口中逐条输入命 令或通过选择菜单来执行Visual FoxPro命令的。除此之外, 常常采用程序的方式来完成更为复杂的任务。 VFP程序设计包括结构化程序设计和面向对象程序设计。 前者是传统的程序设计方法;后者面向对象,用户界面可利 用VFP提供的辅助工具来设计,应用程序可自动生成,但是 仍需用户编写一些过程代码。就此而言,结构化程序设计仍 是面向对象程序设计的基础。
,若无上级程序则返回命令窗口。 ④ QUIT:退出Visual FoxPro系统,返回到操作系统。
《汇编语言》作业答案
3545233.doc 制作:江家宝《IBM—PC汇编语言程序设计》课后作业参考答案目录第一章:基础知识 ........................................................................................ 2第二章:80×86计算机组织......................................................................... 2第三章:80×86的指令系统和寻址方式..................................................... 3第四章:汇编语言程序格式........................................................................ 7第五章:循环与分支程序设计.................................................................... 9第六章:子程序结构 ................................................................................ 12第七章:高级汇编语言技术.................................................................... 20第八章:输入输出程序设计.................................................................... 22第九章:BIOS和DOS中断 (23)3545233.doc 制作:江家宝第一章:基础知识1.1、用降幂法和除法将下列十进制数转换为二进制数和十六进制数:(3) 4095 答:(3) 4095 =1111 1111 1111B=FFFH1.2、将下列二进制数转换为十六进制数和十进制数:(1) 10 1101 答:(1) 10 1101B=2DH=451.3、将下列十六进制数转换为二进制数和十进制数:(4) 1234 答:(4) 1234H=1 0010 0011 0100B=46601.4、完成下列十六进制数的运算,并转换为十进制数进行校核:(3) ABCD-FE 答:(3) ABCD-FEH=AACFH=437271.5、下列各数均为十进制数,请用8位二进制补码计算下列各题,并用十六进制数表示其运算结果。
matlab第6章ode
1 L 0
u
i
状态方程以两个状态元件 i和uo作状态变量 21
+S
i
ui
D
-
dT
L
+
C u0 R
-
0
L
di dt
u0
i
C
d u0
dt
u0
R
T
(2)当S=off:时间长度为: (1-d)*T:
di dt
u0
L
du0
dt
i C
u0
RC
22
S=OFF
u
•
i
•
0
0
1 C
1
1. ode23
在MATLAB中,函数ode23采用2-3阶龙格-库塔法 求解微分方程。
[t,y]=ode23(odefun,tspan,y0) [t,y]=ode23(odefun,tspan,y0,options) odefun:定义微分方程的形式y’=f(t,y) tspan=[t0,tfinal]:表示微分方程的积分限从t0(始值) 到tfinal(终值),该积分限也可以是一些离散的点。 y0:初始状态列向量 options:积分参数,包括‘RelTol’(相对误差)和 ‘AbsTol’(绝对误差),可省略。
IR Vi
L C UC
12
(1)分析:根据电路分析,可以得出微分方程
RI(t) VL(t) VC (t) Vi (t)
I(t) C dVC (t) dt
VL (t)
L
dI(t) dt
LC
d
2VC (t) dt 2
dI(t) L dt RI(t) VC (t) Vi (t)
LC
FORTRAN90第6章1
子程序分类
Fortran90程序中的过程有两种: Fortran90程序中的过程有两种:函数子 程序中的过程有两种 程序过程和子例子程序过程。 程序过程和子例子程序过程。这两者的 形式、功能与调用方法都有所不同, 形式、功能与调用方法都有所不同,但 总称为过程或子程序。 总称为过程或子程序。
内在(系统 函数分类 内在 系统)函数分类 系统
a = (L + L2 + L3) / 2 1 s = a(a L )(a L2 )(a L3) 1 S = ∑s
–
图 计算多边形面积
以上问题要经过三次完全相同的运算,但参加运算的 、 、 以上问题要经过三次完全相同的运算,但参加运算的L1、L2、L3 量值不同。我们可以编写一段程序实现这一功能, 量值不同。我们可以编写一段程序实现这一功能,并为该程序段 命名。在计算每个三角形面积时调用该程序, 命名。在计算每个三角形面积时调用该程序,并代入不同的参数 完成运算,从而简化设计,便于结构化的程序设计。 完成运算,从而简化设计,便于结构化的程序设计。
子程序 子程序是具有特定功能的程序段 子程序是具有特定功能的程序段 功能 子程序不能独立执行, 子程序不能独立执行,只能被主程序单元或 被其它子程序单元调用,甚至可以递归调用 被其它子程序单元调用, 调用 调用本身) (调用本身)
含有子程序的结构
主程序: 主程序: 单位定义 说明部分 输入 调用子程序 输出 END 子程序: 子程序: 计算或处理
求X的绝对值 的绝对值
Function f(x) result(r) real::x,r if (x>0)then r=x else r=-x endif end Program main real::I,f read *,i Print *,f(i) end
汇编语言第六章
三.中断向量表
3. 设置或取出中断向量指令 (1) 设置中断向量指令 功能:把由AL指定的中断类型的中断向量DS:DX放入中
断向量表中。
(AH)= 25H
(AL)= 中断类型号
DS:DX = 中断向量 INT 21H
三.中断向量表
(2) 取出中断向量指令
功能:把AL中指定的中断类型的中断向量从中断
一、 WIN32编程基础
(2) 循环控制伪指令
格式:.WHILE 条件表达式 循环体 .ENDW 格式:.REPEAT 循环体 .UNTIL 条件表达式 格式:.CONTINUE 功能:终止本次循环, 开始下一次循环 格式:.BREAK 功能:退出当前循环
功能:实现循环结构
一、 WIN32编程基础
内中断的处理特点: ①中断类型号一般在指令中; ② 不受中断允许标志位IF的影响。
二、 中断源
2. 外中断 由外设控制器、协处理器等CPU以外的事件引起的中断, 称为外中断。 外中断的处理特点: ① 中断类型号由8259A提供,或由自制电路来提供;
② 受中断允许标志位IF的影响(IF=1,响应中断)。
个字节。
三.中断向量表
如:INT 4AH
中断向量地址 = 4AH*4 = 128H
DEBUG执行后, 用D命令查看: ―D0:0↙ … 执行INT 4AH时: IP=1805H CS=F000H IP F000: 1805 中断处理
0:128H
0:129H
05 18
0:12AH
0:12BH
00
F0 …
外设
二、 外设与主机传送的接口与信息
接口的组成:设备状态寄存器、设备控制寄存 器、数据寄存器。 I/O端口的地址空间:允许设置64K个8位端口 或32K个16位端口。 如:40H~43H时钟/定时器,60H~63H为 8255通讯芯片的接口。
DEVC基础教程之函数
DEVC++教程第六章函数第22课:函数㈠前面我们曾经学习了程序设计中的三种基本控制结构(顺序、分支、循环)。
用它们可以组成任何程序。
但在应用中,还经常用到子程序结构。
通常,在程序设计中,我们会发现一些程序段在程序的不同地方反复出现,此时可以将这些程序段作为相对独立的整体,用一个标识符给它起一个名字,凡是程序中出现该程序段的地方,只要简单地写上其标识符即可。
这样的程序段,我们称之为子程序。
子程序的使用不仅缩短了程序,节省了内存空间及减少了程序的编译时间,而且有利于结构化程序设计。
因为一个复杂的问题总可将其分解成若干个子问题来解决,如果子问题依然很复杂,还可以将它继续分解,直到每个子问题都是一个具有独立任务的模块。
这样编制的程序结构清晰,逻辑关系明确,无论是编写、阅读、调试还是修改,都会带来极大的好处。
在一个程序中可以只有主程序而没有子程序(本章以前都是如此),但不能没有主程序,也就是说不能单独执行子程序。
在此之前,我们曾经介绍并使用了C++提供的各种标准函数,如abs(),sqrt()等等,这些系统提供的函数为我们编写程序提供了很大的方便。
比如:求sin(1)+ sin(2)+...+sin(100)的值。
但这些函数只是常用的基本函数,编程时经常需要自定义一些函数。
一、函数的概念函数是一种对应关系的描述,即确定了函数自变量到函数值之间的对应关系。
与函数相关的概念如下。
⑴自变量:函数计算时使用的数据,自变量的取值范围称为函数的定义域。
在程序设计中,函数的自变量称为参数,定义域由参数的类型决定。
⑵函数值:函数的计算结果,它的取值范围称为值域。
在程序设计中函数值称为函数返回值,返回值的类型称为函数类型。
⑶表达式:数学中函数的计算过程由表达式来说明,在程序设计中,一个函数的处理过程往往比一个表达式所描述的内容要复杂得多,需要一段程序来描述所有的操作,这就是C++语言一个函数的函数体。
二、函数的分类分为系统函数和用户定义函数(也叫自定义函数)1、系统函数系统函数取出由C++语言系统提供的函数(也称库函数)。
