汇编语言实现数据的奇偶校验计算

文章详细描述了在4位和8位单片机中,使用异或运算和位移操作进行数据备份、奇偶判断的过程,包括高低位计算、内部折半以及奇偶性确定等步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

考虑到汇编中位移加位判断篇幅过长,使用对半异或的方式,计算到最后一位,为0则为偶为1则为奇:

4位单片机,(备份原始数据)先进行高低位计算,再对内部折半:

;4位机      
        ; MVMA	R_RF_ADDR_1
        ; MVAM    R_TEMP_A
        ; MVMA	R_RF_ADDR_2
        ; MVAM    R_TEMP_B
        ; MVMA	R_RF_ADDR_3
        ; MVAM    R_TEMP_C
        
        ; MVMA	R_RF_ADDR_1
        ; XORA    R_RF_ADDR_2
        ; MVAM	R_RF_ADDR_2
        
        ; MVMA	R_RF_ADDR_2
        ; XORA    R_RF_ADDR_3
        ; MVAM	R_RF_ADDR_3
        
        ; MVMA	R_RF_ADDR_3
        ; XORA    R_RF_DATA_2
        ; MVAM    R_TEMP3      ;原数据备份 如10 00
        ; MVAM    R_TEMP4
        
        ; RRM     R_TEMP3      ;高移到低   变00 10
        ; RRM     R_TEMP3 
        
        ; MVMA    R_TEMP3
        ; XORA    R_TEMP4
        

        ; MVAM    R_TEMP3       ;00^10=10
        ; MVAM    R_TEMP4       ;备份0010
        
        ; RRM     R_TEMP4       ;移位0001
        
        ; MVMA    R_TEMP4
        ; XORA    R_TEMP3
        ; MVAM    R_TEMP4           ;***1
        
        
        ; MVMA    R_XOR
        ; MVAM    R_TEMP3

        ; RRM     R_TEMP3       ;移位0100
        ; RRM     R_TEMP3       ;移位0010
        ; RRM     R_TEMP3       ;移位0001
        
        ; MVMA    R_TEMP4
        ; XORA    R_TEMP3
        ; MVAM    R_TEMP4
        
        ; MVMA    R_TEMP4           ;***1
        ; ANDL    0X01
        ; MVAM    R_TEMP4
        ; MVMA    R_TEMP4
        ; XORL    1
        ; SZNZ
        ; JMP     CSM_JI
        ; MVLA    0
        ; MVAM    R_CSM
        ; JMP     CSM_COM
; CSM_JI:
        ; MVLA    8
        ; MVAM    R_CSM
        

        
; CSM_COM:

        ; MVMA	R_TEMP_A 
        ; MVAM    R_RF_ADDR_1
        ; MVMA	R_TEMP_B
        ; MVAM    R_RF_ADDR_2
        ; MVMA	R_TEMP_C 
        ; MVAM    R_RF_ADDR_3

8位单片机,将前面数据相加,再异或:

;8位机: R_ADDR_H   R_ADDR_M  R_KEY_DATA  R_CSM  R_PARITY:计算表像,不管舍弃的
		MOV       A,R_ADDR_H
		MOV       R_DDL2,A 
		
		MOV       A,R_DDL2
        XRL   	  A,R_ADDR_M  
        MOV       R_DDL2,A 
		
		MOV       A,R_DDL2
        XRL   	  A,R_KEY_DATA     
        MOV       R_DDL2,A 
		

        MOV       A,R_DDL2
        XRL   	  A,R_CSM   ;R_PARITY_TEMP and data
        MOV       R_DDL2,A 
        MOV       R_DDL3,A 

    
        RRC       R_DDL2		
        RRC       R_DDL2		
        RRC       R_DDL2		
        RRC       R_DDL2		
        
		MOV       A,R_DDL2
		XRL       A,R_DDL3
		MOV       R_DDL2,A 
        MOV       R_DDL3,A
		
		RRC       R_DDL2		
        RRC       R_DDL2
		
		MOV       A,R_DDL2
		XRL       A,R_DDL3
		MOV       R_DDL2,A 
        MOV       R_DDL3,A
		
		RRC       R_DDL2
		
		MOV       A,R_DDL2
		XRL       A,R_DDL3
		MOV       R_DDL2,A 

		SBR0      R_DDL2
		SJMP       SET_0X20
		MOV       A,#$A0       ;偶数
		MOV       R_PARITY,A 
		RET
SET_0X20:
        MOV       A,#$20       ;奇数
		MOV       R_PARITY,A 
		RET

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值