单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,#,项目4 汇编语言程序设计,项目4 汇编语言程序设计,1,什么是程序设计?程序设计=结构+算法。,程序设计就像盖房子,数据结构就像砖、瓦,而算法就是设计图纸。你若想盖房子首先必须有原料(数据结构),但是这些原料不能自动地盖起了你想要的房子;你必须按照设计图纸(算法)上的说明一砖一瓦地去砌。这样你才能拥有你想要的房子。程序设计也一样,程序设计时你得按照程序规定的功能去编写,而程序的功能是实现就是算法的具体体现。所以通俗地说:你必须按照特定的规则,把特定的功能语句和基本结构按照特定的顺序排列起来,形成一个有特定功能的程序,这就是:程序设计=结构+算法。一般说来,计算机程序设计语言种类很多,不仅有机器语言和汇编语言,还有很多高级语言。对单片机而言,通常使用汇编语言或C语言进行程序设计,程序较大时一般采用C语言编写,但用汇编语言编写的程序执行的效率较高。程序设计完成后,然后利用计算机或人工方法将汇编语言或C语言程序转化为单片机可以执行的机器语言。转换前的汇编语言或C语言程序被称为源程序,转换后的机器语言程序被称为目标程序,转换过程也叫汇编过程,通过计算机或人工转换的方法又被称为计算机汇编或手工汇编。计算机汇编要使用专门的软件,叫汇编软件。,项目4 汇编语言程序设计,什么是程序设计?程序设计=结构+算法。项目4 汇编语言程序,2,4.1 源程序的编制,4.1.1程序设计步骤,在对单片机系统进行程序设计时,必须考虑硬件资源的配置,当硬件系统设计完成后,可以按照以下步骤进行程序设计。,1.预完成任务的分析,2.进行算法的优化,3.绘制程序流程图,4.分配资源,5.编写源程序,6.程序优化,7.编译,调试,修改和最后确定源程序,项目4 汇编语言程序设计,4.1 源程序的编制4.1.1程序设计步骤项目4 汇编语言程,3,用图形符号将总体设计思路及程序流向绘制在平面图上。从而使程序的结构关系直观明了,便于检查和修改,它直观清晰的体现了程序的设计思路,是程序设计的依据。,绘制流程图时,首先画出简单的功能流程图粗框图,再对功能流程图进行扩充和具体化,即对存储器标志位等单元做具体的分配和说明,把功能图上的每一个粗框图转化为具体的存储器或地址单元,从而绘制出详细的程序流程图。,流线,程序执行顺序流向线,表示处理功能,端点符号,程序的开始和结束符号,表示判断功能,判断符号,处理符号,连接符号,用来实现流程图之间的连接,程序流程图的绘制,项目4 汇编语言程序设计,用图形符号将总体设计思路及程序流向绘制在平面图上。从而使,4,4.1.2 汇编语言源程序的格式,汇编语言源程序是由若干语句组成的,每一语句可由4个部分组成:标号、操作码、操作数及注释。每一部分间以不同的分隔符分隔,语句格式如下:,标号: 操作码 目的操作数 源操作数 ;注释,其中 项为可选项,视具体的指令选用.,标号是表示该语句所在地址的标志符号,使用标号可方便程序中的其他语句访问该语句。标号由字母打头的1-8个字母数字串组成,但指令保留符、寄存器名、位址记忆符、伪指令符等都不能作标号使用。,操作码表示操作的性质,它是汇编指令中唯一不能缺省的部分。,操作数表示操作的对象,在一条语句中,操作数可能是空白或以逗号分开的几个。,注释是对语句或程序段功能的解释说明有助于的阅读和维护。,项目4 汇编语言程序设计,4.1.2 汇编语言源程序的格式项目4 汇编语言程序设计,5,4.1.3 汇编语言源程序的汇编,将汇编语言源程序“翻译”成机器语言目标程序的过程称为汇编,对单片机助记符的汇编有两种方法:人工汇编和机器汇编。,人工汇编是用人工查表将源程序译成机器码。一般分为两步进行。第一步将源程序中的指令逐条译成目标码,指令中的标号地址待求。第二步由伪指令求出标号所代表的具体地址,进行有关程序存储区的数据操作并进行偏移量的计算。,机器汇编是将源程序输入计算机后,由汇编程序实现翻译工作,产生相应的机器码。这是一种非常高效和方便的方法。,项目4 汇编语言程序设计,4.1.3 汇编语言源程序的汇编项目4 汇编语言程序设计,6,4.1.4伪指令,在机器汇编时,对汇编过程进行控制和指导的指令称为伪指令。在汇编过程中,伪指令供汇编程序识别和执行但不产生可执行的目标代码。如规定汇编生成的目标代码在ROM中的存放区域,给源程序符号、标号赋值,指示汇编结束等。 每种汇编程序都有自己的伪指令,标准的MCS-51定义的伪指令常用的有以下7条。,1.汇编其始地址伪指令ORG(Origin),格式: ORG 16位地址,功能: 规定该指令后的下一段源程序经汇编后生成的代码存放的起始地址。,例如,:,ORG 0500H,START,:,MOV A,R0,END,ORG伪指令总是出现在每段源程序或数据块的开始,汇编语言源程序中多处使用ORG指令,可使程序员把子程序、数据块存放在ROM的任何位置。每当ORG出现时,下条指令的存放地址由此重新定位,所以ORG定义地址的顺序应有小到大,且不能重叠。,项目4 汇编语言程序设计,4.1.4伪指令项目4 汇编语言程序设计,7,2.汇编结束伪指令END(End of Assembly),指令格式:标号:END,功能: 结束汇编语言源程序的操作。,在源程序中只能有一条END,END后所写的指令,汇编程序不予处理。,项目4 汇编语言程序设计,2.汇编结束伪指令END(End of Assembly),8,3.符号赋值伪指令EQU(EQUate),指令格式:字符名称 EQU 数或汇编符号,功能:将一个数或特定的汇编符号赋给指定的字符名称。,字符名称为一自定的符号,而不是标号,字符名称后无“:”。字符名称可用来作数据地址,立即数,位地址或者是一代码地址,其值可以是一个8位数,也可以是16位数。例如:,TEST EQU 20H,MOV A,TEST,这里字符名称TEST就代表了内部RAM 20H地址单元。又例如,:,A1 EQU 10H,MOV A,A1,这里A1代表片内RAM的直接地址单元10H。使用EQU伪指令可以把抽象的数字地址表示成有一定意义的符号,增强程序的可读性。,项目4 汇编语言程序设计,3.符号赋值伪指令EQU(EQUate)项目4 汇编语言,9,4.定义数据字节伪指令DB(Define Byte),格式:标号: DB 项或项表,项或项表是指一个字节,逗号隔开的8位二进制的数或字符串,或撇号括起来的ASCII字符串。,功能:从标号指定的地址单元开始,在程序存储器中存入一组8位二进制数,或者将一个数据表格存入程序存储器。这条伪指令汇编后影响程序存储器的内容。,例如,:,ORG 1100H,TAB,:,DB 01H,,,04H,,,09H,,,10H,DB 00001111B,,,1,,,A,,,BC,项目4 汇编语言程序设计,4.定义数据字节伪指令DB(Define Byte)项目,10,5.,定义数据字命令,DW(Define Word),格式:,标号:, DW,项或项表,功能:DW的功能和DB类似,DW是从标号指定的地址开始存放16位而非8位二进制数,存放时,数据字的高8位在前(低地址),低8位在后(高地址)。,例如,:,ORG 5000H,MOV A,,,#30H,ORG 5020H,ADDTAB:DW 1234H,,,100H,,,10,;,END,一条DB和DW语句定义的数表其数的个数不得超过80个。当数据的数目较多时,可使用多个定义命令。在MCS51程序设计应用中,常以DW来定义地址。,项目4 汇编语言程序设计,5.定义数据字命令DW(Define Word)项目4,11,6.预留存储区伪指令DS(Define Storage),格式:标号: DS 表达式,功能:本命令用于从指定地址开始,保留DS之后表达式的值所需数目的字节单元作为存储区以备后用。汇编时,对这些单元不赋值。,例如,:,ORG 0100H,MOV A,,,#50H,ADDRTABL:DS 05H,DB 20H,END,从标号ADDRTABL代表的地址开始,保留5个连续的ROM地址单元,第6个单元存放20H。,对MCS51单片机来说,DB,DW,DS伪指令只能对程序存储器使用,而不能对数据存储器进行初始化。,项目4 汇编语言程序设计,6.预留存储区伪指令DS(Define Storage),12,7.位地址赋值伪指令BIT,格式:字符名称 BIT 位地址,功能:本命令用于给字符名称赋以位地址。,其中位地址可以是绝对地址,也可以是符号地址(即位符号名称)。,例如: AQ BIT P1.0,A2 BIT 07H,这两条指令分别把P1.0的位地址赋给变量AQ,位地址07H赋给符号名A2,在其后的编程中AQ和A2就可以作为位地址使用。,项目4 汇编语言程序设计,7.位地址赋值伪指令BIT项目4 汇编语言程序设计,13,4.1.5程序设计技巧,1.模块化程序设计方法,单片机应用系统的程序一般由包含多个模块的主程序和各种子程序组成。每一程序模块都要完成一个明确的任务,实现某个具体的功能,如发送、接收、延时、打印、显示等。采用模块化的程序设计方法,就是将这些不同的具体功能程序进行独立的设计和分别调试,最后将这些模块程序装配成整体程序并进行联调。,项目4 汇编语言程序设计,4.1.5程序设计技巧项目4 汇编语言程序设计,14,把一个多功能的、复杂的程序划分为若干个简单的、功能单一的程序模块的程序设计方法具有明显的优点:,1)单个模块结构的程序功能单一,易于设计、编写、调试及修改;,2)有利于程序的优化和分工,从而可使多个程序员同时进行程序的编写和调试,加快软件研制进度;,3)提高了程序的阅读性和可靠性,使程序的结构层次一目了然,同时,4)对程序的修改可局部进行,其他部分可以保持不变,便于功能扩充和版本升级;,5)对于使用频繁的子程序可以建立子程序库,便于多个模块调用。,项目4 汇编语言程序设计,把一个多功能的、复杂的程序划分为若干个简单的、功能单一的,15,模块的划分有很大的灵活性,但也不能随意划分。划分时应遵循下述原则:,1)每个模块应具有独立的功能,能产生一个明确的结果,这就是单模块的功能高内聚性。,2)模块之间的控制耦合应尽量简单,数据耦合应尽量少,这就是模块间的低耦合性。控制耦合是指模块进入和退出的条件及方式,数据耦合是指模块间的信息交换(传递)方式、交换量的多少及交换的频繁程度。,3)模块长度适中。模块语句的长度通常在20条100条的范围较合适。模块太长时,分析和调试比较困难,失去了模块化程序结构的优越性;过短则模块的连接太复杂,信息交换太频繁,因而也不合适。,项目4 汇编语言程序设计,模块的划分有很大的灵活性,但也不能随意划分。划分时应遵循,16,2.程序设计技巧,1)尽量采用循环结构和子程序。,2)尽量少用无条件转移指令。,3)对于通用的子程序,考虑到其通用性,除了用于存放子程序入口参数的寄存器外,子程序中用到的其他寄存器的内容应压入堆栈(返回前再弹出) 进行现场保护,并要特别注意堆栈操作的压入和弹出的平衡。一般不必把标志寄存器压入堆栈。,4)对于中断处理子程序除了要保护程序中用到的寄存器外,还应保护标志寄存器。,5)累加器是信息传递的枢纽。,项目4 汇编语言程序设计,2.程序设计技巧项目4 汇编语言程序设计,17,4.2 程序结构,4.2.1 顺序程序,顺序结构是按照逻辑操作顺序,从某一条指令开始逐条顺序执行,直至某一条指令为止,无分支,也无循环。顺序结构是所有程序设计中最基本、最单纯的程序结构形式,在程序设计中使用最多,因而是一种最简单且应用最普遍的程序结构。一般实际应用程序远比顺序结构复杂得多,但它是组成复杂程序的基础和主干。,项目4 汇编语言程序设计,4.2 程序结构4.2.1 顺序程序项目4 汇编语言程序设计,18,【例4.1】将两个半字节数合并成一个一字节数。,设内部RAM40H、41H单元中分别存放着8位二进制数。要求取出两个单元的低半字节,合并成一个字节后,存入42H单元。,开始,(40H)内容送A,屏蔽高位,A与R1或后送入(42H),交换高低位,送入R1,(41H)内容送A,屏蔽高位,返回,图,4-1,例,1,程序流程图,项目4 汇编语言程序设计,【例4.1】将两个半字节数合并成一个一字节数。开始(40H),19,【例4.2】用顺序结构程序编写三字节无符号数的加法程序。,设被加数存放在: 40H(高字节),41H(中字节),42H(低字节),加数存放在: 43H(高字节),44H(中字节),45H(低字节),运算结果仍存在被加数单元中。,开始,取低字节数据,返回,相加后送回被加数单元,取中字节数据,带进位位相加后送回被加数单元,取高字节数据,带进位位相加后送回被加数单元,图,4-2,例,2,程序流程图,项目4 汇编语言程序设计,【例4.2】用顺序结构程序编写三字节无符号数的加法程序。开始,20,4.2.2 分支程序,通常,单纯的顺序结构程序只能解决一些简单的算术、逻辑运算,或者简单的查表、传送操作等。实际问题一般都是比较复杂的,总是伴随有逻辑判断或条件选择,要求计算机能根据给定的条件进行判断,选择不同的处理路径,从而表现出某种智能。,根据程序要求改变程序执行顺序,即程序的流向有两个或两个以上的出口,根据指定的条件选择程序流向的程序结构我们称为分支程序结构。,通常根据分支程序中出口的个数分为单分支结构程序(两个出口)和多分支结构程序(三个或三个以上出口)。,在MCS-51指令系统中,通过条件判断实现单分支程序转移的指令有JZ、JNZ、CJNE和DJNZ等。此外,还有以位状态为条件,进行程序分支的指令JC、JNC、JB、JNB和JBC等。使用这些指令,可以完成或为0、1,或为正、为负,以及相等、不相等各种条件判断,以实现程序有条件地转移。,项目4 汇编语言程序设计,4.2.2 分支程序项目4 汇编语言程序设计,21,1.两分支程序设计,【例4.3】两个无符号数比较(两分支)。内部RAM的30H单元和31H单元各存放了一个8位无符号数,请比较这两个数的大小,大数放在32H中。,开始,X-Y,Cy=1?,30H32H,31H32H,Y,N,结束,4-3 两数比较流程图,项目4 汇编语言程序设计,1.两分支程序设计开始X-YCy=1?30H32H31H,22,2.三分支程序设计,【例4.4】两个无符号数比较(三分支程序)。内部RAM的20H单元和30H单元各存放了一个8位有符号数,根据下列条件编程点亮相应的发光二极管,电路如图4-4所示,。,若(20H)=(30H),则P2.0管脚连接的黄色LED发光;,若(20H)(30H),则P2.1管脚连接的绿色LED发光;,若(20H)Y ?,黄灯点亮,Y,N,结束,N,Y,红灯点亮,绿灯点亮,项目4 汇编语言程序设计,2.三分支程序设计开始X=Y ?XY ?黄灯点亮YN结束N,23,3.散转程序,散转程序是指经过某个条件判断之后,程序有多个流向(三个以上)。MCS-51单片机指令系统中专门提供了散转指令,使得散转程序的编制更加简洁。,【例4.5】在例4.4的电路的基础上加两个开关组成简单的信号灯电路,如图4-6所示,试编程实现以下功能。,K0 K1,0 0 都按下,红黄绿灯全亮(状态1),0 1 K0单独按下,红灯亮(状态2),1 0 K1单独按下,绿灯亮(状态3),1 1 都未按下,黄灯亮(状态4),项目4 汇编语言程序设计,3.散转程序项目4 汇编语言程序设计,24,开始,读P1口引脚状态,A,转移指令表基地址,DPTR,屏蔽无关位,散转移,状态1,状态2,状态3,状态4,返回,返回,返回,返回,项目4 汇编语言程序设计,开始读P1口引脚状态A转移指令表基地址DPTR屏蔽无关位,25,4.2.3循环程序,循环结构程序是把需要多次重复使用的程序段,利用转移指令反复转向该程序段,从而大大缩短程序代码,减少占用程序空间,程序结构也大大优化。循环程序可以分为,单重循环,和,多重循环,,其通常有两种编制方法:一种是先执行后判断,另一种是先判断后执行。如图4-8所示。,开始,初始化,循环处理,循环控制,循环完成?,N,Y,循环结束,结束,开始,初始化,循环控制,循环完成?,N,Y,循环结束,结束,循环处理,项目4 汇编语言程序设计,4.2.3循环程序开始初始化循环处理循环控制循环完成?NY循,26,1.单重循环程序设计,【例4.6】 数据极值查找程序。设内部RAM 从30H单元开始存放有8个数,找出其中最大的数,放到60H单元。,解:极值查找操作的主要内容是进行数值大小比较。假定在比较过程中,以A存放大数,与之逐个比较的另一个数放在50H单元。采用先执行后判断的结构,首先设定比较次数,在比较结束后,把查找到的最大数送到60H单元。程序流程图如图4-9所示。,开始,数据区首地址,R0,读下一个数,50H,(50H),A,(A)(50H)?,N,Y,A,(60H),结束,数据个数,R7,读第一个数,A,R7,-,1,R7,R7-1=0?,N,Y,项目4 汇编语言程序设计,1.单重循环程序设计开始数据区首地址R0读下一个数50H,27,【例4.7】 将内部RAM中30H单元开始的数据传送到外部RAM1200H开始的存储空间内,直到发现数据100停止传送。开始A=100?取内部RAM数据AYN结束传送数据到外部RAM图4-10,例4.7流程图,解:由于循环次数事先不知道,但是循环条件可以测试到,可以采用先判断后执行的程序结构。流程图如图4-10所示。,开始,A=100?,取内部RAM数据,A,Y,N,结束,传送数据到外部RAM,图4-10,例4.7流程图,项目4 汇编语言程序设计,【例4.7】 将内部RAM中30H单元开始的数据传送到外,28,2.多重循环程序设计定时程序,在循环内套循环的程序结构称多重循环,或称循环嵌套。若把每重循环的内部看作一个整体,则多重循环的结构与单重循环的结构是一样的,也由四部分组成。,多重循环的执行过程是从内向外逐层展开的。内层执行完全部循环后,外层则完成一次循环,逐次类推。因此,每执行一次外层循环,内层必须重新设置初值,故每层均包含完整的循环程序结构。层次必须分明,层次之间不能有交叉;否则,将产生错误。,定时程序是一种很典型的多重循环程序,其在单片机汇编语言程序设计中使用非常广泛,例如定时检测、定时扫描、定时中断等。所谓定时就是让CPU做一些与主程序功能无关的操作(例如将一个数字逐次减1直到为0)来空耗掉CPU的时间来达到延时的目的。由于我们知道CPU执行每条指令的准确时间,因此执行整个延时程序的时间也可以精确计算出来。也就是说,我们可以写出延时长度任意而且精度相当高的延时程序。,项目4 汇编语言程序设计,2.多重循环程序设计定时程序项目4 汇编语言程序设计,29,【例4.8】设计一个延时50ms的程序,设单片机时钟晶振频率为fosc=12MHz。,解:延时程序一般采用循环程序结构编程,通过确定循环程序中的循环次数和循环程序段两个因素来确定延时时间。题目给定fosc=12MHz,那么机器周期的计算方法:T机器=12T时钟=12(1/12M) =1s。,下面就是一个最简单的单循环定时程序:,MOV R7,#TIME,LOOP: NOP,NOP,DJNZ R7,LOOP,NOP指令的机器周期为1,用来提高定时精度,DJNZ指令的机器周期为2,故一次循环共4个机器周期。一个机器周期是1S,则一次循环的延迟时间为4S。上面程序总的延迟时间为4time(S)。本程序的实际延迟时间取决于装入寄存器R7的定时时间常数time。R7是8位寄存器,故这个程序的最长定时时间为25641020(S),即定时范围是41024S。可见单循环定时程序的时间延迟较小。,项目4 汇编语言程序设计,【例4.8】设计一个延时50ms的程序,设单片机时钟晶振频率,30,为了加长定时时间,通常采用多重循环方法。流程图如图4-11所示。开始外循环次数TIME1R7内循环次数TIME2R6空操作R6-1=0?NYR7-1=0?NY返回图4-11多重循环流程图,程序如下:,MOV R7,,,TIME1,LOOP2,:,MOV R6,,,TIME2,LOOP1,:,NOP,DJNZ R6,,,LOOP1,DJNZ R7,,,LOOP2,RET,最大定时时间计算公式为:,(,2562,2,2,),256,1,132097,(,S,),若定时,50ms,,采取合适的,TIME1,和,TIME2,即可,如,TIME1=200,和,TIME2=123,。,项目4 汇编语言程序设计,为了加长定时时间,通常采用多重循环方法。流程图如图4-1,31,循环控制:在重复执行循环体的过程中,不断修改和判别循环变量,直到符合循环结束条件。一般情况下,循环控制有以下几种方式:,(1)计数循环如果循环次数已知,用计数器计数来控制循环次数,这种控制方式用得比较多。循环次数要在初始化部分予置,在控制部分修改,每循环一次计数器内容减1。,(2)条件控制循环在循环次数未知的情况下,一般通过设立结束条件来控制循环的结束。,(3)循环结束处理:这部分程序用于存放执行循环程序所得结果以及恢复各工作单元的初值等。,项目4 汇编语言程序设计,循环控制:在重复执行循环体的过程中,不断修改和判别循环变,32,4.2.4 查表程序,在微型机控制系统中,有些参数的计算是非常复杂的,用计算法计算不仅程序长,难于计算,而且需要耗费大量时间。还有一些非线性参数,它们不是用一般算术运算就可以计算出来,而是要涉及到指数,对数,三角函数,以及积分,微分等运算。所有这些运算用汇编语言编程计算都比较复杂,有些甚至无法建立相应的数学模型。为了解决这些问题,可以采用查表法。,所谓查表法,就是把事先计算或测得的数据按一定顺序编制成表格,查表程序的任务就是根据被测参数的值或者中间结果,查出最终所需要的结果。它具有程序简单,执行速度快等优点。,查表程序在微型机控制系统中应用非常广泛,例如,在键盘处理程序中,查找按键相应的命令处理子程序的入口地址;在LED显示程序中,获得LED数码管的显示代码;在一些快速计算的场合,根据自变量的值,从函数表上查找出相应的函数值以及实现非线性修正、代码转换等等。所有这些应用,都需采用查表技术。,项目4 汇编语言程序设计,4.2.4 查表程序项目4 汇编语言程序设计,33,【例4.8】查表计算函数y=x!(x=0、1、2、7)的值,x,Y值,Y地址,0,00,TABLE,00,TABLE+1,1,01,TABLE+2,00,TABLE+3,2,02,TABLE+4,00,TABLE+5,3,06,TABLE+6,00,TABLE+7,4,24,TABLE+8,00,TABLE+9,5,20,TABLE+A,01,TABLE+B,6,20,TABLE+C,07,TABLE+D,7,40,TABLE+E,50,TABLE+F,项目4 汇编语言程序设计,【例4.8】查表计算函数y=x!(x=0、1、2、7)的,34,4.2.5,子程序,在实际的程序设计中,常会遇到多次应用的、完成相同的某种基本运算或操作的程序段。如果每用一次都从头编写一次,这不仅麻烦,使程序冗长,而且浪费存储空间,还使程序的出错率增加,给程序的调试带来困难。,所以,在实际的程序设计中,将那些需多次应用的、完成相同的某种基本运算或操作的程序段从整个程序中独立出来,单独编制成一个程序段,尽量使其标准化,并存放于某一存储区域;需要时通过调用指令进行调用。这样的程序段,称为子程序,如我们在实训中的延时子程序。,项目4 汇编语言程序设计,4.2.5 子程序项目4 汇编语言程序设计,35,子程序作为一个具有独立功能的程序段,编程时需遵循以下原则:,1.子程序的第一条指令必须有标号,明确子程序入口地址。,2.以返回指令RET结束子程序。,3.简明扼要的子程序说明部分。,4.较强的通用性和可浮动性,尽可能避免使用具体的内存单元和绝对转移地址等。,5.注意保护现场和恢复现场。,另外,在编制子程序前,最好以程序注释的形式对子程序进行说明,说明内容如下:,1.子程序名:提供给主程序调用的名字。,2.子程序功能:简要说明子程序能完成的主要功能。,3.入口参数:主程序需要向子程序提供的参数。,4.出口参数:子程序执行完之后向主程序返回的参数。,5.占用资源:该子程序中使用了那些存储单元、寄存器等。,项目4 汇编语言程序设计,子程序作为一个具有独立功能的程序段,编程时需遵循以下原则:,36,勤检查,重整改,除隐患,保安全。,11月-24,11月-24,Monday, November 18, 2024,爱惜原料一点一滴,包装很重要。,23:13:03,23:13:03,23:13,11/18/2024 11:13:03 PM,实施,ISO9000,标准,规范企业管理行为。,11月-24,23:13:03,23:13,Nov-24,18-Nov-24,疏忽一时痛苦一世。,23:13:03,23:13:03,23:13,Monday, November 18, 2024,安全的本质是生命,安全的意义是效益。,11月-24,11月-24,23:13:03,23:13:03,November 18, 2024,安全来于警惕事故出于麻痹。,2024年11月18日,11:13 下午,11月-24,11月-24,潮水没过礁石终究要暴露,麻痹掩盖隐患早晚要伤人。,18 十一月 2024,11:13:03 下午,23:13:03,11月-24,安全第一,预防为主,生命宝贵,安全第一。,十一月 24,11:13 下午,11月-24,23:13,November 18, 2024,精益求精,铸造品质典范。,2024/11/18 23:13:03,23:13:03,18 November 2024,贯标九千,飞越二千。,11:13:03 下午,11:13 下午,23:13:03,11月-24,信誉来源于质量,质量来源于素质。,11月-24,11月-24,23:13,23:13:03,23:13:03,Nov-24,人类生活在质量的呵护之下。,2024/11/18 23:13:03,Monday, November 18, 2024,注意机械伤害,提防行车伤人,树立法制观念,坚持安全生产。,11月-24,2024/11/18 23:13:03,11月-24,谢谢大家!,勤检查,重整改,除隐患,保安全。9月-239月-23Frid,37,