Как убрать эти ошибки перепробовал уже кучу вариантов. Код (Text): unsigned long cvtSeg,cvtOff; struct CVT* get_cvt() { int a; __asm { mov ah, 52h int 21h sub bx, 2 lea cvtSeg, byte ptr es ;error C2415: improper operand type lea cvtOff , bx ;error C2415: improper operand type }; return ((struct CVT*)MK_FP(cvtSeg,cvtOff)); }
Вы пишите DOS или Windows программу? Если Windows, то зачем вам: Несовпадение типов операндов. unsigned long имеет размер 4 байта, а bx - 2 байта, а byte ptr es - 1 байт.
не леа, а мов и наведите порядок с размерностями. должно быть short в случае es и bx mov. и все byte ptr долой. или почитайте хотябы как ptr используется и для чего и я не гарантирую, что после этого заработает. особенно, если все это 32 или 64 разрядное и под вынь