Подскажите для чего директива LABEL? Конкретно не понимаю как работает эта директива для организации доступа к области памяти к данным разных типов. Если можно очень простым языком расскажите что да как. Непонятен код вида: Код (Text): metka label word metka2 label byte metka3 label tbyte также не могу нигде найти инфу что такое dup. Код (Text): b_a LABEL byte w_a DW 10 DUP(0)
1. Label позволяет обратиться к некоторому объёму данных, задав разрядность эл-та. Например, к элементам таблицы: Код (Text): SomeTable Label DWORD ; элемент таблицы - двойное слово dd 0AAAAAAAAh,0BBBBBBBBh,etc SomeTable_Size equ $-SomeTable 2. dup - duplicate, повторяет символ заданное число раз при использовании с неинициализированными данными - знак "?" Код (Text): sBuffer db 200h dup (?)
Про dup все понятно. разобрался... а вот с LABEL всеравно толкусь...до конца не догнал. немного просветился тут http://www.1library.ru/pages-596.html
Начал учиться по книге Юрова - практикум. Так вот там незнамо зачем в первом примере используется LABEL. И до конца я так и не понял как она работает. Код (Text): .386 .model flat, stdcall option casemap: none .data s1 db 0FFh s2 db 0FFh s_w LABEL word s_b db 0 carry db 0 .code start: mov al,s2 add al,s1 mov s_b, al jnc mcarry adc carry,0 carry mov ax,s_w ; этой строки нет в примере я ее сам добавил mcarry: ret end start Сам добавил mov ax,s_w, я как это заработало не пойму. Не пойму почему в аккумулятор помещается именно нужный результат. Почему берется 3й и 4й байт из памяти и помещается в аккумулятор? Почему не нулевой и первый например?
Понял. Позор на мою седую голову. Громко не смейтесь - я только делаю первые шаги в асме. Объясню новичкам. Так сказать "чайникам от чайника". Код (Text): .data s1 db 0FFh ;нулевой байт s2 db 0FFh ;первый байт s_w LABEL word ;тут объявили метку для последующих двух байтов (слова) s_b и carry s_b db 0 ;второй байт carry db 0 ;третий байт следующая команда поместит в регистр именно слово (два байта) указанные после метки s_w Код (Text): mov ax,s_w