第四章程序设计.ppt
《第四章程序设计.ppt》由会员分享,可在线阅读,更多相关《第四章程序设计.ppt(33页珍藏版)》请在三一文库上搜索。
1、,一、汇编语言源程序的汇编,源程序 (汇编指令程序),目标程序 (机器码指令程序),汇编指令与机器码指令有一一对应的关系。,第四章 汇编语言程序设计,4-1 汇编语言源程序的汇编与伪指令,汇编有两种方法:手工汇编、机器汇编。,1、手工汇编: 第一次汇编:确定地址,翻译成各条机器码,字符标号原样写出; 第二次汇编:标号代真,将字符标号用所计算出的具体地址值或偏移量代换。,源程序,目标程序,地址,ORG 1000H START:MOV R0,2FH MOV R2,#00H MOV A,R0 MOV R3,A INC R3 SJMP NEXT LOOP:INC R0 CJNE R0,#44H,NEX
2、T INC R2 NEXT:DJNZ R3,LOOP MOV 2AH,R2 SJMP $ END,第一次汇编,第二次汇编,1000 A82F 1002 7A00 1004 E6 1005 FB 1006 0B 1007 80NEXT 1009 08 100A B644NEXT 100D 0A 100E DBLOOP 1010 8A2A 1012 80FE,A82F 7A00 E6 FB 0B 8005 08 B64401 0A DBF9 8A2A 80FE,2、机器汇编 两次扫描过程: 第一次扫描:检查语法错误,确定符号名字; 建立使用的全部符号名字表; 对每条指令查一次表,将指令码存入。 第
3、二次扫描:是在第一次扫描基础上,将符号地址转 换成地址(代真);,完成翻译工作的软件称为“汇编程序”。 注意与通常所说的“汇编语言源程序”或“汇编指令程序”的区别。,伪指令是对源程序的汇编过程进行控制的指令,但其在汇编中不产生机器码。 故称为伪指令。,二、伪指令,1、起始地址伪指令 ORG addr16 用于规定目标程序段或数据块的起始地址, 设置在程序开始处。 2、汇编结束伪指令 END 告诉汇编程序,对源程序的汇编到此结束。 一个程序中只出现一次,在末尾。,3、赋值伪指令 EQU 告诉汇编程序,将汇编语句操作数的值赋予本语句的标号。 格式 标号名称 EQU 数值或汇编符号 “标号名称”在源
4、程序中可以作为数据地址、代码地址、位地址 前面加上#可当作立即数。 先定义后使用,放在程序开头。 4、定义字节伪指令 DB(define byte) 告诉汇编程序从指定的地址单元开始,定义若干字节存储单 元并赋初值。 格式 标号: DB 字节数据或字节数据表,例、 ORG 1000H PIOI:DW 7654H,12,6、数据地址赋值伪指令 DATA 将表达式指定的数据地址赋予规定的字符名称 格式: 字符名称 DATA 表达式 注:该指令与EQU 指令相似,只是,可先使用后定义, 放于程序开头、结尾均可。,5、定义字伪指令 DW(define word) 从指定地址开始,定义若干个16个位数据
5、,高八位存入低地址,低八位存入高地址。,(1000H)=76H, (1001H)=54H, (1002H)=00H, (1003H)=0CH,7、定义空间伪指令 DS(define store) 从指定地址开始,保留由表达式指定的若干字节空间作 为备用空间。 格式: 标号: DS 表达式 例2、 ORG 1000H DS 0AH DB 71H,11H,12H ;从100AH开始存放 ;71H、11H、12H。,8、位地址赋值伪指令 BIT 将位地址赋予规定的字符名称。 格式: 字符名称 BIT 位地址,例3、 X1 BIT P1.2 相当于 X1 EQU P1.2,基本要求: 程序编写做到:占
6、用存储空间少;运行时间短; 程序的编制、调试及排错所需时间短;结构清晰,易读、易于移植。,常见基本结构: 顺序结构 分支结构 循环结构,4-2 汇编语言源程序的 基本结构与应用举例,语句 3,语句 2,顺序结构,入口,语句 1,出口,分支结构,入口,条件满足否?,分支 1,出口,Y,N,分支 2,循环结构,入口,处理,修改条件,条件满足否?,Y,出口,N,一、顺序程序 例1、设在外RAM的60H单元存有1个字节代码,要求将其分解成两个4位字段,高4位存入原单元的低4位,其低4位存入61H单元的低4位,且要求这两个单元的高4位均为0,试编制完整程序。,分析:,# # # # ¥ ¥ ¥ ¥, ,
7、 ¥ ¥ ¥ ¥,开始,A(60H),BA,考虑将A中内容用两个寄存器存放,然后便可对A的不同部分进行处理了。,屏蔽A低四位,(60H)A,AB,屏蔽A高四位,(61H)A,结束,解: ORL 1000H MODE:MOV R0,#60H MOVX A,R0 MOV B,A ANL A,#0F0H SWAP A MOVX R0,A ANL B,#0FH MOV A,B INC R0 MOVX R0,A END,因为是外部数据传送,所以必须使用间接寻址方式,考虑工作寄存器更为快速方便。,二、分支结构与分支程序设计 分支结构分为三种基本形式:,条件为真?,过程S,条件为真?,S1,Y,N,Y,N,
8、S2,条件k=?,S2,S1,Sn,0,0,1,n,双向分支之一,双向分支之二,多向分支,这个更常用,解:本题关键是判a是正数,还是负数; 根据ACC.7判断。 ORG 1000H JB ACC.7,ADDAB SUBAB: CLR C SUBB A,B SJMP DONE ADDAB: ADD A,B DONE: SJMP END,例2、设a存放在累加器A中,b存放在寄存器B中,要求按下式 计算Y值,并将结果Y存于累加器A中,试编写程序。 a-b (a0) a+b (a0),a0?,A a+b,Y,N,A a-b,Y =,开始,结束,这种简单程序可以不用列流程,而直接编程,条件k=?,S2,
9、S1,Sn,0,0,1,n,多向分支,书例4.2.7,某条件的多值情况,可按多向分支,A0?,(FUNC) A,Y,N,A 1,开始,结束,A (VAR),A=0?,A1,N,Y,也可按多次 两向分支,先判断后赋值,A0?,(FUNC) A,Y,N,A R0,开始,结束,A (VAR),A=0?,R0 1,N,Y,R01,第二次分支前在此处先赋值,但不可把值赋给A,因为A此处存储输入值,暂不能丢掉.,先赋值后判断,例3、根据R3的值,控制转发同8个分支程序 R3=0,转向SUBR0 R3=1,转向SUBR1 R3=7,转向SUBR7,一个采用多向分支的例题,拟以多向分支的形式实现,解:拟运用J
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第四 章程 设计
链接地址:https://www.31doc.com/p-2918950.html