Байт и Бит адресуемые 8051
8051 SFR
'P0,SP, DPL & DPH'
имеют свои байтовые адреса 80h,81h,82h,83h
, поскольку P0
адресно-битный, P0.0 - P0.7
имеет битовые адреса 80h - 87h
, Но как это будет отличать адреса P0.1(81h) & SP(81h), P0.2(82h) & DPL(82h), P0.3(83h) & DPH(83h)
...?
1 ответ
Байтовые адреса и битовые адреса никогда не используются в одной и той же инструкции. Так что пока
mov SP, #5 ; mov 81h, #5
mov P0.1, C ; setb 81h
оба имеют адрес 81h и оба записываются как mov
первый собран как 0x75 0x81 0x5
а второй 0x91 0x81
, Для процессора 0x75 и 0x91 означают совершенно разные вещи, а именно: move the the value in the 3rd byte of this instruction to the address in the second byte of this instruction
, а также move the carry flag to the bit address in the second byte of this instruction
, Ассемблер знает что mov addr, #imm
а также mov bit, C
нужно кодировать по-другому, и процессору действительно все равно, как они написаны, потому что он вообще не видит исходный код.