内容发布更新时间 : 2025/5/17 20:12:29星期一 下面是文章的全部内容请认真阅读。
CJNE A,#00H,LOOP1 SJMP LOOP INC R0 INC R3
;非负非零转正数处理 ;零不处理,取下一个数 ;正数保存 ;正数存放地址加1 ;正数个数加1 ;未结束就继续
;将负数送负数保存地址 ;负数地址加1 ;负数个数加1 ;未结束就继续 ;正数个数送40H单元 ;负数个数送60H单元
LOOP1:MOV @R0,A
SJMP LOOP2 INC R1 INC R4
NEG: MOV @R1,A
LOOP2: DJNZ R7,LOOP
MOV 40H,R3 MOV 60H,R4 SJMP $ END
4-6 设内部RAM的30H和31H单元中有二个带符号数求出其中的大数存放在32H单元中。
MOV A,30H XRL A,31H JB ,LOOP MOV A,30H SUBB A,31H JC LOOP1 MOV 32H,30H
SJMP $ SJMP $ JB ,LOOP1 MOV 32H,A SJMP $
LOOP1: MOV 32H,31H LOOP: MOV A,30H
4-7 试编制实现ASCII码转十进制数的程序。在8032单片机内RAM的40H单元中存放一个代码。若此代码为十进制数的ASCII码,则将其相应的十进制数送片内RAM的50H单元,否则将此单元置成0FFH。
MOV A,40H CLR C SUBB A,#30H JC LOOP MOV R0,A MOV A,#09H SUBB A,R0 JC LOOP
;减30H后差大于0,是否不 ; 大于9? ;差大于9,跳转
;数字比其ASCII码值小30H
;存的ASCII值小于0的ASCII码值跳转
MOV 50H,R0 SJMP $
;将数字存入50H单元 ;不是数字,存入0FFH
LOOP:MOV 50H,#0FFH
SJMP $ END
4-8 试编程将存放在8032单片机内部RAM中首址为20H、长度为50H的数据快传送到片外RAM以20H为首址的连续单元中。
MOV R0,#20H MOV R1,#20H MOV R7,#50H MOVX @R1,A
INC R0 INC R1 DJNZ R7,LOOP SJMP $
LOOP: MOV A,@R0
4-9 设一个字符串存放在8032单片机内部RAM以20H为首址的连续单元中,字符串以回车结束。要求统计该字符串中字符C(’C’=43H)的个数,并将其存入外部RAM的40H单元。试编写实现上述要求的程序。
MOV R0,#20H MOV R2,#00H XRL A,#0DH JZ EXIT MOV A,@R0 XRL A,#43H JNZ LOOP2
INC R2 SJMP LOOP MOV A,R2 MOVX @DPTR,A SJMP $ END
LOOP2: INC R0
EXIT: MOV DPTR,#0040H
LOOP: MOV A,@R0 ;判断是否是回车符
4-10 设有一长度为20H的字符串,它存放在片外RAM1000H为首地址的连续单元中。试编制将其中数字与字母分开并将它们送到片内RAM以30H和50H为首地址的连续单元中的程序。
MOV DPTR,#1