程序测试通过PrlteUS
c_NUM_A EQU 30H
ORG 00H
AJMP _INIT_SYS
_INIT_SYS:
MOV SP,#80H
_MIAN:
MOV 40H,#30H ;X'S VALUE
LCALL _QUESTION_1
MOV DPTR,#2030H
MOV A,#41H
MOVX @DPTR,A
LCALL _QUESTION_2
AJMP $
; 求符号函数的值:
; 2 当X > 0
; 0 当X = 0
; -2 当X < 0
; X存放在40H单元,Y存放在41H单元。
_QUESTION_1:
MOV A,40H
JZ _1_ZERO
ANL A,#80H
JNZ _1_FU
_1_ZHENG:
MOV 41H,#2
RET
_1_ZERO:
MOV 41H,#0
RET
_1_FU:
MOV 41H,#82H
RET
; 设计数据检索程序,在外部RAM的2000H开始的连续100个单元中查找字符A
; (ASCII码为41H)的个数。
_QUESTION_2:
PUSH 0
MOV c_NUM_A,#00H
MOV DPTR,#2000H
MOV R0,#100
_2_LOOP:
MOVX A,@DPTR
CLR C
SUBB A,#041H
JNZ _2_END_TEST
INC c_NUM_A
_2_END_TEST:
INC DPTR
DJNZ R0, _2_LOOP
POP 0
RET
; 23. 对于中值滤波法,如果设n=3;3此采样值分别存放在R2、R3、R4中,
; 中值存在R3中,试用51系列单片机汇编语言编写中值滤波程序。
_QUESTION_3:
; 请把问题具体描述下,我不太理解
; 尽管信号系统,数字信号处理我都学过,学得太烂了,不好意思
RET
END
回答:
MOV R0,#00H ;一共循环100H次
MOV R2, #00 ;个数清零
....
INC R0
MOV A,R0
JNZ LOOP1
根据该片断, R0初值应为 256-100=156
按你的答案,找了256个而不是100个
当然,你说的也对
DJNZ R0, _AAA 即为 --1 不为0则跳转,相当于
DEC R0
MOV A,R0
JNZ LOOP1
自己装个KEIL C51 , 单步运行!
www.pp51.com
mian()