Здравствуйте! Возникает непонятная ошибка при компиляции следующей инструкции: shr ax, 9 код ошибки: A2070 ax определяется только после выполнения некоторых команд, хотя изначально инициализирован 0. куда еще проще? =) как говорится падаю на ровном месте.
Вот он код: только вместо ax стоит cx. Для реального режима. ___________________________________________________________________ text segment use16 assume CS:text _beg: mov ax, 0 mov DS, ax mov ax, word ptr DS:[42h] mov DS, ax mov ax, 186ah mov ES, ax cld mov cx, 0 mov si, word ptr DS:[40h] mov di, word ptr ES:0 Cycle: cmp byte ptr DS:[si], 0CFh jz konec movsb inc cx jmp short Cycle konec: cmp cx, 1000000000b jnle l1 mov cx, 1 jmp short l2 l1: shr cx, 9 ;---------------->> вот она заноза add cx, 1 l2: mov ah, 03h mov al, cl mov ch, 9h mov cl, 0a8h mov dh, 0h mov dl, 0h mov bx, 0 int 13h push ax mov ax, 0b800h mov ES, ax mov bx, 0 pop ax mov word ptr ES:[bx], ax text ends end _beg
А какой тип процессора указан? Если ничего, то по умолчанию, помнится, принимается 8086 -- а там не было сдвигов на фиксированное число разрядов, отличное от 1 (т.е. "shr регистр, число" использовать нельзя) -- такая возможность появилась вроде только в 80286 или даже позже. А судя по тексту, в нём процессор не указан; в командной строке, вероятно, тоже -- вот транслятор и ругается. Суньте в самое начало .386 -- тогда переварит.