计算机原理及应用.ppt
《计算机原理及应用.ppt》由会员分享,可在线阅读,更多相关《计算机原理及应用.ppt(29页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、3.4 汇编语言程序设计一、汇编语言的特点与语句格式汇编语言的特点与语句格式 编程语言:机器语言、汇编语言、高级语言汇编语言、高级语言 1、汇编语言、汇编语言特点:汇编语言程序代码生成效率高,运行速度快;汇编语言程序的开发难度较大;汇编语言控制的实时性好;汇编语言的可移植性较差;2、汇编语言的语句格式:标号:操作码 操作数;注释 二、汇编语言程序设计的特点二、汇编语言程序设计的特点1、要求程序员要数据、程序空间的分配与使用作出具体的安排;2、要求开发人员具有较好的硬件知识;3、汇编语言程序设计的技巧较高 1.建立数学模型;2.确定算法;3.绘制流程图;4.确定数据结构;5.编写源程序;6.调试
2、程序。三、汇编语言程序设计步骤:三、汇编语言程序设计步骤:四、评价标准:四、评价标准:1.程序执行时间;2.内存占用量;3.逻辑性与可读性4.可扩展性5.可靠性。五、汇编语言开发过程五、汇编语言开发过程3、连接程序u如果汇编语言产生浮动代码(由A51汇编产生的OBJ文件)u则由连接程序形成执行代码。1、汇编语言源程序u由编辑软件建立,是ASCII文件u符合汇编语言规范u扩展名为ASM或A514、调试程序u一般在开发系统下调试。u开发系统:TMSD清华大学计算机工厂。周立功单片机()、Keil软件包。u调试:代码调试,符号调试。2、汇编程序u将汇编程序翻译成机器码u形成HEX文件5、固化u由将目
3、标程序转化成HEX格式或二进制映像文件u由编程器固化,嵌入到目标板中五、汇编语言开发过程五、汇编语言开发过程2、语句格式的规定u指令语句(4个字段)标号标号:助记符助记符 操作数操作数;注释;注释u伪指令语句(4个字段)名字名字 定义符定义符 参数参数 ;注释;注释1、语句的三种类型u指令语句:指令语句:汇编时,一条指令产生一个目标代码;u伪指令语句:伪指令语句:服务于汇编语言,汇编时不对应目标代码;u宏指令语句:宏指令语句:用来代替源程序中重复使用的程序段汇编时,产生相应的目标码。六、汇编语言伪指令六、汇编语言伪指令1、程序段起始说明:ORG标号:ORG 16位地址 例:ORG 1000H
4、START:MOV A,#12H指定程序的起始地址(1000H)如果地址用标号:ORG BEGINPROG :则程序起始于浮动地址2、汇编结束:END标号:END位于程序最后,表示汇编结束子程序中可不使用标号3、字节数据定义伪指令DB(Define Byte)和DW例:TAB DB 0,4,8,16,32 数据存入TAB为起始地址的连 续字节字节存储单元中如DB改成DW,则按字存放数据4、等值伪指令EQU(Equale):例:DDR EQU 1020H(不可改)5、保留存储区说明伪指令例:STA DS 10H从STA开始保留10H个单元备用6、位地址符号定义伪指令BIT QIDONG BIT
5、P1.0 FLAG BIT 20H 3.5.1 3.5.1 汇编语言程序的基本结构形式汇编语言程序的基本结构形式常采用以下几种基本结构:常采用以下几种基本结构:顺序结构、分支结构和循环结构,再加上广泛使用的子程序和中断顺序结构、分支结构和循环结构,再加上广泛使用的子程序和中断服务子程序。服务子程序。1 1顺序结构顺序结构 2 2分支结构分支结构 程序中含有转移指令,程序中含有转移指令,无条件分支,有条件分支无条件分支,有条件分支。有条件分支又分为:有条件分支又分为:单分支单分支结构和结构和多分支多分支结构。结构。3 3循环结构循环结构 4 4子程序子程序 5 5中断服务子程序中断服务子程序3.
6、5 汇编语言实用程序设计 3.5.1 3.5.1 顺序程序设计顺序程序设计(一)数据传送程序设计u例:在代码段中,以CSTR单元开始连续存放一个以NULL(ASCII码0)为结束标志的字符串,将其传送到以STR开始的内部RAM中,试编程。u说明:1、伪指令DB定义字符串,最后一个字节为标志NULL。2、由DPTR寻址源串,用MOVC指令取代码段中的数据。3、R0为目的串指针,寻址内部RAM。&思考题:如何将代码段中的字思考题:如何将代码段中的字符串传递到外部符串传递到外部RAM中中?u程序:uSTR EQU 30HuMCSTR:MOV R0,#STRu MOV DPTR,#CSTRuMCSTR
7、1:CLR Au MOVC A,A+DPTRu JZ MCSTR2u MOV R0,A;内部RAMu INC R0 u INC DPTR u SJMP MCSTR1uMCSTR2:RETu CSTR:DB HELLO,0顺序程序设计顺序程序设计例例:单字节压缩单字节压缩BCD码转二进制码子程序码转二进制码子程序:设两个设两个BCD码码d1d0表示的两位十进制数压缩存储在表示的两位十进制数压缩存储在R2中,转换结果存于中,转换结果存于R2。算法:二进制码算法:二进制码=d1*10+d0 BCD2B:ORG4000HMOVA,R2ANLA,#0F0HSWAP AMOVB,#0AHMULABMOVR
8、3,AMOVA,R2ANLA,#0FHADDA,R3MOVR2,ARET 特点是程序中含有转移指令,转移指令有分为特点是程序中含有转移指令,转移指令有分为无条件转移无条件转移和和有有条件转移条件转移,因此分支程序也可分为无条件分支转移程序和有条,因此分支程序也可分为无条件分支转移程序和有条件分支转移程序。有条件分支转移程序按结构类型来分,又分件分支转移程序。有条件分支转移程序按结构类型来分,又分为为单分支转移单分支转移结构和结构和多分支转移多分支转移结构。结构。3.5.2 3.5.2 分支结构分支结构29u单分支指令:JZ、JB、JC、SJMP寻址范围(rel):-128127Bu多分支指令:
9、JMP A+DPTR(256个)DPTR转移程序首地址转移程序首地址CJNE A,direct,rel(共4条)A、单分支转移结构单分支转移结构仅有两个出口,两者选一。仅有两个出口,两者选一。例例 求单字节有符号数的二进求单字节有符号数的二进制补码。制补码。参考程序:参考程序:CMPT:JNB Acc.7,RETURN;(;(A)0,不需转换,不需转换MOV C,Acc.7;符号位保存;符号位保存CPL A;(;(A)求反,加)求反,加1ADD A,#1;MOV Acc.7,C;符号位存;符号位存A的最高位的最高位RETURN:RET此外,单分支选择结构还有如图此外,单分支选择结构还有如图4-
10、44-4、图、图4-54-5等所示的几种形式:等所示的几种形式:程序的判别部分有两个以上的出口流向,常见的有两种类型。例:在累加器A中的存放一个07的数据,由该数据控制程序转向转向8个子程序中的一个。Y程序清单:YSTART:ANL A,#07H;屏蔽高5位Y MOV B,#3 ;LJMP为3字节Y MUL ABY MOV DPTR,#BRNHY JMP A+DPTRYBRNH:LJMP PROC1Y LJMP PROC2Y LJMP PROC3Y LJMP PROC4Y LJMP PROC5Y LJMP PROC6Y LJMP PROC7Y LJMP PROC8说明:uPROC1PROC8是
11、8个子程序名。(三)多分支程序设计多分支程序设计例题:多分支程序设计例题:有符号数X存于内部RAM的DATA单元,Y存于FUNC单元,按以下要求编程实现给Y赋值。绘出程序框图。程序清单:ORG4000HMOVA,DATA;取出X送AJZ COMP;若X=0则转移到COMPJNBACC.7,POSI;若X0则转移到POSIMOVA,#0FFH;若X0时A=1COM:MOV FUNC,A;存函数Y值HERE:SJMPHERH;结束 循环程序设计循环程序设计特点是程序中含有可以反复执行的程序段,该程序段通常称为特点是程序中含有可以反复执行的程序段,该程序段通常称为循环体。例如求循环体。例如求100个
12、数的累加和,则没有必要连续安排个数的累加和,则没有必要连续安排100条条加法指令,可以只用一条加法指令并使其循环执行加法指令,可以只用一条加法指令并使其循环执行100次。次。(1)可大大缩短程序长度()可大大缩短程序长度(2)使程序所占的内存单元数量少)使程序所占的内存单元数量少(3)使程序结构紧凑和可读性变好。)使程序结构紧凑和可读性变好。一、循环程序的结构一、循环程序的结构(四部分)四部分)1循环初始化循环初始化循环初始化程序段用于完成循环前的的准备工作。例如,循环循环初始化程序段用于完成循环前的的准备工作。例如,循环控制计数初值的设置、地址指针的起始地址的设置、为变量预控制计数初值的设置
13、、地址指针的起始地址的设置、为变量预置初值等。置初值等。2循环处理循环处理循环程序结构的核心部分,完成实际的处理工作,是需反复循循环程序结构的核心部分,完成实际的处理工作,是需反复循环执行的部分,故又称循环体。这部分程序的内容,取决于实环执行的部分,故又称循环体。这部分程序的内容,取决于实际处理问题的本身。际处理问题的本身。一、循环程序的结构一、循环程序的结构(四部分)四部分)3循环控制循环控制在重复执行循环体的过程中在重复执行循环体的过程中,不断修改循环控制变量,直到符合不断修改循环控制变量,直到符合结束条件结束条件,就结束循环程序的执行。循环结束控制方法分为循环就结束循环程序的执行。循环结
14、束控制方法分为循环计数控制法和条件控制法计数控制法和条件控制法4循环结束循环结束这部分是对循环程序执行的结果进行分析、处理和存放。这部分是对循环程序执行的结果进行分析、处理和存放。二、循环结构的控制二、循环结构的控制 图图4-8是计数循环控制结构是计数循环控制结构(until 型型)图图4-9是条件控制结构是条件控制结构(do while 型型)特点:u循环体至少执行一次;u初始化,设定计数初值等;u循环次数,由计数器决定;u计数器,减1计数,回0结束。MCS-51的指令系统提供了功能极强的循环控制指令:DJNZ Rn,rel;DJNZ direct,rel;1计数循环结构计数循环结构(unt
15、il 型型)例:软件延时子程序例:软件延时子程序DELAY:MOV R2,#data ;指令周期数指令周期数=1DELAY1:DJNZ R2,DELAY1;指令周期数指令周期数=2RET延时时间延时时间=1(第一条指令周期)(第一条指令周期)+(R2)2(周期数)(周期数)延时范围:延时范围:3513个机器周期,由个机器周期,由(R2)决定决定影响影响CPU工作效率工作效率注意:软件延时程序,不允许有中断,否则将严重影响定时的准确注意:软件延时程序,不允许有中断,否则将严重影响定时的准确性。性。计数循环结构程序设计:计数循环结构程序设计:嵌套循环:嵌套循环:2重以上的循环,内外层分明,且不能交
16、叉重以上的循环,内外层分明,且不能交叉例例2、定时程序如下:、定时程序如下:MOV R5,#TIME1 LOOP2:MOV R4,#TIME2 LOOP1:NOP NOP DJNZ R4,LOOP1 DJNZ R5,LOOP2 RET 该定时程序的执行时间为:该定时程序的执行时间为:T=(1+1+2)*TIME2+1+2)*TIME1+1)*T0 其中其中 T0为单片机的机器周期为单片机的机器周期 嵌套循环:嵌套循环:2重以上的循环,内外层分明,且不能交叉重以上的循环,内外层分明,且不能交叉例例1、50ms延时程序延时程序(设系统为设系统为12M的晶振的晶振)DELAY:MOV R7,#200
17、 DELAY_1:MOV R6,#123 NOP DELAY_2:DJNZ R6,DELAY_2 DJNZ R7,DELAY_1 RET 计算:【(123*2+1+1)+2】*200=250*200us+1例例 设有一串字符,依次存放在内部RAM从30H单元开始的连续单元中,该字符串以0AH为结束标志,编写测试字符串长度的程序。(同前)2条件控制结构条件控制结构(do while 型型)特点:当第一次条件不成立时,循环体一次也不执行3.5.4 3.5.4 子程序的设计子程序的设计一、子程序设计原则和应注意的问题一、子程序设计原则和应注意的问题 一种能完成某一特定任务的程序段。其资源要为所有调用
18、程序共享。因此,一种能完成某一特定任务的程序段。其资源要为所有调用程序共享。因此,子程序在结构上具有独立性和通用性,在编写子程序时应注意以下问题:子程序在结构上具有独立性和通用性,在编写子程序时应注意以下问题:1子程序的首条指令的地址称为子程序入口地址。该指令前必须有标号。子程序的首条指令的地址称为子程序入口地址。该指令前必须有标号。2主程序调用子程序,主程序调用子程序,两条子程序调用指令:两条子程序调用指令:(1)绝对调用指令:)绝对调用指令:ACALL addr11(2)长调用指令:)长调用指令:LCALL addr163注意设置堆栈指针和现场保护注意设置堆栈指针和现场保护4最后一条指令必
19、须是最后一条指令必须是RET指令指令5子程序可以嵌套,即子程序可以调用子程序子程序可以嵌套,即子程序可以调用子程序6在子程序调用时,还要注意参数传递的问题在子程序调用时,还要注意参数传递的问题 二、二、子程序的基本结构子程序的基本结构 MAINMAIN:;MAINMAIN为主程序或调用程序标号为主程序或调用程序标号 LCALL SUB LCALL SUB;调用子程序;调用子程序SUBSUB SUB:PUSH PSW;现场保护;现场保护PUSH ACC;子程序处理程序段子程序处理程序段POP ACC;现场恢复;现场恢复POP PSW;RET;最后一条指令必须为;最后一条指令必须为RETP87 例
20、例7 将将HEX单元存放的两个十六进制数分别转换为单元存放的两个十六进制数分别转换为ASCII码(自己码(自己阅读)阅读)3.6 程序设计举例 3.6.1 码制转换程序设计u在单片机应用程序的设计中,经常涉及到各种码制的转换问题。在单片在单片机应用程序的设计中,经常涉及到各种码制的转换问题。在单片机系统内部进行数据计算和存储时,经常采用二进制码,具有运算方便、机系统内部进行数据计算和存储时,经常采用二进制码,具有运算方便、存储量小的特点。在输入存储量小的特点。在输入/输出中,按照人的习惯均采用代表十进制数输出中,按照人的习惯均采用代表十进制数的的BCDBCD码(用码(用4 4位二进制数表示的十
21、进制数)表示。此外,打印机要打印位二进制数表示的十进制数)表示。此外,打印机要打印某数字字符,则需要将该数字的二进制码转换为该字符的某数字字符,则需要将该数字的二进制码转换为该字符的ASCIIASCII码,才码,才能送到打印机去打印。能送到打印机去打印。二进制码到二进制码到BCD码之间的转换码之间的转换 BCD码有两种形式:一种是码有两种形式:一种是1个字节放个字节放1位位BCD码码,它适用于,它适用于显示或输出,一种是显示或输出,一种是压缩的压缩的BCD码码,即,即1个字节放两位个字节放两位BCD码,码,可以节省存储单元。可以节省存储单元。二(十六)进制码与二(十六)进制码与ASCII码之间
22、的转换(教材例题)码之间的转换(教材例题)累加器A0HASCII码入口出口Y程序段:YHASC:ANL A,#0FHY ADD A,#90HY DA A ;(A)9时起作用Y ADDC A,#40HY DA A ;(A)=9时起作用Y RET 1、十六进制转换成ASCII码输入:(A)中存放一位十六进制;出口:(A)返回ASCII值2、ASCII码转换成十六进制数输入:(A)中存放ASCII码输出:(A)中返回十六进制Y程序:YATOH:CLR CY SUBB A,#30H Y CJNE A,#10,ATOH1YATOH1:JC ATOH2 ;(A)9YATOH2:RET 3.6.1 码制转换
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算机 原理 应用
限制150内