mds.asm

来自「通过调试的有用的单片机控制程序」· 汇编 代码 · 共 41 行

ASM
41
字号
DATA_A_H        DATA    40H
DATA_A_L        DATA    41H
DATA_B_H        EQU     42H
DATA_B_COUNT    EQU     4
MDS:	CLR	F0		;结果符号初始化
	MOV	A,DATA_A_H      ;判断第二操作数的符号(数据A的高字节)
	JNB	ACC.7,MDS1	;为正,不必处理
	CPL	F0		;为负,结果符号取反
	XCH     A,DATA_A_L	;第二操作数取补,得到其绝对值
	CPL	A
	ADD	A,#1
	XCH	A,DATA_A_L
	CPL	A
	ADDC	A,#0
	MOV	DATA_A_H,A

MDS1:	MOV	R0,#DATA_B_H	
        MOV     R6,#DATA_B_COUNT ;判断第一操作数或运算结果的符号
        MOV     A,@R0
	JNB	ACC.7,MDS3	;为正,不必处理
        DEC     R6
	MOV     A,R0
	ADD     A,R6
	MOV     R0,A
	CPL	F0		;为负,结果符号取反
	MOV	A,@R0
	CPL	A
	ADD     A,#1
	MOV     @R0,A
	DEC     R0
MDS2:	MOV	A,@R0		;求第一操作数的绝对值或运算结果的补码
	CPL	A
	ADDC    A,#0
	MOV     @R0,A
	DEC     R0
	DJNZ    R6,MDS2
	
MDS3:   CLR	OV		;运算成功
	SJMP   $
	END

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?