第四章
程序设计主要分为哪几种各有什么特点
答: 1.机器语言程序设计.指令难记,程序可读性和移植性差,不易查错和修改.
2.汇编语言程序设计. 需用汇编程序编译成机器码后方可执行,可以直接访问和操作单片机中的寄存器及存储器单元,对数据的处理表述的非常具体.
3.高级语言程序设计. 编程效率高,可移植性强,通用性强,但必须经过编译 AT89C51常用的汇编语言伪指令有哪些它们的作用是什么
答:伪指令有: ORG、END、EQU、DATA、DW、DS、BIT等,作用略 汇编语言程序设计分哪几个步骤每个步骤的主要任务是什么 答:P60页略
设内部RAM中存有两个有符号数A和B,求A和B之差,若溢出,则将两数均清零;否则,两数保持不变。 程序如下:
MOV R0,#A MOV A,@R0 MOV R0,#B SUBB A,@R0 JNB OV,OVER MOV @R0,#00H MOV R0,#A MOV @R0,#00H OVER: RET
已知片内30H单元中存有一个8位无符号数。编程将它们乘2,再存回原处。设乘完结果不超出一个字节。
程序如下:
ORG 0000H MOV A,30H RL A
MOV 30H,A RET
编写程序,把片外RAM从2000H开始连续存放的8个数据送到片内30H开始的单元中。
程序如下:
ORG 0000H MOV R7,#08H
MOV DPTR,#2000H MOV R0,#30H LOOP1: MOVX A,@DPTR MOV @R0,A INC DPTR INC R0
DJNZ R7,LOOP1 RET
已知片内30H,31H中存有一个16位的二进制数,高位在前,低位在后,请编程将它们乘2,再存回原处。设乘完结果不超出双字节。
程序如下:
ORG 0000H MOV A,31H CLR CY RLC A
MOV 31H,A MOV A,30H RLC A
MOV 30H,A AJMP $
若有两个无符号数X,Y分别存放在外部数据存储器50,51单元中,试编写一个程序,实现X*5+Y,结果高8位存入片内42单元,低8位存入片内43单元。
程序如下:
ORG 0000H
MOV DPTR,#0050H; X先乘2 MOVX A,@DPTR MOV 43H,A CLR CY RLC A MOV R0,A CLR A
ADDC A,42H ; 高位存 RL A
MOV 42H,A
MOV A,R0 ;x再乘2 CLR CY RLC A MOV R0,A CLR A
ADDC A,42H ;存高位 MOV 42H,A
MOV A,R0 ;4x再加x CLR CY ADD A,43H MOV 43H,A
CLR A
ADDC A,42H MOV 42H,A
INC DPTR ;5x+y MOVX A,@DPTR CLR CY ADD A,43H MOV 43H,A CLR A
ADDC A,42H MOV 42H,A AJMP $
4.9 统计片内RAM20H-50H单元中所有大于0AH的数据的数目,并将结果放入片外RAM1000H单元中。
程序如下:
VOR EQU 0AH ORG 0000H MOV R1,#20H MOV A,#00H L4: MOV @R1,A INC R1 INC A
CJNE R1,#51H,L4 L5: MOV DPTR,#1000H MOV A,#00H MOVX @DPTR,A
MOV R6,#00H ;计数器清零 MOV R0,#20H ;地址寄存器初值 L3: MOV A,@R0 CLR C
CJNE A,#VOR,L1 SJMP L2 L1: JC L2 INC R6 L2: INC R0
CJNE R0,#51H,L3 MOV DPTR,#1000H MOV A,R6 MOVX @DPTR,A SJMP $
有10个单字节数据,连续存放在片外2000H开始的区域中,试求出这10个数的总
和,并将结果存入片内20H开始的单元,低位先存。
程序如下:
ORG 0000H MOV R7,#10 MOV DPTR,#20H MOV 20H,#00H MOV 21H,#00H LOOP: MOVX A,@DPTR ADD A,21H MOV 21H,A CLR A
ADDC A,20H MOV 20H,A INC DPTR CLR CY
DJNZ R7,LOOP AJMP $
编写程序,令其完成立即数 6F5DH减去立即数13B4H,并把操作结果存入内部RAM的30H和31H单元,30H单元存放差的低8位,31H单元存放高8位。
程序如下:
ORG 0000H CLR C
MOV A,#5DH SUBB A,#0B4H MOV 30H,A MOV A,#6FH SUBB A,#13H MOV 31H,A SJMP $