单片机89c51 编写简单程序

来源:百度知道 编辑:UC知道 时间:2024/06/22 11:46:16
将89c51内存30H~3DH中的有符号数进行检测,将正数存放于50H开始的单元;将负数存放于60H开始的单元。

求程序
老师突然留这么道题,真郁闷

大哥大姐求救啊~~~
分数只能这些了,没办法……

如果确定是有符号的数那还不好搞?
把每个数读到ACC里。
JZ的话,不要管它
JNZ的话
判断ACC.7,JB 就把它放到60H以后
JNB就把它放到50H开始的单元
也就是
MAIN: MOV R0,#30H
MOV R1,#50H
MOV R2,#60H
G0: MOV A,@R0
JZ G1
JB ACC.7,G2
MOV @R1,A
INC R0
INC R1
CJNE R0,#3EH,G0
MOV R0,#30H
MOV R1,#50H
MOV R2,#60H
SJMP $
G1: INC R0
JMP G0
G2: MOV B,A
MOV 70H,R0
MOV A,R2
MOV R0,A
MOV A,B
MOV @R0,A
MOV R0,70H
INC R0
INC R2
JMP G0
END

mov R2, #30h ; 30H~3DH 取数指针
mov R0, #50h ; 50H开始存数指针
mov R1, #60h ; 60H开始存数指针

Loop:
mov A, @R0
mov R3, A ; 值暂存到R3
clr C
xrl A, #0x80 ; 逻辑异或
subb A, #0x80 ; 减法
jc Negative
; 值 >= 0
mov A, R3
mov @R0, A
inc R0

sjmp OK