记录:从零用汇编学习单片机 1.2.2 片内拆字程序设计

时间:2024-04-06 11:22:57

学了一久的汇编,感觉基于助记符的编程有时候还是比较容易记住的。
欢迎在评论区提出宝贵意见!

设计要求:
将片内30H单元内的内容拆成高位和低位,其中高位存入31H,低位存入32H

汇编源码:

;片内拆字程序设计
;设计要求:
;将片内30H单元内的内容拆成高位和低位,其中高位存入31H,低位存入32H
;程序设计:
;使用汇编语言实现片内拆字程序时,可使用ANL指令对
;相关位进行屏蔽,取高位时使用“ANL A,#OFOH”指令,
;取低位使用“ANL A,#OFH”指令
		ORG    00H
		MOV    30H,#0A3H			;给30H赋初值
		MOV    A,30H				;(30H)送A
		ANL    A,#0F0H				;取(30H)高位,送31H
		MOV    31H,A
		MOV    A,30H				;(30H)送A
		ANL    A,#0FH				;取(30H)低位,送32H
		MOV    32H,A
		END

C语言源码:

/*
片内拆字程序设计

设计要求:
将片内30H单元内的内容拆成高位和低位,其中高位存入31H,低位存入32H

程序设计:
使用C语言实现片内拆字程序时,可以先将0x30单元中的内容送变量a,
然后将变量a通过逻辑“与”操作进行高、低4位的分离后,分别送入0x31和0x32中即可,其程序流程图如图3-12所示
*/

#include <reg51.h>
#include <absacc.h>
#define uchar unsigned char
void main(void)
{
	uchar a;
	DBYTE[0x30]=0xA3;					//给0x30赋值
	a=DBYTE[0X30];						//将0x30单元中的内容送变量a
	DBYTE[0X32]=a&0x0F;					//将变量a的低4位送0x32
	DBYTE[0X31]=a&0xF0;					//将变量a的高4位送0x31
	while(1);
}

Proteus8.0 仿真
记录:从零用汇编学习单片机 1.2.2 片内拆字程序设计记录:从零用汇编学习单片机 1.2.2 片内拆字程序设计
程序完成后,30H中的内容为A3H,31H中的内容为A0H,32H总中的内容为03H,如图所示。