До кучи ситуация маленькой модели и широкого указателя Вот, обявляем ptr_f как указатель на far область при модели SMALL (все "обычные" указатели - 16 бит). Имеем корректные присваивания и сравнения (работа с лонгами).
__far INT8U * volatile ptr_f;
__far INT8U * volatile ptr_f2;
void main (void)
{
ptr_f = 0;
if (ptr_f == 0)
{
_main:
;;;; {
;;;; ptr_f = 0;
MOVN A, #0
ZEXTW
MOVL _ptr_f, A
;;;; if (ptr_f == 0)
MOVL A, _ptr_f
BNE L_23
;;;; if (ptr_f == ptr_f2)
MOVL A, _ptr_f
CMPL A, _ptr_f2
BNE L_25