??? 09/24/04 17:27 Read: times |
#78076 - RE: now my ACALL is working.why? Responding to: ???'s previous message |
So, a seldom, but possible error, which can not be discovered by assembler, takes place when the first opcode byte of ACALL (it's 11h) happens to be the last in the 2kb page, on addresses: xxxx x111 1111 1111b.
If you use segments in your assembler code, you can specify the INBLOCK attribute for a segment. This forces the linker to locate the segment within a 2K block so that AJMP and ACALL instructions will work correctly. The linker will warn you if the segment is too big (and these instruction will no work as expected). Jon |