• Курсы Академии Кодебай, стартующие в мае - июне, от команды The Codeby

    1. Цифровая криминалистика и реагирование на инциденты
    2. ОС Linux (DFIR) Старт: 16 мая
    3. Анализ фишинговых атак Старт: 16 мая Устройства для тестирования на проникновение Старт: 16 мая

    Скидки до 10%

    Полный список ближайших курсов ...

Статья ASM обучение #1

Ассемблер
Всем здравия, дорогие читатели, это первая статья из цикла по изучению такого языка программирования, как ассемблер. Весь цикл, кроме заключительной статьи с выводами - это перевод android приложения Assembly Guide, так что за первоисточником - туда. Итак начнём!

Введение
Что такое язык ассемблера?
Каждый персональный компьютер имеет микропроцессор, который управляет арифметической, логической и управляющей деятельностью компьютера.

Каждая семья процессоров имеет свой собственный набор инструкций для обработки различных операций, таких как получение ввода с клавиатуры, отображение информации на экране и выполнение различных других заданий. Эти инструкции называются машинным языком инструкции. Процессор понимает только инструкции машинного языка, которые являются строками состоящими из 1 и 0. Однако машинный язык слишком неясен и сложен для использования в разработке программного обеспечения. Таким образом, низкоуровневый ассемблер предназначен для определенного семейства процессоров, которое представляет различные инструкции в символьном коде и более понятной форме.

Преимущества языка ассемблера:
Понимание языка ассемблера позволяет осознать −

  • Как программы взаимодействуют с ОС, процессором и BIOS
  • Представление данных в памяти и других внешних устройств
  • Как процессор обращается к инструкции и выполняет ее
  • Как инструкции получают доступ и обрабатывают данные
  • Как программа обращается к внешним устройствам
Другие преимущества использования языка ассемблера:

  • Он требует меньше памяти и времени выполнения
  • Ассемблер позволяет перевести аппаратно-специфические сложные команды в более простой вид
Основные характеристики “железа”
Основное внутреннее оборудование ПК состоит из процессора, памяти и регистров. Регистры - это компоненты процессора, содержащие данные и адреса. Для выполнения программы система копирует ее с внешнего устройства во внутреннюю память. Процессор выполняет инструкции программы.

Основная единица хранения данных компьютера - бит; она может быть включена (1) или выключена (0). Группа из девяти связанных битов составляет байт, из которых восемь битов используются для данных, а последний - для четности. В соответствии с правилом четности, количество бит, на (1) в каждом байте всегда должно быть нечетным.

Таким образом, бит четности используется, чтобы сделать число битов в байте нечетным. Если четность четная, система предполагает, что была ошибка четности (хотя и редкая), которая могла быть вызвана из-за аппаратной неисправности или электрических помех.

Процессор поддерживает следующие размеры данных

Слово: 2-байтовый элемент данных

Двойное слово: пункт 4 байта (32 бит) данные

Четверное слово: 8 байт (64 бит) элемент данных

Абзац: 16-байтовая (128-битная) область

КБ: 1024 байт

Мегабайт: 1048576 байт

Двоичная система
Каждая система счисления использует позиционную нотацию, т. е. каждая позиция, в которой записана цифра, имеет разное позиционное значение. Каждая позиция - это сила основания, которая равна 2 для двоичной системы счисления, и эти силы начинаются с 0 и заканчиваются на 1.

В следующей таблице показаны позиционные значения 8-разрядного двоичного числа, для которого заданы все биты.
разрядное значение111111111
Позиция стоимость в виде степени с основанием2128643216842
1
Номер бита7654
3
2100

Значение двоичного числа основано на наличии 1 бита и их позиционном значении. Таким образом, значение данного двоичного числа −

1 + 2 + 4 + 8 +16 + 32 + 64 + 128 = 255

Шестнадцатеричная Система Счисления
Шестнадцатеричная система счисления по основанию 16. Цифры в этой системе варьируются от 0 до 15. По соглашению, буквы от A до F используются для представления шестнадцатеричных цифр, соответствующих десятичным значениям от 10 до 15.

Шестнадцатеричные числа в вычислениях используются для сокращения длинных двоичных представлений. В основном шестнадцатеричная система счисления представляет двоичные данные, разделяя каждый байт пополам и выражая значение каждого полубайта. В следующей таблице приведены десятичные, двоичные и шестнадцатеричные эквиваленты −

Десятичное число двоичное представление шестнадцатеричное представление
0= 0= 0
1= 1= 1
2= 10= 2
3= 11= 3
4= 100= 4
5= 101= 5
6= 110= 6
7= 111= 7
8= 1000= 8
9= 1001= 9
10= 1010= A
11= 1011= B
12= 1100= C
13= 1101= D
14= 1110= E
15= 1111= F
Чтобы преобразовать двоичное число в его шестнадцатеричный эквивалент, разбейте его на группы по 4 последовательных группы каждая, начиная справа, и запишите эти группы над соответствующими цифрами шестнадцатеричного числа.

Пример − двоичное число 1000 1100 1101 0001 эквивалентно шестнадцатеричному-8CD1

Чтобы преобразовать шестнадцатеричное число в двоичное, просто напишите каждую шестнадцатеричную цифру в ее 4-значный двоичный эквивалент.

Пример − шестнадцатеричное число FAD8 эквивалентно двоичному - 1111 1010 1101 1000

двоичная арифметика
Следующая таблица иллюстрирует четыре простых правила для двоичного сложения −

(я) (II) и (III) и (IV в)
Один
0 1 1 1
+0 +0 +1 +1
=0 =1 =10 =11
Правила (iii) и (iv) показывают перенос 1 бита в следующее левое положение.

Образец

Десятичный Двоичный
60 00111100
+00101010 42
102 01100110
Отрицательное двоичное значение выражается в дополнительном обозначении two. Согласно этому правилу, чтобы преобразовать двоичное число в его отрицательное значение, нужно обратить его битовые значения и добавить 1.

Образец

Количество 00110101 53
Обратный бит 11001010
Добавить 1 00000001
Номер -53 11001011
Чтобы вычесть одно значение из другого, преобразуйте вычитаемое число в формат дополнения two и добавьте числа.

Образец

Вычесть 42 из 53

Количество 00110101 53
Количество 00101010 42
Обратный биты 42 11010101
Добавить 1 00000001
Количество -42 11010110
53 - 42 = 00001011 11
Переполнение последнего 1 бита теряется.

Адресация данных в памяти
Процесс, посредством которого процессор управляет выполнением инструкций, называется циклом выборки-декодирования-выполнения или циклом выполнения. Он состоит из трех последовательных шагов −

Извлечение инструкции из памяти
Расшифровка или идентификация инструкции
Выполнение инструкции
Процессор может одновременно обращаться к одному или нескольким байтам памяти. Рассмотрим шестнадцатеричное число 0725H. Для этого числа потребуется два байта памяти. Старший байт и старший байт-это 07, а младший байт-в 25.

Процессор хранит данные в последовательности обратных байтов, т. е. байт низкого порядка хранится в адресе низкой памяти, а байт высокого порядка-в адресе высокой памяти. Таким образом, если процессор перенесет значение 0725H из регистра в память, то он сначала перенесет 25 на нижний адрес памяти и 07 на следующий адрес памяти.

Введение

х: адрес памяти

Когда процессор получает числовые данные из памяти для регистрации, он снова переворачивает байты. Есть два вида адресов памяти

Абсолютный адрес - прямая ссылка на конкретное местоположение.

Адрес сегмента (или смещение) - начальный адрес сегмента памяти со значением смещения.

На этом всё, за сим я откланяюсь, введение в язык ASM закончено.
 
Последнее редактирование:

fork

Green Team
11.01.2018
185
35
BIT
0
см дата публикации:
codeby.net
14.05.2019
sky****.net
19 Май 2019

Ни чего не смущает?
Дальше читать не стал, тупо прошёл только по двум твоим ссылкам.
Согласен, глупая ошибка. В любом случае часть взята отсюда , дополнена примерами.
 

dieZel

Green Team
08.04.2018
227
597
BIT
0
я-бы сказал, что это вы "сделали мой день" утверждениями типа:

>>>> Группа из девяти связанных битов составляет байт
байт - это ровно 8 бит, а паритетный добавляется при передачи этого байта через внешние порты. У процессора нет 9-битных регистров, а только 8,16,32,64 (не считая fpu).

>>>> Процессор поддерживает следующие размеры данных - Абзац: 16-байтовая область
не поддерживает он такой размер, ..и это не "абзац", а параграф.
128 (и больше) бит - прерогатива сопра с его "xmm/mmx/avx" регистрами.

ну и дальше в том-же духе..
Если начиная с введения уже такие неточности, то не знаю, что будет когда дойдём до винды. Хотя всякие статьи нужны, в том числе и такие.
эти уверждения взяты из англоязычного источника, который я перевожу

Ниже мое личное мнение.
Блин, накипело на самом деле, не могу я мимо пройти. Мое знакомство с автором этой статьи началось с этого "интервью", которое без смеха читать нельзя. Потом я пропустил две статьи и увидел эту. Там же оказался чистой воды копипаст вики и может еще чего (смотрите комментарии к "статье") . На что мне было отвечено: Обратите внимание на слово "некоторая". Нет не некоторая, большая часть статьи состоит из теории, которая стилистически отличается от вставок автора, что наталкивает на мысль о тупом копипасте с периодическими перестановками слов и заменами их на синонимы то ли для усложнения поиска в гугле первоисточника, то ли для самовнушения, что статья авторская(склоняюсь к первому варианту). Данная статья не несет никакой пользы ресурсу. Сегодня увидел эту статью, 2х минутный гуглинг не помог найти первоисточник, да и автор сам сказал, что перевод. Перевод это всегда хорошо. Сам ассемблер практически не знаю и судить статью не буду, но этот комментарий наводит на мысль, что это очень кривой перевод или перевод кривой статьи, или копипаст кривой статьи
Дальше решил изучить историю сообщений denez и нашел еще две прекрасные статьи. В этот раз я не буду прикладывать скрины, тут и так все понятно, если интересно откройте 4 вкладки: 2 статьи denez и две мои ссылки.
1) Социальная инженерия в примерах оригинал:
Даже название одинаковое...
Пару слов о теме СИ: Статьи на эту тему бессмысленны, тут надо читать Митника, изучать психологию и, как было написано в комментариях к той статье, оттачивать ораторское и театральное мастерство.
2) Защита умного дома от взлома в этой статье я не нашел копипаст всего, но опять же текст обрывист, что говорит нам о возможном копипасте. Но тут есть на что обратить внимание. В статье автор взял отрывок . Заменив слово контроллер на сервер. И вот потом возникают вопросы уже к содержанию той части статьи, которая была написана, возможно, самим denez.
Вот предложенные способы защиты дома

В современных умных домах, насколько мне известно, есть голосовой помощник типа алексы, алисы, сири и им подобным. И насколько я понимаю, все устройства связываются через роутер. А они всегда смотрят в интернет.. Об этом автор не подумал. Конечно можно перед уходом из квартиры отключать полностью электричество. Но это не вариант, тогда теряется возможность вызова тех же пожарных. Вдруг твой сосед уснул с сигареткой тут твой умный дом и почувствует дым через вентиляцию.


по пунктам:
  1. Не сервер, а контроллер, как выяснилось. Вот отрывок со статьи на сайте касперского Как ты туда собрался впихнуть антивирус?
  2. Согласен
  3. Точнее будет сказать "не выходите на связь с умным домом через общественные wifi сети. Вдруг твою статью прочитает обыватель, потом будет бояться в парке чайник включить
  4. Допустим
  5. В целом логично, но рынок умных домов еще не настолько большой, что бы там бу появилось.
Кого ты пытаешься обмануть себя или читателей?
Пожелания автору. Сдай сначала огэ, изучи как следует интересующие тебя темы, а потом пиши статьи.
За критику спасибо, однако если каждая моя статья будет встречаться таким отпором, то стоит ли мне писать далее?

можно ссылку на оригинал?
Learn Assembly Language Complete Guide (OFFLINE) - Apps on Google Play оригинал
 

fork

Green Team
11.01.2018
185
35
BIT
0
За критику спасибо, однако если каждая моя статья будет встречаться таким отпором, то стоит ли мне писать далее?
Только если разберешься в теме, глубже чем просто прочтение нескольких статей
 
  • Нравится
Реакции: CKAP, dieZel и Valkiria

CKAP

Green Team
10.06.2019
68
39
BIT
0
Только если разберешься в теме, глубже чем просто прочтение нескольких статей

Согласен. Это проблема всех переводов. По тому же Ирвину 4е издание.. читаешь и понимаешь, что сам автор хотел донести очень много, важной мелочи, но вот переводчик не смог это передать. А в некоторых случаях даже ввел новые понятия, либо просто увел в некое заблуждение\ступор.

Зы. По другим постам ТС, интерьер и тд.. Вспомнился комент с просторов "Учился на дизайнера, а отучился на психолога". К чему я это, да к тому что, подача у ТС слабовата. Тоже интервью, я бы выжал из спикера максимум инфы, раз уж он решил уделить мне свое время.

Что касаемо Ассемблера.. Это высший пилотаж, я в этом просто убежден. ТС бы скoopдиниpoвaть свои действия с человеком понимающим сабж, возможно и пост пилить совместно. Выделяя важные моменты, растравляя акцент, вписывая свои примечания, и подводя некий итог.

Либо вообще не заниматься данной темой. Во первых "она" действительно сложна. Во вторых "она" для ярых фанатиков, а не для масс.
 
  • Нравится
Реакции: dieZel

dieZel

Green Team
08.04.2018
227
597
BIT
0
Согласен. Это проблема всех переводов. По тому же Ирвину 4е издание.. читаешь и понимаешь, что сам автор хотел донести очень много, важной мелочи, но вот переводчик не смог это передать. А в некоторых случаях даже ввел новые понятия, либо просто увел в некое заблуждение\ступор.

Зы. По другим постам ТС, интерьер и тд.. Вспомнился комент с просторов "Учился на дизайнера, а отучился на психолога". К чему я это, да к тому что, подача у ТС слабовата. Тоже интервью, я бы выжал из спикера максимум инфы, раз уж он решил уделить мне свое время.

Что касаемо Ассемблера.. Это высший пилотаж, я в этом просто убежден. ТС бы скoopдиниpoвaть свои действия с человеком понимающим сабж, возможно и пост пилить совместно. Выделяя важные моменты, растравляя акцент, вписывая свои примечания, и подводя некий итог.

Либо вообще не заниматься данной темой. Во первых "она" действительно сложна. Во вторых "она" для ярых фанатиков, а не для масс.
Вот именно такую критику я хочу читать! И правда, и по фактам. Спасибо!
 
  • Нравится
Реакции: CKAP
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!