Статья 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 закончено.
 
Последнее редактирование:

petor

Green Team
26.04.2019
19
13
BIT
0
Есть два вида адресов памяти
Ой какой у Вас легкий асм...
А то в тырнете такой Ужас, такой Ужас... твориться, гляньте:

На этом всё, за сим я откланяюсь, введение в язык ASM закончено.
Прям не нарадуюсь - какой прекрасный у Вас "язык ASM" - НИ ОДНОЙ КОМАНДочки нет...
А то помню когда на Intel 8080 писали, так ТАМ УЖАС-УЖАС-УЖАС: более двухсот команд было...
А на 386-м еще и защищенный режим ввели...
)))
 

dieZel

Green Team
08.04.2018
227
598
BIT
0
Ой какой у Вас легкий асм...
А то в тырнете такой Ужас, такой Ужас... твориться, гляньте:


Прям не нарадуюсь - какой прекрасный у Вас "язык ASM" - НИ ОДНОЙ КОМАНДочки нет...
А то помню когда на Intel 8080 писали, так ТАМ УЖАС-УЖАС-УЖАС: более двухсот команд было...
А на 386-м еще и защищенный режим ввели...
)))
это лишь введение, это МАКСИМАЛЬНО теоретические знания
 

petor

Green Team
26.04.2019
19
13
BIT
0
это лишь введение, это МАКСИМАЛЬНО теоретические знания
Позвольте еще пару буковок:

1​
2​
3​
4​
5​
6​
7​
8​
9​
10​
11​
12​
13​
14​
15​
16​
17​
18​
19​
 
Последнее редактирование:
З

залётный

надеюсь не про дос собираетесь раскрыть тему?
 

dieZel

Green Team
08.04.2018
227
598
BIT
0
Позвольте еще пару буковок:

1​
2​
3​
4​
5​
6​
7​
8​
9​
10​
11​
12​
13​
14​
15​
16​
17​
18​
19​
друг мой, я просто перевожу, поэтому ко мне претензий не должно быть
 

petor

Green Team
26.04.2019
19
13
BIT
0
друг мой, я просто перевожу, поэтому ко мне претензий не должно быть
Что Вы - у меня и в мыслях не было - Какие претензии? О чем Вы?

Может у кого-нибудь "бессонница" - и он/она захочет почитать доп. материал...
Так сказать "складываю в одно (в единое) место"
Только и всего...
Например тут есть еще "добавка"...

А у Вас - авторский перевод - Так?
Даже если у кого-нибудь "зачешется" подискутировать о переводе той или иной фразы - Вы "так видите"("Приключения Принца Флоризеля")... Согласны?
 
Последнее редактирование:
  • Нравится
Реакции: CKAP и dieZel

dieZel

Green Team
08.04.2018
227
598
BIT
0
Что Вы - у меня и в мыслях не было - Какие претензии? О чем Вы?

Может у кого-нибудь "бессонница" - и он/она захочет почитать доп. материал...
Так сказать "складываю в одно (в единое) место"
Только и всего...
Например тут есть еще "добавка"...

А у Вас - авторский перевод - Так?
Даже если у кого-нибудь "зачешется" подискутировать о переводе той или иной фразы - Вы "так видите"("Приключения Принца Флоризеля")... Согласны?
да, это мой, авторский перевод, а если кому-либо не понравится мой перевод, то я готов поговорить с ним и найти компромисс
 

Marylin

Mod.Assembler
Red Team
05.06.2019
324
1 441
BIT
649
я имею в виду, что ассемблер под MS-DOS будет рассматриваться в статье, или под Win? Если первое - то имхо неактуально.
 

Marylin

Mod.Assembler
Red Team
05.06.2019
324
1 441
BIT
649
я-бы сказал, что это вы "сделали мой день" утверждениями типа:

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

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

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

Marylin

Mod.Assembler
Red Team
05.06.2019
324
1 441
BIT
649
имхо кто пишет статьи, должен быть готов к критике - ничего личного.
асм - это низкий уровень, где каждая буква имеет значение
 

SearcherSlava

Red Team
10.06.2017
943
1 261
BIT
206
Have a nice DOS & apt get install, и, конечно же, всем хорошего настроения, инфоопасные братья и сестры!
Ссылочка на буквари:
 

fork

Green Team
11.01.2018
185
35
BIT
1
Ниже мое личное мнение.
Блин, накипело на самом деле, не могу я мимо пройти. Мое знакомство с автором этой статьи началось с этого "интервью", которое без смеха читать нельзя. Потом я пропустил две статьи и увидел эту. Там же оказался чистой воды копипаст вики и может еще чего (смотрите комментарии к "статье") . На что мне было отвечено:
Безусловно, некоторая инфа была взята с вики, но на форуме этой темы нет, да и к тому же, ты попробуй почитать вики, там туча инфы, ничего непонятно, я некоторое скопировал, чуток изменил, дабы читать проще было. А за критику благодарю
Обратите внимание на слово "некоторая". Нет не некоторая, большая часть статьи состоит из теории, которая стилистически отличается от вставок автора, что наталкивает на мысль о тупом копипасте с периодическими перестановками слов и заменами их на синонимы то ли для усложнения поиска в гугле первоисточника, то ли для самовнушения, что статья авторская(склоняюсь к первому варианту). Данная статья не несет никакой пользы ресурсу. Сегодня увидел эту статью, 2х минутный гуглинг не помог найти первоисточник, да и автор сам сказал, что перевод. Перевод это всегда хорошо. Сам ассемблер практически не знаю и судить статью не буду, но этот комментарий наводит на мысль, что это очень кривой перевод или перевод кривой статьи, или копипаст кривой статьи
я-бы сказал, что это вы "сделали мой день" утверждениями типа:

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

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

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

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

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

fork

Green Team
11.01.2018
185
35
BIT
1
только дописал комментарий выше и увидел это
30476

 

sdd28

Member
17.02.2019
10
0
BIT
0
хорошая подборка статей по одноименной теме, давно-давно сам по ним учил основы реверсинга, ассемблера и etc:
 

centr

Green Team
31.01.2017
408
477
BIT
0
Дальше решил изучить историю сообщений denez и нашел еще две прекрасные статьи. В этот раз я не буду прикладывать скрины, тут и так все понятно, если интересно откройте 4 вкладки: 2 статьи denez и две мои ссылки.
1) Социальная инженерия в примерах оригинал:
см дата публикации:
codeby.net
14.05.2019
sky****.net
19 Май 2019

Ни чего не смущает?
Дальше читать не стал, тупо прошёл только по двум твоим ссылкам.
 
  • Нравится
Реакции: fork и Глюк
Мы в соцсетях:

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