Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

Вернуться   Форум программистов > Низкоуровневое программирование > Assembler - Ассемблер
Регистрация

Восстановить пароль
Повторная активизация e-mail

Здесь нужно купить рекламу за 25 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru

Ответ
 
Опции темы
Старый 05.11.2018, 23:07   #1
Икар К
Пользователь
 
Регистрация: 05.11.2018
Сообщений: 18
По умолчанию Сколько памяти будет зарезервировано след оператором ассемблера?

text DB 20h, 20h, 'люди !'
Икар К вне форума   Ответить с цитированием
Старый 06.11.2018, 06:16   #2
R71MT
Участник клуба
 
Аватар для R71MT
 
Регистрация: 16.06.2011
Сообщений: 1,339
По умолчанию

db - это "Define Byte", т.е. определить ячейки размером байт.
вот и считай: 1+1+6 = x
Нашедшего выход - затаптывают первым..
R71MT вне форума   Ответить с цитированием
Старый 06.11.2018, 17:28   #3
Икар К
Пользователь
 
Регистрация: 05.11.2018
Сообщений: 18
По умолчанию

2R71MT Спасибо!
Будет примерно семь, я правильно понял?
Икар К вне форума   Ответить с цитированием
Старый 06.11.2018, 17:33   #4
Serge_Bliznykov
МегаМодератор
СуперМодератор
 
Регистрация: 09.01.2008
Сообщений: 26,231
По умолчанию

Цитата:
Сообщение от Икар К Посмотреть сообщение
Будет примерно семь, я правильно понял?
Это юмор такой?!
Во-первых, почему "примерно"? у Вас калькулятор выдаёт примерные значения, или Вы не уверены, что смогли правильно сложить три однозначных числа?!

во-вторых, почему "семь"? расскажите, как Вы подсчитали
выражение
Код:
 1+1+6
так, что у Вас получилось семь?!! o_O
Serge_Bliznykov вне форума   Ответить с цитированием
Старый 06.11.2018, 17:51   #5
Икар К
Пользователь
 
Регистрация: 05.11.2018
Сообщений: 18
По умолчанию

Понимаю, что восемь, хотя в одном форуме меня убеждают что семь. Вот я решил выяснить истину, спросив здесь. :-)
Икар К вне форума   Ответить с цитированием
Старый 06.11.2018, 18:41   #6
Serge_Bliznykov
МегаМодератор
СуперМодератор
 
Регистрация: 09.01.2008
Сообщений: 26,231
По умолчанию

Цитата:
Сообщение от Икар К Посмотреть сообщение
Понимаю, что восемь,
хорошее понимание. жаль, что я не увидел его в вашем предыдущем посте #3


Цитата:
Сообщение от Икар К Посмотреть сообщение
хотя в одном форуме меня убеждают что семь.
так может быть, Вы на другом форуме задали ДРУГОЙ вопрос?
и чем же они мотивируют, что семь?
Serge_Bliznykov вне форума   Ответить с цитированием
Старый 06.11.2018, 19:17   #7
jillitil
Форумчанин
 
Аватар для jillitil
 
Регистрация: 17.10.2018
Сообщений: 117
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
и чем же они мотивируют, что семь?
Один в уме.
jillitil вне форума   Ответить с цитированием
Старый 06.11.2018, 19:22   #8
Икар К
Пользователь
 
Регистрация: 05.11.2018
Сообщений: 18
По умолчанию

Вот ссылка
https://otvet.mail.ru/question/211326996
Икар К вне форума   Ответить с цитированием
Старый 06.11.2018, 23:20   #9
Serge_Bliznykov
МегаМодератор
СуперМодератор
 
Регистрация: 09.01.2008
Сообщений: 26,231
По умолчанию

Цитата:
Сообщение от Икар К Посмотреть сообщение
Вот ссылка
ищите разницу между
Цитата:
Код:
Text db 20h,20h,'люди '
и
Цитата:
Код:
text DB 20h, 20h, 'люди !'

Последний раз редактировалось Serge_Bliznykov; 06.11.2018 в 23:23.
Serge_Bliznykov вне форума   Ответить с цитированием
Старый 07.11.2018, 07:32   #10
R71MT
Участник клуба
 
Аватар для R71MT
 
Регистрация: 16.06.2011
Сообщений: 1,339
По умолчанию

там разделителем считается запятая, после которой пробелы не учитываются,
если эти пробелы не находятся внутри кавычек, т.е. не определены как строка.
сами ячейки памяти задаются так:
Код:
   db  - define byte  - определить как 1-байт;
   dw  - define word  - определить как 2-байта;
   dd  - define dword - определить как 4-байта;
   dq  - define qword - определить как 8-байтов;
   dup - duplicate    - X-раз дублировать(y)
перед DUP нужно указать счётчик повторений, а дальше - значение, что повторять.
кстати, в скобках можно задавать целые строки, обрамив их кавычками.
например такая конструкция запишет в память указанную строку 10-раз:
Код:
abc   db   10 dup('Hello World')
а вот как это выглядит в памяти,
с её выравниванием на 16-байтную границу инструкцией 'ALIGN' (забивает оставшуюся часть нопами с опкодом 90h):
Код:
align  16
msg0   db  1,2,3,4,5       ; массив из 5-ти байт
align  16
msg1   dw  1,2,3,4,5       ; массив 10-байт
align  16
msg2   dd  1,2,3,4,5       ; массив 20-байт
align  16
msg3   db  4 dup('Hello World ')     ; массив из текстовых строк
align  32
Изображения
 
Нашедшего выход - затаптывают первым..

Последний раз редактировалось R71MT; 07.11.2018 в 07:35.
R71MT вне форума   Ответить с цитированием
Ответ

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
[Assembler] Matrix rd H*W*4 ; выделение памяти под матрицу (строки идут друг за другом) rd - это сколько памяти выделяется? Дмитрийййй Assembler - Ассемблер 11 10.10.2018 13:13
Сколько будет стоить: Дмитрий.2015 Фриланс 28 03.06.2015 12:25
сколько будет стоить? Алёна Фриланс 5 24.04.2009 23:49
Сколько будет стоить? Neymexa Фриланс 2 10.12.2008 02:49


05:08.


Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2019, Jelsoft Enterprises Ltd.