| ??? 06/19/07 10:18 Read: times |
#141004 - other type of table, XOR instead CJNE ;-) Responding to: ???'s previous message |
MY_TABLE:
db '0'
dw Routine_for_0
db '1'
dw Routine_for_1
db 'X'
dw Routine_for_Xbig
db 'x'
dw Routine_for_Xlitl
db 0 ;null, end of table
Routine_for_0: ret
Routine_for_1: ret
Routine_for_Xbig: ret
Routine_for_Xlitl: ret
AGAIN:
JNB RI,$
CLR RI
MOV A,SBUF
call findcommandNOW
sjmp AGAIN
findcommandNOW:
mov r0,A
MOV DPTR,#MY_TABLE
findcommandloop:
clr a
MOVC A,@A+DPTR
jnz findcommand_A
ret ;end of table finded, no valid command
findcommand_A:
xrl a,r0
jz commandfinded
inc dptr
inc dptr
sjmp findcommandloop
commandfinded:
inc dptr
clr a
MOVC A,@A+DPTR
mov r2,a
inc dptr
clr a
MOVC A,@A+DPTR
mov r3,a
;now r2r3 contains addres of command_handler
;if bank 0 is default
PUSH 2
PUSH 3
; or reverse pushing, it depends of compiler, maybe
; PUSH 3
; PUSH 2
ret ;jumping to command_handler
|
| Topic | Author | Date |
| How to branch through table, without CJNE ? | 01/01/70 00:00 | |
| You are very close | 01/01/70 00:00 | |
| Oh Thanks sir, :-) you are really great, | 01/01/70 00:00 | |
| WoW sir it really worked:-) here is full code, | 01/01/70 00:00 | |
| Not quite | 01/01/70 00:00 | |
| re: Abbreviations | 01/01/70 00:00 | |
| Some remarks | 01/01/70 00:00 | |
| Some Corrected Remarks :-) | 01/01/70 00:00 | |
| The difference | 01/01/70 00:00 | |
| other type of table, XOR instead CJNE ;-) | 01/01/70 00:00 | |
Rotate | 01/01/70 00:00 |



