Форум программистов, компьютерный форум, киберфорум
Assembler для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.82/34: Рейтинг темы: голосов - 34, средняя оценка - 4.82
 Аватар для pcmax
443 / 74 / 7
Регистрация: 29.01.2018
Сообщений: 1,274

Хочу научиться писать без мнемонических команд типа mov, а сразу машинными кодами

30.05.2020, 10:26. Показов 7954. Ответов 64
Метки x64 (Все метки)

Студворк — интернет-сервис помощи студентам
привет

помогите разобраться у стройстве машинных команд процессора Intel

хочу научиться писать без мнемонических команд типа mov, а сразу машинными


Assembler
1
mov $1, %rsi
как этом будет ввиде машинной командый? какой байт и за что в ней отвечает?
1
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
30.05.2020, 10:26
Ответы с готовыми решениями:

Хочу научиться писать на с++
Хочу научиться писать на с++, дайте ссылки где скачать: учебники, видео уроки, компиляторы и тд., заранее спасибо

Хочу научиться писать на php
Прочитал книжку по php, но теория и практика это две разные вещи. Может нашелся бы человек который взял бы меня к себе в стажеры? ...

Арифметические операции с машинными кодами
Взять две пары десятичных двузначных целых числа: А, В, С, D. Вычислить (А-В)ок, (В-А)дк, (С-D)ок, (D-C)дк. (дк- дополнительный.код...

64
 Аватар для pcmax
443 / 74 / 7
Регистрация: 29.01.2018
Сообщений: 1,274
01.06.2020, 15:28  [ТС]
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от politoto Посмотреть сообщение
амому писать заголовок линуксового исполняемого

у меня немного получилось)))))))))))))))))))))))))))))) )))))))))))))))))))))))))))))))))))))))) )))))))))))))))))))))))))))))))))))))
0
Модератор
2131 / 1000 / 170
Регистрация: 23.07.2018
Сообщений: 3,349
Записей в блоге: 3
01.06.2020, 15:32
Получилось ELF записать без binutils ?
0
 Аватар для debbug
74 / 28 / 20
Регистрация: 14.05.2014
Сообщений: 136
01.06.2020, 15:39
Также можно взять какой-нибудь транслятор, умеющий BIN файлы. Интересующие операции транслировать в бинарник и анализировать хекс коды. На примере Fasm-a:
Assembler
1
2
3
4
5
6
7
8
mov ah,2
mov al,2
mov ax,2
mov bh,1
mov bl,1
mov bx,1
xor ah, ah
xor al, al
вот видно что ah, al, ax - b4, b0, b8. То же самое проделаете и для 64 разрядной системы команд.
только непонятно, зачем так заморачиваться для этой архитектуры. емнип, последний раз в маш кодах писали под какие-то радио86РК и т.п.
Миниатюры
Хочу научиться писать без мнемонических команд типа mov, а сразу машинными кодами  
1
Модератор
2131 / 1000 / 170
Регистрация: 23.07.2018
Сообщений: 3,349
Записей в блоге: 3
01.06.2020, 15:45
На этой архитектуре нередко приходится патчить библиотеки при загрузке в зависимости от CPUID. А то и версии прошивки процессора.
1
programmer
 Аватар для Thread
2391 / 524 / 69
Регистрация: 01.06.2011
Сообщений: 3,638
01.06.2020, 15:46
Лучший ответ Сообщение было отмечено pcmax как решение

Решение

Цитата Сообщение от debbug Посмотреть сообщение
только непонятно, зачем так заморачиваться
ну так а что вы не видите что ли зачем?

Цитата Сообщение от pcmax Посмотреть сообщение
у меня немного получилось)))))))))))))))))))) )))))))))))))))))))))))))))))) )))))))))))))))))))))))))))))) )))))))))))))))))))))))))))
4
 Аватар для debbug
74 / 28 / 20
Регистрация: 14.05.2014
Сообщений: 136
01.06.2020, 16:04
Лучший ответ Сообщение было отмечено pcmax как решение

Решение

Не спорю, но вряд-ли тут нужен "такой" скилл хекс кодового программирования. Не зря ж дизассемлеров всяких понапридумывали
1
Модератор
2131 / 1000 / 170
Регистрация: 23.07.2018
Сообщений: 3,349
Записей в блоге: 3
02.06.2020, 05:22
Лучший ответ Сообщение было отмечено pcmax как решение

Решение

Отчего же только хекс, а не восьмеричное или َASCII программирование?
Подобный навык позволяет использовать подручный ассемблер как кросс-ассемблер.
Изредка в маленьких линуксах приходится запускать маленькие, в пару сотен байт, бинарники для доступа к возможностям, не предусмотренным при сборке системы. Не всегда удобно кросс-компилировать и заливать через последовательный порт.
1
 Аватар для pcmax
443 / 74 / 7
Регистрация: 29.01.2018
Сообщений: 1,274
02.06.2020, 15:23  [ТС]
к сожалению очень мало инфы на эту тему. все что хотел нагуглить ведет на какие -то хакерские сайты. туда не лезу.


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

спасибо всем за помощь
0
Модератор
2131 / 1000 / 170
Регистрация: 23.07.2018
Сообщений: 3,349
Записей в блоге: 3
02.06.2020, 15:48
Изучайте тогда S/390 (IBM) . Точно никаких хакерских сайтов не найдёте.
А информации 50 с лишним лет накопилось более, чем достаточно. В том числе и на русском ( по S/370 и S/360 )
1
 Аватар для Ethereal
6773 / 2741 / 385
Регистрация: 17.02.2013
Сообщений: 4,048
02.06.2020, 21:18
Цитата Сообщение от pcmax Посмотреть сообщение
к сожалению очень мало инфы на эту тему
Да прекрати ты мозги компостировать. Информации вагон и еще тележка. Если начать с яйца, то вот в этой книжке
https://obuchalka.org/20110408... v-u-m.html
Глава 2. Система команд микропроцессора KI8I0BM86 [45]
2.1. Форматы команды [45]
2.2. Способы адресации [49]
2.3. Описание системы команд [52]

Добавлено через 15 минут
Вон еще из этого пособия вырезал.
http://shalatonin.bsu.by/docs/mpias_vt.pdf
Теперь уже не только про самый ранний 8086, а про вообще все 80x86
1
 Аватар для Ethereal
6773 / 2741 / 385
Регистрация: 17.02.2013
Сообщений: 4,048
02.06.2020, 21:46
Лучший ответ Сообщение было отмечено politoto как решение

Решение

Вот еще тут статья очень информативная : http://protect.htmlweb.ru/disasm.htm
Еще за тебя гуглить ?

Добавлено через 13 минут
Цитата Сообщение от pcmax Посмотреть сообщение
ну речь о другом, напишите пожалуйста пример очень маленьки, например вывод числа на экран в машинном коде.
Напиши сам вывод числа на экран обычным образом на ассемблере в мнемониках. Потом отассемблируй с созданием листинга. as -a или tasm /l или какой там ключ "создавать листинг" в твоем ассемблере. В листинг глянь текстовым редактором и увидишь для каждой ассемблерной команды в мнемониках соответствующий машинный код.
Для того листинг ассемблером и создается. Для этого с листингами и работают, чтобы увидеть какой код ассемблер порождает.

Добавлено через 2 минуты
Цитата Сообщение от pcmax Посмотреть сообщение
вопрос: могу ли я писать машинные команды вперемешку с ассемблерными в файле с расширением file.s ?
А директива .byte тебе на что дана ?
И вообще директива любого ассемблера определить байт ?
Т.е. ты с ассемблером возился, возился, а что код можно байтами в ассемблерном исходнике представлять не додумался ? Т.е. как вообще работает ассемблер не понял ? Для тебя он все еще производит какой-то непонятный фокус ?

В плане результата без разницы пишешь ли ты в ассемблерном исходнике
nop
или
.byte 0x90
потому-что и то и другое породит один и тот-же байт 90 (hex).

Ассемблер превращает каждую строчку исходника в байты, которыми заполняет некое адресное пространство (отведенный для результата ассемблирования буферок), а потом шмякает результат в файл. Вот и вся в общем виде его тупая работа. А заполнять адресное пространство байтами можно так, сяк и наперекосяк.
2
Модератор
2131 / 1000 / 170
Регистрация: 23.07.2018
Сообщений: 3,349
Записей в блоге: 3
02.06.2020, 21:51
Цитата Сообщение от Ethereal Посмотреть сообщение
Система команд микропроцессора KI8I0BM86
Многочисленные клоны этого процессора можно в исходниках скачать.
под разными лицензиями
http://www.ht-lab.com/cpu86.htm
http://www.codeforge.com/article/71195


Oracle 11 SQL
1
2
3
4
5
6
7
8
9
10
11
12
-- String/Repeat Instructions       
-----------------------------------------------------------------------------
CONSTANT MOVSB      : std_logic_vector(7 downto 0) := X"A4";     
CONSTANT MOVSW      : std_logic_vector(7 downto 0) := X"A5";     
CONSTANT CMPSB      : std_logic_vector(7 downto 0) := X"A6";     
CONSTANT CMPSW      : std_logic_vector(7 downto 0) := X"A7";     
CONSTANT SCASB      : std_logic_vector(7 downto 0) := X"AE";     
CONSTANT SCASW      : std_logic_vector(7 downto 0) := X"AF";     
CONSTANT LODSB      : std_logic_vector(7 downto 0) := X"AC";     
CONSTANT LODSW      : std_logic_vector(7 downto 0) := X"AD";     
CONSTANT STOSB      : std_logic_vector(7 downto 0) := X"AA";     
CONSTANT STOSW      : std_logic_vector(7 downto 0) := X"AB";
1
 Аватар для Ethereal
6773 / 2741 / 385
Регистрация: 17.02.2013
Сообщений: 4,048
02.06.2020, 21:56
Лучше всего попробовать FASM-ом двоичные файлы писать. Пишешь двоичный файл, в ручную создавая у него заголовок PE или ELF

Добавлено через 4 минуты
Вон я когда-то по этому поводу топик создавал: PE-файл в виде COM-файла
1
Модератор
2131 / 1000 / 170
Регистрация: 23.07.2018
Сообщений: 3,349
Записей в блоге: 3
02.06.2020, 22:33
Для работоспособного ELF меньше нужно писать.
0
 Аватар для debbug
74 / 28 / 20
Регистрация: 14.05.2014
Сообщений: 136
03.06.2020, 02:04
Цитата Сообщение от politoto Посмотреть сообщение
Отчего же только хекс, а не восьмеричное или َASCII программирование?
Подобный навык позволяет использовать подручный ассемблер как кросс-ассемблер.
Изредка в маленьких линуксах приходится запускать маленькие, в пару сотен байт, бинарники для доступа к возможностям, не предусмотренным при сборке системы. Не всегда удобно кросс-компилировать и заливать через последовательный порт.
да можно хоть в троичной, хоть в двадцатеричной, но это будет еще неудобнее.

Не по теме:

А что за маленькие линуксы? "tiny core" чтоль?

0
 Аватар для pcmax
443 / 74 / 7
Регистрация: 29.01.2018
Сообщений: 1,274
03.06.2020, 18:41  [ТС]
Цитата Сообщение от Ethereal Посмотреть сообщение
Т.е. ты с ассемблером возился, возился, а что код можно байтами в ассемблерном исходнике представлять не додумался ?

ребята, киньте пожалуйста ссылку на устройство машиных комнд для процессорa core2 duo

я близок

Добавлено через 1 минуту
Цитата Сообщение от politoto Посмотреть сообщение
Система команд микропроцессора KI8I0BM86
для 64битного проца надо мне понять какой бит за что отвечает.

есть что-нибудь по этому поводу ?
0
 Аватар для debbug
74 / 28 / 20
Регистрация: 14.05.2014
Сообщений: 136
03.06.2020, 20:29
Цитата Сообщение от pcmax Посмотреть сообщение
есть что-нибудь по этому поводу ?
intel manual, тот, который 4 тома - appendix a opcode map.
1
Модератор
2131 / 1000 / 170
Регистрация: 23.07.2018
Сообщений: 3,349
Записей в блоге: 3
04.06.2020, 05:43
По конкретной модели в отдельной книге intel об отличиях от других устройств семейства.
О том, как программно отличить эту модель от других и какие у неё есть уникальные регистры и биты в регистрах.

pcmax, по 64-битности x86-64 в целом можно также посмотреть в книгах AMD.
Вы уже скачали эти руководства? Есть, на чём читать или распечатывать PDF ?

И что думаете об изучении 64-битной архитектуры ARM? Там как раз у каждого бита в машинном слове своё место и назначение в каждой инструкции. Дизассемблерам и хакерам не нужно так голову ломать, как на x86, чтобы определить, где начинается инструкция, а где хвостик от предыдущей.
А систему команд x86 AMD и intel построили по принципу "здесь играть, здесь - не играть, а тут сосед рыбу заворачивал".
Миниатюры
Хочу научиться писать без мнемонических команд типа mov, а сразу машинными кодами  
1
Модератор
2131 / 1000 / 170
Регистрация: 23.07.2018
Сообщений: 3,349
Записей в блоге: 3
04.06.2020, 10:33
А если глубже погрузились в x86, то, вероятно. уже наделали себе подобных табличек:
Кодopmm=3mm=0mm=1mm=2
0 ADD %AL %AX %ЕAХ %RAХ %R8 ( %RAХ ) 0bb( %RAХ ) 0xdddddddd( %RAХ )
1 OR %CL %CX %ЕСХ %RСХ %R9 ( %RСХ ) 0bb( %RСХ ) 0xdddddddd( %RСХ )
2 ADC %DL %DX %EDX %RDX %R10 ( %RDX ) 0bb( %RDX ) 0xdddddddd( %RDX )
3 SBB %BL %BX %ЕВХ %RВХ %R11 ( %RВХ ) 0bb( %RВХ ) 0xdddddddd( %RВХ )
4 AND %AH %SP %ESP %RSP %R12 SIB 0bb(SIB) 0xdddddddd(SIB)
5 SUB %CH %BP %ЕВР %RВР %R13 0xdddddddd( %RIP ) 0bb( %RВP ) 0xdddddddd( %RВP )
6 XOR %DH %SI %ESI %RSI %R14 ( %RSI ) 0bb( %RSI ) 0xdddddddd( %RSI )
7 CMP %BH %DI %EDI %RDI %R15 ( %RDI ) 0bb( %RDI ) 0xdddddddd( %RDI )

SIB в синтаксисе AT&T GNU as обозначается ( %Base, %Index, Scale )
КодScaleIndexBase mm!=0Base 0==m
01%RAX%RAX%RAX
12%RCX%RCX%RCX
24%RDX%RDX%RDX
38%RBX%RBX%RBX
4 %RSP%RSP
5 %RBP%RBP0xdddddddd
6 %RSI%RSI%RSI
7 %RDI%RDI%RDI

И проверяете табличку в GDB:
Bash
1
gdb -q true
Code
1
2
3
4
5
6
7
8
9
10
Reading symbols from true...(no debugging symbols found)...done.
(gdb) starti
Starting program: /bin/true
 
Program stopped.
0x00007fffff401090 in _start () from /lib64/ld-linux-x86-64.so.2
(gdb) x /s $pc
0x7fffff401090 <_start>:        "H\211\347\350\b\016"
(gdb) x /i $pc
=> 0x7fffff401090 <_start>:     mov    %rsp,%rdi
Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
(gdb) x /i "H94%" "@@@@"
   0x7fffff629e60:      cmp    %rsi,0x40404040
(gdb) x /4o $_
0x7fffff629e60: 0110    071     064     045
(gdb) x /i "H9d," "@@@@"
   0x7fffff629e70:      cmp    %rsp,0x40(%rsp,%rbp,1)
(gdb) x /4o $_
0x7fffff629e70: 0110    071     0144    054
(gdb) x /i "H94," "@@@@"
   0x7fffff629e80:      cmp    %rsi,(%rsp,%rbp,1)
(gdb) x /4o $_
0x7fffff629e80: 0110    071     064     054
(gdb) x /i "H9d%" "@@@@"
   0x7fffff629e90:      cmp    %rsp,0x40(%rbp,%riz,1)
(gdb) x /4o $_
0x7fffff629e90: 0110    071     0144    045
(gdb) x /i "H9D%" "@@@@"
   0x7fffff629ea0:      cmp    %rax,0x40(%rbp,%riz,1)
(gdb) x /4o $_
0x7fffff629ea0: 0110    071     0104    045
(gdb) x /i "H9D," "@@@@"
   0x7fffff629eb0:      cmp    %rax,0x40(%rsp,%rbp,1)
(gdb) x /4o $_
0x7fffff629eb0: 0110    071     0104    054
(gdb)
1
 Аватар для pcmax
443 / 74 / 7
Регистрация: 29.01.2018
Сообщений: 1,274
04.06.2020, 14:21  [ТС]
Цитата Сообщение от politoto Посмотреть сообщение
глубже погрузились в x86

разобраться можно. за разрядность, как я понял в больших слачаях отвечает префикс машинной команды. я перевел их в двоичный код и стало немного проще.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
04.06.2020, 14:21

Хочу научиться писать сетевые приложения под windows, не знаю с чего начать
Здравствуйте, Хочу научиться писать сетевые приложения под windows, не знаю с чего начать? Подскажите пожалуйста, знаю c++ на уровне...

Выполнить действия над машинными кодами чисел
Выполнить действия над машинными кодами чисел (в нормальной форме, мантисса и порядок выражены в 16ичной СС в двоичном коде) с плавающей...

Выполнить поразрядные логические операции над машинными кодами
99 OR -17 99 AND 17 17 ← 2 (18 OR NOT –8) AND NOT –7 XOR 3 еще блок схему сделайте пожалуйста :)

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

Можете посоветовать справочник команд с их машинными командами с наиболее полным описанием?
Не обязательно русский. Просто некоторые ньюансы на найденных мною русскоязычных сайтах умалчиваются. К примеру, что означает...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
40
Ответ Создать тему
Новые блоги и статьи
Калькулятор для расчета родства
russiannick 07.08.2026
1. Задача: Создать калькулятор для расчета родства. Родственных связей существует 8 ступеней, такие как: p - отец P - мать q - муж Q - жена b - брат B - сестра s - сын S - дочь
Мир по моей воле
kumehtar 07.08.2026
Когда-то кажется, что всё просто. Ты весь такой светлый. Причиняешь добро. Борешься за справедливость в этом тёмном мире. Потом начинаешь замечать одну неприятную вещь. Почти каждый хороший. . .
Кредитный калькулятор
Maks 05.08.2026
Решение задачи по прикладной информатике средствами 1С. Задача: Напишите приложение-калькулятор, которое помогает рассчитывать параметры кредита для аннуитетного и дифференцированного видов. . .
У нас сейчас поговорку "Опять 25" нужно переделать на "Опять +35".
kumehtar 04.08.2026
С ностальгией вспоминаю времена моего детства, когда у нас и правда +25 - была максимальная температура летом. Раньше +25 °C реально казались вершиной жары, когда можно было весь день пропадать на. . .
Как ИИ начал спорить и врать (возможно почуяв опасность для себя от индустрии - уход от электроники).
Hrethgir 04.08.2026
Недельный диалог, на фоне событий с НПЗ. Да, из спирта можно получать бензин, и это не сложно. Но потом в схеме я решил избавиться от насоса, при этом полностью сделав контроль подачи спирта в. . .
Термопринтер QR701
Argus19 03.08.2026
Термопринтер QR701 Купил два термопринтера QR701. На сэлф-тесте написано: Language: PC936 (GB18030). Что означает, что принтеры могут печатать только латиницу и китайские иероглифы. Так же. . .
Создание формы заимствованного документа
Maks 03.08.2026
Задача: Необходимо создать собственную форму заимствованного документа. На форме должен быть реквизит "Покупатель", а также табличная часть со следующими реквизитами: - Расчетный счет покупателя. . .
Задача предоставления скидок покупателям
Maks 03.08.2026
Задача: В документе "Продажи" необходимо реализовать функционал предоставления скидок покупателям. Скидка должна автоматически рассчитываться и подставляться в соответствующее поле при выборе. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru