Другие языки программирования и технологии

объясните начинающему программисту

читаю книгу Б. Брэя Применение микроконтроллеров PIC 18
объясните, в чем разница следующих директив ассемблера вопрос №1:
DB (declare byte), DATA, DW (declare word)

в книге есть примеры использования:
DB 'B'
DB 'r'
DB 'e'
DB 'y' ;до этого момента вроде все понятно,
;хотя не понятно, почему команду "объявить байт"
;применяют к буквам? поясните, пожалуйста, это будет вопрос №2
DB 0x00 ; и зачем эта строчка, вопрос №3?
DB 'Brey', 0 ; а это как понимать, то один символ, то уже слово? вопрос №4
DATA "Brey", 0 ; и зачем в конце 0 везде? вопрос№5
DATA "Barry", 0
===========================;
для DW другой пример (здесь все коментарии будуть не мои, а из книги, сам бы я такое не написал) :

;Беззнаковые пословные данные
DATA1 DW .2544 ;Определяет десятичное 2544
DATA2 DW 0x87AC ;Определяет шестнадцатеричное 87AC
DATA3 DW .710 ;Определяет десятичное 710
;Пословные данные со знаком
DATA4 DW .13400 ;Определяет десятичное 13400
DATA5 DW +198 ;Определяет десятичное +198
DATA6 DW 0xFFFF ;Определяет десятичное -1

последнее выносит. ну я вообще понимаю, что в знаковых числах последний бит - знаковый, и отрицательное число находится за описанным в книге методом дополнения до двух, но как программа понимает, где это десятичное 65535 (FFFF), а где это число со знаком? вопрос №6.. помогите разобраться, пожалуйста
Ответ на 1-ый вопрос:
разница в размере директив
db - байт
dw - слово (два байта)

Ответ на 2-ый вопрос:
любая буква имеет свой ASCII код. При компиляции все-ровно они примут ASCII значение.
просто так же легче:
записать строку в виде массива букв - DB 'Brey', 0, чем записать ее в 16-ричном виде - db 0x42, 0x72, 0x65, 0x79, 0x00 - многое понятно в этом?

ответ на 4-ый вопрос:
DB 'B'
DB 'r'
DB 'e'
DB 'y'
DB 0x00
и
DB 'Brey', 0
одно и тоже.

ответ на 5-ый:
не обязательно нули. это зависит от программы. Вчитывайся в то что пишет автор книги, если просто переписывать код и потом задавать вопросы - далеко не уйдешь в этом деле.

на 6-ой вопрос:
существует регистр флагов, где каждый бит в регистре отвечает за свое. В твоем случае флаг SF
если SF установлен в 1 значит число - отрицательное
если SF=0 - положительное
Ph Falcon
Ph Falcon
7 948
Лучший ответ
Когда за размером идет символ, строка или что-то еще, то происходит автоматическая инициализация памяти этим значением. 0 в конце скорее всего служит терминирующим символом строки, aka C-string.

Насчет отрицательных ты ошибаешься, обычно используется дополнительный код для их представления, там не только последний бит, еще инверсия. Почитай про two's complement, если интересно.
Нашел че спросить в 4 часа ночи :D иди проспись, утро вечера мудренее;)
Тут всё понятно! Не внимательно читаешь книги! Тут объяснять не буду, если действительно интересно и хочешь разобраться, скинь мне на ящик перечень книг, которыми пользуешься, я постараюсь тебе помочь