第三章 程序设计(改)

合集下载

第3章 顺序结构程序设计

第3章 顺序结构程序设计

第三章顺序结构程序设计一、输出函数printf的使用使用的格式:printf(“输出格式串”,表达式表); /*printf要小写*/重点掌握输出格式符① 格式符:%d 以普通整型输出(不可以写成%D)%md 以普通整型输出,数据占m位,右对齐%+md 以普通整型输出,数据占m位,右对齐(正数的前面有+号)%-md 以普通整型输出,数据占m位,左对齐%hd 以短整型输出%ld(或%Ld) 以长整型输出%u 以无符号整型输出%o 以八进制形势输出%x(或%X) 以十六进制形势输出%f 以单精度小数形势输出,点后6位小数%lf(或%Lf或%f) 以双精度小数形势输出,%±m.nf 以单精度小数形势输出,点后n位小数,且进行四舍五入%.nf 以单精度小数形势输出,点后n位小数,且进行四舍五入%c 以字符形式输出%s 以字符串形式输出说明:以上的常用格式符必须和后面的变量一一对应,并且后面的变量是什么类型前面就必须用相应的格式符例:int a=-2;unsigned int b=30;float c=3.1456;printf(“%d%u%5.2f”,a,b,c); 问:输出结果是什么?(-230 3.15)②普通字符普通字符原样输出,它不控制变量的输出。

printf(“a=%d,b=%u,c=%5.2f”,a,b,c); 问:输出结果是什么?③转义字符\n 回车且换行\r 回车但不换行\b 退一个字符\t 走一个制表位(8个字符)\\ 转译成\\’转译成’\”转译成”%% 转译成%\ddd 转译成1~3位八进制所对应的ascii码值所代表的字符\xdd 转译成1~2位十六进制所对应的ascii码值所代表的字符二、输入函数scanf的使用格式:scanf(“格式串”,变量地址列表);重点掌握输入格式(有格式符和普通字符,没有转义字符)① 格式符:%d 以普通整型输入%ld(%Ld) 以长整型输入%hd 以短整形输入%md 取整型的m位%u 以无符号型输入%o 以八进制输入%x(%X) 以十六进制输入%f 以单精度小数输入%lf(%Lf) 以双精度小数输入%mf 以单精度小数输入(但是不能规定它的精度。

第三章 汇编语言程序设计

第三章  汇编语言程序设计

第3章 汇编语言程序设计 章
3.2 汇编语言源程序的格式
பைடு நூலகம்
名字: 名字:变量和标号
变量名 段名 过程名:指示性语句中的名字.内存单元的名 变量名/段名 过程名:指示性语句中的名字. 段名/过程名
定义. BUF DB ? 字,由DB/DW/DD定义. 由 定义 变量的三种属性: 变量的三种属性: 段值 SEG 偏移量 OFFSET 类型 BYTE/WORD/DWORD 标号:指令性语句中的名字.指令存放单元的符号地址. 标号:指令性语句中的名字.指令存放单元的符号地址. LOOPER: MOV AL,DATA[SI] 标号的三种属性: 标号的三种属性: 段值 SEG 偏移量 OFFSET 类型 NEAR/FAR 对于汇编程序来说,变量和标号都是存储单元的符号地址. 注:对于汇编程序来说,变量和标号都是存储单元的符号地址. 只是标号对应的存储单元中存放的是指令, 只是标号对应的存储单元中存放的是指令,而变量所对应的 存储单元存放的是数据. 存储单元存放的是数据.
令和数据. 令和数据. 汇编语言(Assenbly Lauguage):用助记符来编写 汇编语言( Lauguage): 指令,地址和数据也可用符号表示. 指令,地址和数据也可用符号表示.用汇编语言 编写的程序必须翻译成机器语言目标程序( 编写的程序必须翻译成机器语言目标程序(或目 标代码)才能执行,这种翻译过程称为汇编 汇编. 标代码)才能执行,这种翻译过程称为汇编. 高级语言:不针对某个具体的计算机,通用性强. :不针对某个具体的计算机,通用性强. 但高级语言编写的源程序同样必须"翻译" 但高级语言编写的源程序同样必须"翻译"成机 器语言,计算机才能执行, 器语言,计算机才能执行,所用的系统软件称为 编译程序或解释程序. 编译程序或解释程序.

网络程序设计(java)第03章 面向对象程序设计new

网络程序设计(java)第03章 面向对象程序设计new


• 类(class)本身也是一种对象 • 类(class)同时也是实例对象的模板 • 类(class) 的基本组成:(成员)域和(成员)方 法 • 每个对象:拥有内存存储成员域/方法
– 静态的成员域/方法属于类 – 其它成员域/方法属于实例对象
2013-7-31 8
类的定义
• 类的定义格式如下:
2013-7-31 18
实例化对象
前面讲过,类是创建对象的模板.当使用一个类创建了一 个对象时,我们也说我们给出了这个类的一个实例。通常的格 式为: 类的名称 对象的名字=new 类的名称([parameterList]); 创建一个对象包括对象的声明、为对象分配内存空间和赋 初值三个步骤。 1、对象的声明格式为: 类的名字 对象名字; 如 People zhangPing; 或 People zhangPing ,LiYong; 这里People 是一个类的名字,zhangPing是我们声明的对象的 名字.
2013-7-31 1
面向对象程序设计整体介绍
• 传统的程序设计风格存在着数据抽象简单、信息完全暴露、 算法复杂、无法很好地描述客观世界等缺点,可重用性差, 如果软件项目庞大,程序的调试和维护将变得异常困难。 • 面向对象的基本思路:首先分析问题并建立相应的对象, 然后通过这些对象以及它们之间的配合解决问题,是模拟 现实生活求解的一般过程。
float getArea(){ // 方法 return radius*radius*PI; }
//内部访问变量
}
成员域的使用
如果从类的外部访问,类变量和类实例变量的使用方法是不同。 访问类变量的格式如下: 类名.类变量名 例如我们可以采用下面形式访问上例中的静态变量color的: Circle.color,由此可见,访问类变量与类的对象构造和对象都无 关。类变量名必须用static修饰。 访问实例变量的格式如下: 对象名.实例变量名 例如 Circle c1=new Circle(); //c1是对象名 System.out.println(“area=”+c1.area); //(不能是Circle.area) System.out.println(“Color=”+Circle.color);

C++语言程序设计第3章

C++语言程序设计第3章

优先级和结合性:
先乘除,后加减,同级自左至右。
Page 20
3.3.1 算术运算符和表达式
例: float f = 3.5; int n = 6; long k = 21; double ss = f*n + k/2;
Page 21
3.3.2 自加自减运算符和表达式
运算符 ++ ++ ---
名字 增量(前缀) 增量(后缀) 减量(前缀) 减量(后缀)
▪ 字符数据在内存中的存储形式 - 以ASCII码存储,占1字节,用7个二进制位
Page 14
3.2.2 变量和常量—字符型数据
▪ 字符串常量
例:"CHINA" "a" 'a'
C H I N A \0 a \0 a
所以:char c;
c="a";
Page 15
3.2.2 变量和常量—布尔型数据
▪ 布尔型变量的说明: 例:bool flag;
Union
Unsigned
Class
Const_cast Delete
Friend Public Try Asm Except
Inline
Mutable
Reinterpret_c ast
Typeid
Typename
Namespac e
Static_cast
New Template
Using
Virtual
▪ 布尔型数据的取值: 只有 false 和 true 两个值
▪ 整型数与布尔变量的转换: - 非0整数隐式转换成true,整数0隐式转
换成false; - true转换成1, false转换成0;

C语言程序设计 第三章 栈和队列

C语言程序设计 第三章 栈和队列

通常称,栈和队列是限定插入和删除只能在表的“端点”进行的线性表。

线性表栈队列Insert(L,i, x) Insert(S, n+1, x) Insert(Q, n+1, x) 1≤i≤n+1Delete(L, i) Delete(S, n) Delete(Q, 1) 1≤i≤n栈和队列是两种常用的数据类型第三章栈和队列3.1 栈3.2 栈的应用举例3.4 队列学习提要:1.掌握栈和队列这两种抽象数据类型的特点,并能在相应的应用问题中正确选用它们。

2.熟练掌握栈类型的两种实现方法,即两种存储结构表示时的基本操作实现算法,特别应注意栈满和栈空的条件以及它们的描述方法。

3.熟练掌握循环队列和链队列的基本操作实现算法,特别注意队满和队空的描述方法。

重难点内容:顺序栈的相关操作、循环队列的判空判满§3.1 栈(stack)3.1.1栈的类型定义3.1.2栈的表示和实现★栈的定义和特点定义:限定仅在表尾进行插入或删除操作的线性表,表尾—栈顶,表头—栈底,不含元素的空表称空栈。

a n a 1a 2……...栈底栈顶...出栈进栈栈s=(a1,a2,……,an)特点:先进后出(FILO )或后进先出(LIFO )3.1.1栈的类型定义ADT Stack{数据对象:D={ a i| a i ∈ElemSet, i=1,2,...,n, n≥0 }数据关系:R1={ <a i-1, a i>| a i-1, a i∈D, i=2,...,n }约定an 端为栈顶,a1端为栈底。

基本操作:} ADT Stack栈的类型定义InitStack(&S)DestroyStack(&S)ClearStack(&S)StackEmpty(s)StackLength(S)GetTop(S, &e)Push(&S, e)Pop(&S, &e)StackTravers(S, visit())3.1.2 栈的表示和实现顺序栈类似于线性表的顺序映象实现,指向表尾的指针可以作为栈顶指针。

第三章 模块化程序设计01

第三章 模块化程序设计01

g
h
i
循环体
顺序结构
A模块
B模块
选择结构
济南大学-信息学院 C语言程序设计
循环结构
第3页
3.1 模块化程序设计的思想
• 什么是模块化程序设计? 模块化程序设计就是将一个复杂的大问题,分解为一 个个独立的简单的小问题(即模块),分别解决简单的 小问题,进而解决复杂的大问题。 • 在C语言中,这些独立的简单的模块就是函数。 • 功能分解是一个自顶向下、逐步求精的过程。
必须有且只能有一个名为main的主函数 C程序的执行总是从main函数开始,在main中结束 函数不能嵌套定义,可以嵌套调用(即使用)。
济南大学-信息学院 C语言程序设计 第4! n !
只需实现模块 fac()即可
fac(k) fac(m)+fac(n)
• 阶乘模块fac(n)的实现: f = 1; for ( i=1; i<=m ; i++) n k { f = f * i; }
主函数
函数调用
济南大学-信息学院
C语言程序设计
第12页
例: ①、编写一个函数,打印一行信息“How do you do!”
#include <stdio.h>
____ print( ____ ) 函数定义 void { printf("How do you do!\n"); } void main( ) {
C语言程序设计 第16页
济南大学-信息学院
函数调用的说明
1. 运行期间,只有当函数被调用时,形式参数才被 分配存储空间;调用结束后,形参所占的空间将 被释放; 2. 实参与形参一一对应。 可以是常量,变量或表达式; 3. 实参和形参的类型应相同或赋值相容; 实参 4. 实参对形参的数据传递是“值传递”, 即单向传递; 行参 即函数内形参的值无法传给实参。

计算机二级C语言课件第3章最简单的C程序设计1-改


例3.2
解题思路:确定计算本息和的公式。
从数学知识可知:若存款额为p0,则: 活期存款一年后本息和为:
p1=p0(1+r1) 一年期定期存款,一年后本息和为:
p2=p0(1+r2) 两次半年定期存款,一年后本息和为:
p3 = p0(1+ r3)(1+ r3 ) 22
例3.2
#include <stdio.h> int main ( )
一个字符变量在内存中占一个字节。
字符数据在内存中的存储形式及其使用方法
将一个字符常量放到一个字符变量中,, 而是将该字符的相应的ASCII代码放到存 储单元中。例如字符‘a’的ASCII代码为 97,‘b’为98,在内存中变量c1、c2的值如图
(a)所示。实际上是以二进制形式存放的,如 图(b)所示。P48
[signed ] int unsigned int
注意: 取值范围 举例P47
例:
#include<stdio.h>
void main( )
运行结果:
{int a,b,c,d;
a十u=22,b+u=-14
unsigned u;
a=12;b=-24;u=10;
c=a+u;d=b+u;
printf(“a+u=%d ,b+u=%d”,c,d);
字符常量
• 定义:用单引号括起来的单个普通字符或转义字符.
• 字符常量如的值‘:a’该字‘A符’ 的‘?’ASC‘I\nI’码值‘\101’
• 转转义义字字如符符:反及‘‘斜其A0’’线含——后义——面:6458跟P,4,一0表‘‘个\n3a字’.’——1符——或190一7,个代码值表示

第三章第二节python语言程序设计教学设计浙教版高中信息技术必修1

3.互动问答:在讲解过程中,适时提出问题,引导学生主动思考和参与课堂讨论,巩固所学知识。
(三)学生小组讨论
在学生小组讨论环节,我将组织以下活动:
1.分组讨论:将学生分成若干小组,针对某一具体问题进行讨论,鼓励小组成员各抒己见,共同分析问题。
2.算法设计:让学生根据问题需求,设计相应的算法,并在小组内分享和讨论,优化算法。
二、学情分析
在本章节的教学中,我们面对的是高中一年级的学生。他们已经具备了一定的信息技术基础,掌握了基本的计算机操作技能,但对于编程语言的学习,大多数学生还处于起步阶段。因此,在进行Python语言程序设计的教学时,我们需要关注以下几点:
1.学生的认知水平:学生在初中阶段可能对信息技术课程中的算法与程序设计有所接触,但程度不一。我们要充分了解学生的已有知识储备,合理设计教学内容,使之既能巩固旧知,又能拓展新知。
-学生通过小组讨论和合作,共同分析问题,设计算法,提高解决问题的效率。
2.引导学生通过实例分析和编程实践,掌握程序设计的步骤和方法。
-学生能够通过分析实际案例,理解问题需求,设计合理的解决方案。
-学生通过编程实践,巩固所学的知识,形成编程思维。
3.利用可视化工具和调试技术,帮助学生理解程序的执行过程,提高程序调试能力。
四、教学内容与过程
(一)导入新课
在本章节的教学起始阶段,我将采用以下方式导入新课:
1.提问方式:向学生提出与日常生活相关的问题,如“你们有没有遇到过需要重复做某件事情的情况?如何才能让这个过程更高效?”通过问题引导学生思考编程在生活中的应用。
2.案例展示:向学生展示一个简单的Python程序案例,如计算器程序,让学生直观地了解Python编程的魅力和实用性。
第三章第二节python语言程序设计教学设计浙教版高中信息技术必修1

matlab程序设计第三章课后习题答案

1. p138 第6题在同一坐标轴中绘制以下两条曲线并标注两曲线交叉点。

>> t=0:0.01:pi;>> x1=t;>> y1=2*x1-0.5;>> x2=sin(3*t).*cos(t);>> y2=sin(3*t).*sin(t);>> plot(x1,y1,'r-',x2,y2,'g-')>> axis([-1,2,-1.5,1])>> hold on>> s=solve('y=2*x-0.5','x=sin(3*t)*cos(t)','y=sin(3*t)*sin(t)'); >> plot(double(s.x),double(s.y),'*');截图:p366 第4题绘制极坐标曲线,并分析对曲线形状的影响。

function [ output_args ] = Untitled2( input_args )%UNTITLED2 Summary of this function goes here% Detailed explanation goes heretheta=0:0.01:2*pi;a=input('请输入a的值:');b=input('请输入b的值:');n=input('请输入n的值:');rho=a*sin(b+n*theta);polar(theta,rho,'k');end下面以a=1,b=1,n=1的极坐标图形为根底来分析a、b、n的影响。

对a的值进行改变:比照发现a只影响半径值的整倍变化对b的值进行改变:比照发现b的值使这个圆转换了一定的角度对n的值进行改变:比照发现当n>=2时有如下规律1、当n为整数时,图形变为2n个花瓣状的图形2、当n为奇数时,图形变为n个花瓣状的图形分别让n为2、3、4、5同时改变b和n的值,比照发现图形变为2n个花瓣状,并且还旋转了一定角度1 绘制sin(x)曲线,通过句柄修改曲线的颜色,要求:a)生成曲线的同时,获取句柄,再修改颜色;>> x=0:pi/50:2*pi;>> y=sin(x);>> h=plot(x,y)h =>> set(h,'color','r');截图如下:b〕先生成曲线,然后再获取句柄,再完成颜色修改。

第三章 顺序结构程序设计


步骤1:0 => s; 步骤2:1 => I; 步骤3:s+i => s; 步骤4:i+1 => I; 步骤5:如果i≤1000,转到步骤3,否则结束。 在上面的算法中,符号s、i表示变量,符号“=>” 表示给变量赋值。步骤1和步骤2表示给变量s和i 赋初始值为0和1;步骤3将变量i的当前值累加到 变量s中;步骤4使变量i在原值的基础上增加1; 步骤5判断i的值如果小于等于1000,重复做步骤 3和步骤4,构成一个循环,而当i的值不小于等于 1000时,循环结束,这时,变量s的值就是要求 的计算结果。
2.函数调用语句 函数调用语句由一次函数调用加一个分号(语句结 束标志)构成。例如: printf("This is a C Program."); 3.表达式语句 表达式语句由表达式后加一个分号构成。 表达式能构成语句是C语言的一大特色。最典型的 表达式语句是在赋值表达式后加一个分号构成的赋值 语 句 。 例 如 , “ num=5” 是 一 个 赋 值 表 达 式 , 而 “num=5;”却是一个赋值语句。
3.3 格式化输出函数printf()
程序运行中,有时候需要从外部设备(例如键盘)上得 到一些原始数据,程序计算结束后,通常要把计算结果发 送到外部设备(例如显示器)上,以便人们对结果进行分析。 我们把程序从外部设备上获得数据的操作称为“输入”, 而把程序发送数据到外部设备的操作称为“输出”。 不像其他的高级语言,C语言没有专门的输入/输出语 句,输入/输出的操作是通过调用C语言的库函数来实现的。 printf()函数是最常用的输出函数,它的作用是向计算机系 统默认的输出设备(一般指显示器)输出一个或多个任意指 定类型的数据。
3.1.2 算法的特征 通常,一个算法必须具备以下五个基本特征: (1) 有穷性。一个算法必须在它所涉及的每一种情 形下,都能在执行有限次的操作之后结束。 (2) 确定性。算法的每一步,其顺序和内容都必须 严格定义,而不能有任何的歧义。 (3) 有零个或多个输入。输入是算法实施前需要从 外界取得的信息,有些算法需要有多个输入,而有些 算法不需要输入,即零个输入。 (4) 有一个或多个输出。输出就是算法实施后得到 的结果,显然,没有输出的算法是没有意义的。 (5) 可行性。算法的每一步都必须是可行的,也就 是说,是能够由计算机执行的。
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

;取行李重量计价单位G ;运费M=G×3 ;暂存3G ;取回G ;G ≤ 5 ? ;是,转至WETC ;否则 M=3G+2(G-5)
;存运费 M
3.4.2多分支散转程序 根据多种输入条件或多种运算结果,转向不 同的处理程序。 通常用JMP @A+DPTR间接转移指令实现。 有两种设计方法: 1. 查转移地址表: 将转移地址列成表格,将表格的内容作转移 的目标地址。 2. 查转移指令表: 将转移到不同程序的转移指令列成表格, 判断条件后查表,转到表中指令执行。
A A=1 TAB+1 2
JPT
65H
21 AJMP PR0 10
47H B 65H 65H 70H
2×A 65H
TAB+2 A=2 TAB+3
JPT+2 02 AJMP PR1 20 JPT+4 41 AJMP PR2 20
MOV DPTR,#TAB ;置键码表首址 MOV A,#0 ;表的起始字节的偏移量为0 NEXT:PUSH ACC MOVC A,@A+DPTR ;A=键码表的编码 CJNE A,B,AGAN ;将B中值和键码表的值比较 POP ACC RL A ;如相等,序号乘2得分支表内偏移量 MOV DPTR,#JPT ;置分支表首址 JMP @A+DPTR AGAN:POP ACC ;不相等比较下一个 INC A ;序号加1 CJNE A,#5,NEXT SJMP $ ;键码查完还没有B中按键编码程序结束 JPT: AJMP PR0 ;分支转移表 AJMP PR1 TAB: DB 3AH,47H,65H,70H,8BH;键码表 AJMP PR2 END AJMP PR3 AJMP PR4
GH
20 43 25 FF
12 34
GH+2
GH+4
56 78 00 08
4.保留字节
标号:DS 数值表达式
在程序存储器中保留以标号为起始地址的若干
字节单元,单元数由数值表达式指定。例:
L1:DS 32 ; 从L1地址开始保留32个存储单元。
5. 等值指令 符号 EQU 表达式 表示EQU两边的量等值,用于为或标识符赋值。 X1 EQU 2000H 例: X2 EQU 0FH … MAIN: MOV DPTR,#X1 ; DPTR=2000H ADD A,#X2 ; A=A+0FH
2. 利用转移指令表实现转移 例3-8 设有五个按键编码分别为3AH、47H、65H、 70H、8BH,已存于B中,要据此键转向不同的处理 程序,分别为PR0 、PR1 、PR2、PR3、PR4。
分析: 键码列表(一字节),AJMP指令列表(二字节); B与键码表逐项相比,得序号,乘2得AJMP表的偏移地址;
第三章 MCS-51单片机汇编语言 程序设计
3.1 概述
一、二种程序语言 汇编语言:短、快;充分发挥硬件功能。 执行效率高 高级语言(C语言):长、慢;硬件控制麻烦; 编程效率高 单片机能执行的程序是机器语言(目标程序) 。
二、目标程序两种文件格式
用于写入单片机或仿真调试。
· BIN文件:二进制文件,机器码。
用JMP @A+DPTR(A先清零)即转移到PRn入口。 PR0 EQU 0110H PR1 EQU 0220H PR2 EQU 0330H …… ;用伪指令定义PRn的具体地址
MOV A,R3 ;R3→A 01 TAB ADD A,ACC ;A*2 10 MOV DPTR,#TAB TAB+2 02 PUSH ACC MOVC A,@A+DPTR ;取地址表中高字节 20 MOV B,A ;暂存于B .. INC DPL ;有问题!!! POP ACC 02 20 MOVC A,@A+DPTR ;取地址表中低字节 DPH DPL MOV DPL,A 例 R3=1的操作 MOV DPH,B ;DPTR为表中地址 CLR A ;A=0 JMP @A+DPTR ;转移 TAB:DW PR0,PR1,PR2,…..,PRn ;转移地址表
6. 位定义 符号 BIT 位地址 类似EQU指令,定义的是位操作数地址。 例:AIC BIT P1.1。
7.汇编结束
END
源程序段结束。
汇编程序对END指令后的内容不处理。
A51汇编程序其它伪指令:P50表3-1
3.3顺序程序
常用程序结构 顺序程序 分支程序 循环程序 子程序 顺序程序(简单程序),程序走向只有一条路径。
用JMP @A+DPTR转向AJMP指令,从而实现多分支转移。
设JPT的地址为001AH、PR0入口地址为0110H ,P39:2.4.2节, 求AJMP PR0的机器码: 001A=0000 0000 0001 1010 0110=0000 0001 0001 0000 0010 0001 0001 0000 (2110h )
2.字节定义 标号: DB 表达式,… 在程序存储器中以标号为起始地址 存放字节数据。 例: LN:DB 32,’C’,25H,-1
3. 字定义 标号:DW 表达式,… 在程序存储器中以标号为起始地址 存放字数据。低地址高字节! 例: GH :DW 1234H,5678H,08
地址 LN
数据
LN+1 LN+2 LN+3
书P51例3-2为(31)(30H)求补,也有问题!
例3-3 片内RAM的20H单元变量值为00H~05H,用查 表法 其平方值, 存入片内RAM的21H单元。 分析 :在程序存储器安排一张平方表,首地址为TAB, 以DPTR指向表首址,A存放变量值,利用查表指令 MOVC A,@A+DPTR,即可求得。 地址 数据 表中数据用BCD码存。 TAB 0 ORG 0000H MOV DPTR,#TAB TAB+1 1
六、汇编语言程序设计步骤 与书中不太一样
1、确定方案和计算方法 2、了解应用系统的硬件配置、性能指标
3、建立系统数学模型,确定控制算法和操作步骤 4、合理分配存储器单元和了解I/O接口地址 5、编制源程序 1)按功能模块设计程序,明确各 程序之间的相互关系 2) 用流程图表示程序结构和功能 3)程序中用注释说明指令在程序中 的作用,方便阅读、调试和修改
· HEX文件:INTEL公司定义,
地址、数据和校验码
ASCII码存储,可显示、打印
需用符号转换程序OHS51转换
三、两种语言的操作过程:图3-1
编译器C51
C语言程序
汇编语言 源程序
浮 动 地 址 目 标 程 序
绝对地址 目标程序 .BIN
· HEX
汇编器A51
连接/定位器 L51
符号转换程序 OHS51
1 开始
? N
Y
3.2 伪指令
一、 汇编语言指令类型 1. 机器指令:指令系统中的全部指令。每条机器
指令都有对应的机器代码,可以被CPU执行。
2. 伪指令: 汇编控制指令,没有机器信息。
3、宏指令
定义、调用
宏定义: 宏指令名
MACRO … ENDM … 宏指令名 … 宏指令名
高八位地址由P2指示。 程序如下页:
000FH
ORG 0000H MOV P2, #0H MOV R0, #0EH MOV R1, #0FH MOVX A, @R0 MOV 20H, A MOVX A, @R1 XCH A, 20H MOVX @R1, A MOV A, 20H MOVX @R0, A SJMP $ END
MOV A,20H MOVC A,@A+DPTR ;查表 MOV 21H,A SJMP $ TAB2: DB 00H,01H,04H,09H,16H,25H END 若平方值为两字节,程序应如何改?
若用MOVC A,@A+PC呢?
TAB+2 TAB+3 TAB+4 TAB+5
DPTR A
4 9 16H 25H
形式参数 ;被定义的程序段
宏调用:
实际参数 实际参数
二、常用伪指令及功能
1.起始指令 ORG nn
定义程序或数据块的起始地址,连续存放在程 序存储器中。
例: 指令地址 机器码 2000H 2002H 3000H 3001H 3002H 78 30 E6 23 64 41 源程序 ORG 2000H MAIN: MOV R0,#30H MOV A,@R0 … ORG 3000H TAB: DB 23H,100,‘A’
例3-1 外部数据存储器的000EH和000FH单元的内容交换
000EH
000EH
000FH
000EH 000FH
000FH
000EH
分析:
000FH 000EH 000FH 000EH 000FH 000EH
①只能用MOVX与A间传送;
②必须用中间变量(20H)暂存;
③低八位地址用R0、R1指示;
源程序要提供给一些附加信息,遵循汇编
程序的一些约定。用伪指令实现。
2、汇编的主要任务
1)确定程序中每条汇编语言指令的机器码
2)确定每条指令在存储器中的存放地址 3)语法检查,提供错误信息
4)生成目标执行文件(*.OBJ/*.HEX)、
列表文件(*.LST)、…….
地址 2000H 2002H 机器码 78 30 E6 源程序 ORG 2000H MAIN: MOV R0,#30H MOV A,@R0 …
M=
G×3 G×3 + (G-5)×2
;当G≤5 ; 当G>5
R2
(41H)
3G因重复使用,先暂存在R2。 流程见左, 程序如下页:
结束
ORG 0100H FRT: MOV A,40H MOV R3,A MOV B,#03H MUL AB MOV R2,A MOV A,R3 CJNE A,#05H,L1 SJMP WETC L1: JC WETC SUBB A,#05H RLC A ADD A,R2 MOV R2 ,A WETC:MOV 41H,R2 RET
相关文档
最新文档