Size: a a a

Ассемблер

2020 December 12

A

Aleksandr in Ассемблер
китайский?
источник

DR

Dima Richev in Ассемблер
Aleksandr
китайский?
Конечно
источник

A

Aiwan ╭∩╮ (òÓ,) ╭∩╮b... in Ассемблер
Aleksandr
странный выбор, но ладно
а какой бы ты stm выбрал?
источник

DR

Dima Richev in Ассемблер
Ну, я просто смотрю, говорят, что самая распространённая. Да и туториалов на неё много, и выглядит приятно
Вот и выбрал
источник

A

Aleksandr in Ассемблер
я бы выбрал плату, на которой есть периферия, с которой можно работать. диодами поморгать, микрофон послушать, на дисплее порисовать, прочее
источник

DR

Dima Richev in Ассемблер
Aleksandr
я бы выбрал плату, на которой есть периферия, с которой можно работать. диодами поморгать, микрофон послушать, на дисплее порисовать, прочее
Так это докупается
источник

A

Aleksandr in Ассемблер
все и сразу на одной плате - дешевле и удобнее. впрочем, смотри сам
источник

RD

Ruslan Drif in Ассемблер
Добрый вечер. Интересует ответ на такой вопрос.
Вот допустим есть у меня массив байтовый на 5 элементов с наполнением 0,1,2,3,4, то есть в двоичном виде в памяти он выглядит так:
00000000 00000001 00000010 00000011 00000100
Пусть его адрес находится в ESI.

При выполнении команды shr dword ptr [esi + 1],1 (то есть я хочу сдвинуть последние 4 байта массива вправо на один разряд)
Я получаю такой результат:
00000000 00000000 10000001 00000001 00000010
Вопрос: куда делась единица с младшего разряда предпоследнего байта, почему она не перешла в старший бит последнего байта?
Спасибо.
источник

ST

Saenro T in Ассемблер
Ruslan Drif
Добрый вечер. Интересует ответ на такой вопрос.
Вот допустим есть у меня массив байтовый на 5 элементов с наполнением 0,1,2,3,4, то есть в двоичном виде в памяти он выглядит так:
00000000 00000001 00000010 00000011 00000100
Пусть его адрес находится в ESI.

При выполнении команды shr dword ptr [esi + 1],1 (то есть я хочу сдвинуть последние 4 байта массива вправо на один разряд)
Я получаю такой результат:
00000000 00000000 10000001 00000001 00000010
Вопрос: куда делась единица с младшего разряда предпоследнего байта, почему она не перешла в старший бит последнего байта?
Спасибо.
ROR — перейдёт (по кругу)
SHR — выпадет
RCR — выпадет в осадок и по кругу
источник

RD

Ruslan Drif in Ассемблер
Saenro T
ROR — перейдёт (по кругу)
SHR — выпадет
RCR — выпадет в осадок и по кругу
Осадок == флаг cf?
источник

ST

Saenro T in Ассемблер
Ruslan Drif
Осадок == флаг cf?
Да)
источник

RD

Ruslan Drif in Ассемблер
То есть для того что мне нужно подойдёт ROR?
источник

ST

Saenro T in Ассемблер
Да
источник

RD

Ruslan Drif in Ассемблер
Спасибо
источник
2020 December 13

H

Hello, World! in Ассемблер
Подскажите,
format ELF64
public _start

msg db "Hello, World!", 10, 13, 0
len = $-msg

_start:
 mov rax, 4
 mov rbx, 1
 mov rcx, msg
 mov rdx, len
 int 0x80
 mov rax, 4
 mov rbx, 1
 int 0x80
 call exit

exit:
 mov rax, 1
 mov rbx, 0
 int 0x80
Вывод хеллов ворда 2 раза, я так понимаю в регистрах
 
mov rcx, msg
 mov rdx, len
эти значения остаются, то есть нужно только писать
 
mov rax, 4
 mov rbx, 1
Чтоб вывести 2 раза строку?
источник

A

Aiwan ╭∩╮ (òÓ,) ╭∩╮b... in Ассемблер
Hello, World!
Подскажите,
format ELF64
public _start

msg db "Hello, World!", 10, 13, 0
len = $-msg

_start:
 mov rax, 4
 mov rbx, 1
 mov rcx, msg
 mov rdx, len
 int 0x80
 mov rax, 4
 mov rbx, 1
 int 0x80
 call exit

exit:
 mov rax, 1
 mov rbx, 0
 int 0x80
Вывод хеллов ворда 2 раза, я так понимаю в регистрах
 
mov rcx, msg
 mov rdx, len
эти значения остаются, то есть нужно только писать
 
mov rax, 4
 mov rbx, 1
Чтоб вывести 2 раза строку?
отладка откроет тебе истину
источник

ST

Saenro T in Ассемблер
Hello, World!
Подскажите,
format ELF64
public _start

msg db "Hello, World!", 10, 13, 0
len = $-msg

_start:
 mov rax, 4
 mov rbx, 1
 mov rcx, msg
 mov rdx, len
 int 0x80
 mov rax, 4
 mov rbx, 1
 int 0x80
 call exit

exit:
 mov rax, 1
 mov rbx, 0
 int 0x80
Вывод хеллов ворда 2 раза, я так понимаю в регистрах
 
mov rcx, msg
 mov rdx, len
эти значения остаются, то есть нужно только писать
 
mov rax, 4
 mov rbx, 1
Чтоб вывести 2 раза строку?
int 0x80 выводит первый раз.
int 0x80 выводит второй раз.
call exit — убери.
источник

H

Hello, World! in Ассемблер
Saenro T
int 0x80 выводит первый раз.
int 0x80 выводит второй раз.
call exit — убери.
То есть весь код что в exit не обязателен?
источник

H

Hello, World! in Ассемблер
Если я второй раз не пишу
mov rax, 4
 mov rbx, 1
то код не выведит 3 раза строку
источник

A

Aiwan ╭∩╮ (òÓ,) ╭∩╮b... in Ассемблер
Hello, World!
То есть весь код что в exit не обязателен?
не, ты делаешь прыжок на следущую инстукцию, убрав call этот участок все равно выполниться, тогда зачем его вызывать?
источник