3.7 从内部存储器30H单元开始,有16个数据,试编一个程序,把其中的正数、负数分别送40H和50H开始的存储单元,并分别将正数、负数和零的个数送R4,R5,R6.
ORG 0000H MOV R7,#10H
MOV A,#0 MOV @ R0,A MOV R4,A INC R0 MOV R5,A AJMP DJ MOV R6,A NE:INC R5
MOV R0,#40H MOV @ R1,A MOV R1,#50H INC R1 MOV SP,#2FH AJMP DJ NEXT:POP ACC ZER0:INC R6
JZ ZER0 DJ:DJNZ R7,NEXT JB ACC.7,NE SJMP $ INC R4 END
3.8内部存储单元40H中有一个ASCII字符,试编一个程序给该数的最高位加上奇校验。 答:
ORG 0000H MOV A,40H JB P,EN
ORL A,#80H EN:SJMP $
3.9 编写一段程序,将存放在自DATA单元开始的一个4字节数(高位在高地址)取补后送回原单元。 答:
ORG 0000H
MOV R7,#03H MOV R0,#DATA MOV A,@ R0 CPL A
ADD A,#01 MOV @ R0,A AB:INC R0
MOV A,@ R0 CPL A
ADDC A,#0 DJNZ R7,AB SJMP $
3.10 以BUF1为起始地址的外存储区中,存放有16个单字节无符号二进制数,试编一个程序,求其均值并送BUF2单元,余数存在BUF2-1单元。 答:
ORG 0000H MOV R7,#0FH MOV R0,#BUF1 MOV B,#0 MOV A,@R0 MOV R2,A
NEXT:MOV A,R2 INC R0
ADD A,@R0 MOV R2,A
MOV A,B ADDC A,#0 MOV B,A
DJNZ R7,NEXT MOV R6,#04H MOV BUF2,A MOV BUF2-1,#0 NEX:CLR C MOV A,B RRC A
MOV B,A MOV A,BUF2 RRC A
MOV BUF2,A MOV A,BUF2-1 RRC A
MOV BUF2-1,A DJNZ R6,NEX SJMP $