Артем
ты там вроде 30/8, получится 3,75
Ну да, а тогда вопрос, зачем очищать остаток если он нужен для вычисления? или его нужно сохранять и отдельно считать?
Aiwan \ (•◡•) / _bot
Ну да, а тогда вопрос, зачем очищать остаток если он нужен для вычисления? или его нужно сохранять и отдельно считать?
какой остаток? у тя в dx часть резульата умножения (знак от -9 туда ушел - 0xFF). и перед делением dx надо обнулить (или расширить знак), тк он учавствует в делении dx:ax/bx
Артем
Понял
Артем
Спасибо
КТ315
ты какой асм используешь? зачем тут адреса?
Я бы посмотрел на ассемблер, в котором на каждой инструкции можно указывать адрес инструкции. Интересно...
Баир
Кто-нибудь может помочь с лабораторной на асм за вознаграждение?
­
­
А, он ливнул... Бот его обидел...
Ivan
у меня 3.5 посчитала 54
пофиксили значит)
Михаил
пофиксили значит)
надо к промпту дописать кое что, чтоб он не думал что самый умный и может пропускать ходы. разбиение на ходы это идеальное решение для моделей gpt кстати я решал так же, только пропустил 2-й ход
Klei
Привет)
Klei
Тут єсть те кто учат пайтон?
EXEZZZ
Тебе легче в чат где учат Пайтон
Klei
Накинеш пару?
­
Накинеш пару?
Гугол в помощь
Klei
Гугол в помощь
Да шлак там..
EXEZZZ
Заходишь в Google, ищешь, топ тг каналов по питону
EXEZZZ
И идёшь по ссылкам
Klei
Ладно,и на етом спасибо
­
Andrey крипта?
Nostromo
Ребят, помогите решить проблему с gdb. Написал программку, собрал ее при помощи nasm. Хочу ее попробовать в отладчике, но получаю ошибку: Single stepping until exit from function main, which has no line number information.
Nostromo
Вроди бы как это связано с отсутствием debug символов в файле
Nostromo
hello1: hello1.o gcc -o hello1 hello1.o -no-pie hello1.o: hello1.asm nasm -f elf64 -g -F dwarf hello1.asm -l hello1.lst
Nostromo
но в моем Makefile есть параметр -g
Nostromo
Обнови насм.
У меня 2.15.05. Это уже устаревшая версия?
Alex
У меня 2.15.05. Это уже устаревшая версия?
Это версия, где, по-видимому, есть баг.
Alex
Вроди бы как это связано с отсутствием debug символов в файле
Можно использовать ni и si, тогда исполнение пойдёт не по строками, а по инструкциям
Nostromo
Можно использовать ni и si, тогда исполнение пойдёт не по строками, а по инструкциям
Большое спасибо. Меня еще интересует возможность делать эти шаги не только вперед, но и назад. У меня ни rc ни reverce-next не работают (gdb) rc Target multi-thread does not support this command. (gdb) reverse-next Target multi-thread does not support this command.
Nostromo
int x=11, y=12, sum=0; int main(void) { __asm__( ".intel_syntax noprefix;" "mov rax,x;" "add rax,y;" "mov sum,rax" ); } Ребят, подскажите пожалуйста как при помощи gdb пройтись по ассемблерным инструкциям? Next сразу выбрасывает в конец, за предел ассемблерной вставки, si тоже.
Nostromo
Это точно хотя бы компилируется? Может, ты какой-то другой код отлаживал?
Все компилиуется и работает без проблем. Скопировал один в один. Вот Makefile для него: hello: hello.c gcc -g -o hello hello.c -masm=intel -no-pie
Nostromo
Нужна выдача гдб. Что он пишет по команде disassemble, и что он пишет по команде ni. Можно ещё попросить его pc выводить на каждом шаге
(gdb) b main Breakpoint 1 at 0x40110e: file hello.c, line 5. (gdb) r Starting program: /home/alex/code/asm/inline/hello [Thread debugging using libthread_db enabled] Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1". Breakpoint 1, main () at hello.c:5 5 asm( (gdb) disassemble Dump of assembler code for function main: 0x0000000000401106 <+0>: endbr64 0x000000000040110a <+4>: push rbp 0x000000000040110b <+5>: mov rbp,rsp => 0x000000000040110e <+8>: mov rax,QWORD PTR ds:0x404028 0x0000000000401116 <+16>: add rax,QWORD PTR ds:0x40402c 0x000000000040111e <+24>: mov QWORD PTR ds:0x404034,rax 0x0000000000401126 <+32>: mov eax,0x0 0x000000000040112b <+37>: pop rbp 0x000000000040112c <+38>: ret End of assembler dump. (gdb)
Michael
Всем привет, может кто знает в чем загвоздка? invoke GetStdHandle, STD_INPUT_HANDLE mov hIn, eax invoke SetConsoleMode, hIn, ENABLE_MOUSE_INPUT _DOLOOP: invoke ReadConsoleInput, hIn, offset ConsoleRecord, 1, offset nRead movzx eax, word ptr[ConsoleRecord.EventType] .if eax == 0 fn crt_puts, "error" .endif .if eax == MOUSE_EVENT fn crt_puts, "test" .endif jmp _DOLOOP Мне нужно, чтобы при любом нажатии мыши выводился текст. Но программа никак не реагирует. Однако если я поставлю .if eax == KEY_EVENT, то после нажатия на любую клавишу работать будет. Даже при том, что ConsoleMode установлен только в ENABLE_MOUSE_INPUT
Nostromo
Нужна выдача гдб. Что он пишет по команде disassemble, и что он пишет по команде ni. Можно ещё попросить его pc выводить на каждом шаге
(gdb) ni 0x0000000000401116 5 asm( (gdb) 0x000000000040111e 5 asm( (gdb) 0x0000000000401126 5 asm( (gdb) 11 } (gdb) Просто перпрыгивает
Nostromo
Этот вывод сразу же после предыдущего
Alex
Nostromo
Можете display/i $pc Включить и ещё раз инструкции попрыгать?
(gdb) display/i $pc 1: x/i $pc => 0x40110e <main+8>: mov rax,QWORD PTR ds:0x404028 (gdb) ni 0x0000000000401116 5 __asm__( 1: x/i $pc => 0x401116 <main+16>: add rax,QWORD PTR ds:0x40402c (gdb) 0x000000000040111e 5 __asm__( 1: x/i $pc => 0x40111e <main+24>: mov QWORD PTR ds:0x404034,rax (gdb) 0x0000000000401126 5 __asm__( 1: x/i $pc => 0x401126 <main+32>: mov eax,0x0 (gdb) 11 } 1: x/i $pc => 0x40112b <main+37>: pop rbp (gdb) 0x000000000040112c 11 } 1: x/i $pc => 0x40112c <main+38>: ret (gdb) Сейчас все иначе. Заработало... хм...
Nostromo
Спасибо.Вот только я ничего не понял)))
Nostromo
Почему сейчас он покаказал все инструкции?
Alex
)))) магия
Michael
А в crt_puts что? Может оно буферизируется? И тут не по нажатию мыши, тут по движению.
Да, для нажатия мыши надо ConsoleRecord.MouseEvent.dwButtonState == FROM_LEFT_1ST_BUTTON_PRESSED использовать. Но мне хотя бы на любое движение мыши, чтобы реагировало. А так в любом случае ничего не происходит. В crt_puts просто текст, чтобы я понял, отработало оно или нет
Michael
Michael
include \masm32\include\masm32rt.inc include \masm32\include\msvcrt.inc include \masm32\macros\macros.asm includelib \masm32\lib\msvcrt.lib .data ConsoleRecord INPUT_RECORD <> hIn dd 0 nRead dd 0 .code start: fn crt_puts, "lmao test" invoke GetStdHandle, STD_INPUT_HANDLE mov hIn, eax invoke SetConsoleMode, hIn, ENABLE_MOUSE_INPUT _DOLOOP: invoke ReadConsoleInput, hIn, offset ConsoleRecord, 1, offset nRead movzx eax, word ptr[ConsoleRecord.EventType] .if eax == 0 fn crt_puts, "error" .endif .if eax == MOUSE_EVENT fn crt_puts, "test" .endif jmp _DOLOOP invoke ExitProcess, 0 fn crt_system, "pause" end start
s54820
Работает, если убрать в настройках консоли «Выделение мышью».
s54820
Работает, если убрать в настройках консоли «Выделение мышью».
Чтобы включить этот режим, используйте ENABLE_QUICK_EDIT_MODE | ENABLE_EXTENDED_FLAGS. Чтобы отключить этот режим, используйте ENABLE_EXTENDED_FLAGS без этого флага.
Michael
А не знаешь почему с выделением не работало?
s54820
А не знаешь почему с выделением не работало?
Так оно себе движения мыши перехватывает.
Michael
Так оно себе движения мыши перехватывает.
Чтобы сама консоль распознала, идет выделение текста или нет, она перехватывала движение мыши для себя, при этом не оставляла этих данных уже самой программе. Теперь же не перехватывает и эти данные в программе есть. Насколько я понял. Спасибо большое за помощь
КТ315
@IvUyr
Guldan
@IvUyr
Это Эдик
КТ315
Это Эдик
Кто-кто?
­
Типичный школосос
­
🤣
А ещё и телефон свой спалил...
КТ315
А ещё и телефон свой спалил...
Да это бот, наверное.
­
Да это бот, наверное.
Не, воздыхатель JSоёба. Его, кстати, на хабре забанили. Опять.
Guldan
Да это бот, наверное.
Не, реальный человек
Guldan
Кто-кто?
"Илон маск" который
Guldan
Кто-кто?
Его творчество
Michael
Всем привет, столкнулся с проблемой: мне необходимо вывести вот такую строку: szBorder db "|", 10, "|", 10, "|", 10, 0 Я установил Курсор на позицию 0, 20 и вызываю crt_printf. Вот только вместе с переводом новой строки он почему-то еще и возврат каретки делает. Подумал, может прикол printf и использовал WriteFile, но проблема все та же
The Bird of Hermes
Ей не нужно возвращать каретку в консоли