читаю книгу Б. Брэя Применение микроконтроллеров 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 - положительное
разница в размере директив
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 - положительное
Когда за размером идет символ, строка или что-то еще, то происходит автоматическая инициализация памяти этим значением. 0 в конце скорее всего служит терминирующим символом строки, aka C-string.
Насчет отрицательных ты ошибаешься, обычно используется дополнительный код для их представления, там не только последний бит, еще инверсия. Почитай про two's complement, если интересно.
Насчет отрицательных ты ошибаешься, обычно используется дополнительный код для их представления, там не только последний бит, еще инверсия. Почитай про two's complement, если интересно.
Нашел че спросить в 4 часа ночи :D иди проспись, утро вечера мудренее;)
Тут всё понятно! Не внимательно читаешь книги! Тут объяснять не буду, если действительно интересно и хочешь разобраться, скинь мне на ящик перечень книг, которыми пользуешься, я постараюсь тебе помочь
Похожие вопросы
- C++ Что делает c_str()? Объясните начинающему программисту понятно и просто, пожалуйста.
- Вопрос программистам со стажем. Какой язык программирования учить начинающему программисту?
- Я начинающий программист, у меня нет никаких программ специальных типа Borland для использования их при написании прогр
- Паскаль, не трудная задачка, помогите начинающему программисту!
- Выбор языка программирования, для начинающего программиста.
- Что нужно знать начинающему программисту?
- Как начинающему программисту развить абстрактно-логическое мышление?
- Начинающий программист:)
- Помогите начинающему программисту.
- Дайте совет начинающему программисту