求助:单片机的简单编程题

2024年11月19日 03:24
有6个网友回答
网友(1):

1.
程序如下:编程思想是把起始地址30H放在R0中,然后用寄存器间址@R0表示地址里存放的数,并用CJNE指令和#0AH比较,不一样就跳转至NEXT,地址加1继续比,比之前先判断下R0中的数等于#50H吗,等于的话表示任务完成了,不用再比了,不等于则继续比。当出现相等数时,MOV 50H,#01H,MOV 52H,R0,将内RAM的50H单元置为01H,并将找到的存放第一个关键字的单元地址存放在内RAM的52H单元中。
MOV R0,#30H
MOV 50H,#00H
START:CJNE @R0,#0AH,NEXT
MOV 50H,#01H
MOV 52H,R0
SJMP EEND

NEXT: INC R0
CJNE R0,#50H,START

EEND:END

2.
单字节符号数,正数的特征是最高字节是0,负数则为1.可取出放在ACC中,先判断是否为0,如不为0则通过判断ACC.7是否等于0来确定是正还是负。
程序:
MOV 40H,#00
MOV 41H,#00H
MOV 42H,#00H
MOV R0,#30H
START:
MOV A,@R0
JNZ F1
F0:INC 41H
SJMP NEXT
F1:JNC ACC.7,FZH
FFU:INC 42H
SJMP NEXT
FZH:INC 40H
NEXT:INC R0
CJNE R0,#40H,START
EEND:END

网友(2):

呵呵,我来说下。光学了书上的“单片机”,不管你学的多牛,都没用。还是要动手实践。

还有KEIL编程 一般都用C语言了,学汇编只求看懂程序。

网友(3):

看问题补充就知道没好好上课 对牛探亲
编程嘛,自然问你用汇编语言还是C了
竟然看不懂?
那怎么跟你说清?

网友(4):

第一个题:
把地址给一个寄存器,把检查个数给一个寄存器 然后用SUBB 去检查C(看是否由借位) 判断检查个数是否为0 不为0就跳转来继续判断

第二个:
判断ACC.7 然后差不多就那样来作

我说得这些是用汇编哈

网友(5):

查查课本也行啊,应该有类似的例子,用得原理就是两个数比较。

网友(6):

这个应该不难
题1:分别读取30H-4FH,判断,如果等于0AH,停止判断,
然后 MOV 50H,#01
将刚才的地址 MOV 52H,@Rn 其中Rn是刚刚读取30H-4FH的具体地址

题2:和题1类似,判断后分别执行inc 40H之类加40H、41H、42H三个单元