一、 实验内容
将-8到7的16个数放入30H开始的RAM区,其中正数、负数分别送40H和50H开始的存储单元,正数、负数和零的个数分别送到单元60H,61H,62H。
(-8作为内容送入30H中,30H作为内容,送入寄存器A中;A的内容自增1变为31H,同时31H中的内容自减1变为-7。可见P35加1减1指令。)
二、 实验目的
掌握proteus和软件环境——keilC的联机调试过程
三、 实验设备
DELL台式机 + proteus版本6 + keilC51版本7
四、 实验电路图(可打印)
五、 程序流程图
六、 程序源码(可打印)
ORG 0000H
MOV R1,#30H
MOV R2,#16
MOV R3,#40H
MOV R4,#50H
MOV A,#-8 //8个数
MOV 60H,#0
MOV 61H,#0
MOV 62H,#0
NEXT:
MOV @R1,A //A->以R1的内容为地址的内部RAM
JNB ACC.7,ZNUMBER //判断负数
MOV B,R4
MOV R0,B//通过R0寄存器存入50H单元开始的RAM区
INC R4
INC 61H //负数个数加一
JB ACC.7,LAST
ZNUMBER:
ADDC A,#0FFH
MOV A,@R1
JC ZHENGSHU //判断正数
INC 62H //0个数加一
JNC OVER
ZHENGSHU:
MOV B,R3
MOV R0,B
INC R3
INC 60H //整数个数加一
LAST:
MOV @R0,A //将A存入RAM区
OVER:
INC R1
INC A
DJNZ R2,NEXT //判断循环是否结束
SJMP $
END