寄存器不存储输入

时间:2013-03-06 12:10:51

标签: assembly intel 8051

我正在接收输入并将它们存储在寄存器R1和R2中。然后我使用CJNE命令执行比较,如果存储在R1或R2中的输入与数组中的数据匹配,我会做一些事情。但问题在于以下代码,有时R1和R2有数据,有时它们没有。我通过调试模式对它进行了验证,并在Port上显示了它们内部的东西。为什么会这样,我做错了什么?

以下程序编写于intel 8051 assembly并汇编于Keil uVision

请检查代码:

ORG 00H

UserName: DB 12,13,14,0
Password: DB 15,125,240,0

MOV R0,#00h
mov R6,#04h
mov P1,#00h
mov p2,#00h

TakeUserName:

JB P2.1, TakePassword 

mov R1,P1 // storing username number in R1

SJMP TakeUserName

TakePassword:

JB P2.2, CheckUserName    

mov R2,P1 // storing password number in R2

 SJMP TakePassword


CheckUserName:

MOV DPTR,#UserName

Here1:

CLR A

MOVC A, @A+DPTR

INC DPTR

CJNE A, 01h,Here1   // compare A with data in R1

mov p2,#00h

Setb P2.0 

AJMP CheckPassword    

CheckPassword:

MOV DPTR,#Password

Here:

CLR A

MOVC A, @A+DPTR

INC DPTR

CJNE A, 02h,Here  

Setb P2.1 // setting of this bit shows password is successfully matched

AJMP Exit


End

请指导我找到这种奇怪行为的原因。

此致

0 个答案:

没有答案