单片机高手请进

我这里有一道单片机编程题,是明天的考试题,请高手帮我做一下,悬赏100分

有两个字符串,分别存放在首地址为42H和52H,字符串长度放在41H单元,请编程比较两个字符串,若相等把字符串00存入40H单元,否则把FF存入40H单元。

谢谢了,非常着急!!!

你好!我为你解答一下!

有一个字节不等,整个字符串不相等,所有字节相等,两字串才相等
MOV R0,#42H
MOV R1,#52H
LOOP:MOV A,@R0
CLR C ;不相等,FFH→40H
SUBB A,@R1
JNZ LOOP1 ;相等时,比较下一字节
INC R0
INC R1
DJNZ 41H,LOOP
MOV 40H,#0 ;所有字符均相等,则两字串相等。
RET
LOOP1:MOV 40H,#0FFH
RET
温馨提示:答案为网友推荐,仅供参考
第1个回答  2007-01-16
有一个字节不等,整个字符串不相等,所有字节相等,两字串才相等
MOV R0,#42H
MOV R1,#52H
LOOP:MOV A,@R0
CLR C ;不相等,FFH→40H
SUBB A,@R1
JNZ LOOP1 ;相等时,比较下一字节
INC R0
INC R1
DJNZ 41H,LOOP
MOV 40H,#0 ;所有字符均相等,则两字串相等。
RET
LOOP1:MOV 40H,#0FFH
RET
上面的都不是,只有第五题是答案
第2个回答  2019-01-25
这些问题都是基本的问题,说不清楚!
我只说一下指针问题吧!指针在硬件和软件中都是很重要的一个知识点!
指针在电脑、单片机中的汇编语言、C语言中很重要,也很难!
我只讲一下再汇编语言中的。
堆栈和指针是不可分割的,而堆栈是一个特殊的存储器,是临时存储器。给你打一个比方,这堆栈就是一个仓库先放进去的在最底下,后放进去的在上面,当你拿出他们的时候,你只能先拿最上面的,也就是最后放进去的。即所谓的‘先进后出,后进先出’,并且堆栈有特殊的数据传输指令,即‘PUSH’和‘POP’,有一个特殊的专为其服务的单元,即堆栈指针SP,每当执一次PUSH指令时,SP就(在原来值的基础上)自动加1,每当执行一次POP指令,SP就(在原来值的基础上)自动减1。由于SP中的值可以用指令加以改变,所以只要在程序开始阶段更改了SP的值,就可以把堆栈设置在规定的内存单元中,如在程序开始时,用一条MOV
SP,#5FH指令,就时把堆栈设置在从内存单元60H开始的单元中。一般程序的开头总有这么一条设置堆栈指针的指令,因为开机时,SP的初始值为07H,这样就使堆栈从08H单元开始往后,而08H到1FH这个区域正是8031的第二、三、四工作寄存器区,经常要被使用,这会造成数据的混乱。不同作者编写程序时,初始化堆栈指令也不完全相同,这是作者的习惯问题。当设置好堆栈区后,并不意味着该区域成为一种专用内存,它还是可以象普通内存区域一样使用,只是一般情况下编程者不会把它当成普通内存用了。
最后想告诉你,如果你想学好单片机就找一本单片机的课本好好研究一下,多注重硬件方面的问题,这样对你的以后电脑的学习,C语言的学习都是大有益处的.
相似回答