文档详情

第3章单片机的汇编语言与程序设计详解.ppt

发布:2017-01-16约8.25千字共72页下载文档
文本预览下载声明
寄存器间接寻址用到的寄存器有Ri、DPTR和SP,其中i = 0 或1;可以用类似(R0)表示@R0 举例2:已知片内RAM 38H单元中的数为12H,试分析如下程序段并指出其功能 注意:片内RAM 38H单元中数不能直接传送到外部RAM的1818H单元,必须经过累加器A的转传。 功能:将片内RAM 38H单元中的数12H传送到外部RAM的1818H单元中。 MOV R0,#38H MOV DPTR,#1818H MOV A,@R0 MOVX @DPTR,A ; Rn←data ; DPTR ←data16 ; A←(Ri) ; (DPTR)←A R0=38H DPTR =1818H A←(38H)=12H (1818H)=12H 举例3:试分析如下程序段并指出其功能 MOV DPTR,#120H MOV A,#5 MOVC A,@A+DPTR MOV 30H,A ; DPTR ←data16 ; A←data ; A←(A+DPTR) ; (30H)←A ; DPTR =120H ; A=5 ; A←(125H) ; (30H)←A 功能:将ROM 125H地址中的数取出送到片内RAM的30H单元中。 意义:采用DPTR作为基址寄存器,A作为变址寄存器,查找事先存放在ROM数据块中的数据值,其中DPTR指向数据块的首地址。 举例3”: 在如下所示的ROM 120H地址开始的10个单元中存放着整数0~9的十进制平方值,编写一查表程序段,计算整数5的平方值,并将结果送入RAM 中的30H单元。 执行结果:(30H)=25 ROM地址 数值 0128H 64 0127H 49 0126H 36 0125H 25 0124H 16 0123H 09 0122H 04 0121H 01 0120H 00 查表做法: 1、在ROM中设置一数据块; 2、将数据块的首地址赋值给DPTR; 3、将欲查的数存入累加器A; 4、执行MOV A,@A+DPTR查表指令; 5、查表后的结果送入指定单元。 举例4: 已知70H中有一个数,其值在0~9范围内,编制程序把它变为相应的ASCII码。 解:0~9的ASCII码为30H~39H。利用半字节交换指令可以把0~9的数装配成相应的ASCII码。 MOV R0,#70H ; R0←70H MOV A,#30H ; A←30H XCHD A,@R0 ; A中形成相应ASCII码 MOV @R0,A ; ASCII码送回70H单元 0-3 数据传送对象和方向示意图 C bit 虚线框代表片内RAM范围 立即数和ROM地址只能作为源操作数 ROM和外部RAM只能与A进行往来 PUSH和POP只能对direct进行操作 位传送只能在C与bit间进行 虚线框代表片内RAM范围 立即数和ROM地址只能作为源操作数 3.1汇编语言概述 3.2指令系统简介 1.数据传送与交换类指令 2.算术运算类指令 3.逻辑运算及移位类指令 4.控制转移类指令 5 .伪指令 3.3汇编语言的编程方法 算术运算类指令共有24条,包括加、减、乘、除和增减1运算等。 特点:算术运算指令一般对程序状态字PSW中的CY、AC、OV三个标志位有影响。 举例5:试解读如下程序并说明其功能 MOV A,#34H ADD A,#0E7H MOV 40H,A MOV A,#12H ADDC A,#0FH MOV 41H,A ; A ←34H ; A= A+data ; (40H) ← A ; A ← 12H ; A= A+data+CY ; (41H) ← A A =34H A= 1BH; C=1H (40H) = 1BH A = 12H A= 22H (41H) =22H 功能:1234H与0FE7H两个16位数相加,结果为221BH。第一步先对低8位相加,结果存入40H单元;第二步再对高8位相加,结果存入41H单元,其中第二步为带进位相加。 注意:对于用十六进制数表示的数字或地址,若其最高位是A~F,则需在最高位前加零(与“标号” 或“标示符”区分)。 举例6:试解读如下程序并说明其功能 CLR C MOV A,#34H SUBB A,#0E7H MOV 40H,A MOV A,#12H SUBB A,#0FH MOV 41H,A ; CY位清零 ; A ←34H ; A←A -0E7H-CY ; (40H) ← A ; A ← 12H ; A←A -0FH-CY ;
显示全部
相似文档