169 похожих чатов

Всем привет, как можно получить количество символов в строке в

Fasm x86?

24 ответов

26 просмотров

scasb

Str db “fasm”,0 ;строка .sizeof = $ - str ; размер Размер в байтах без учета завершающего нуля

The Bird of Hermes
Но только для статика.

Наверное , я пока не знаю

s54820
А куда ноль девается?

Не знаю, но я читал, что он не учитывается

Alexey
Не знаю, но я читал, что он не учитывается

Он стрленом не учитывается, а тут простая арифметика.

$ показывает текущий адрес https://metanit.com/assembler/nasm/3.3.php

Alexey
Не знаю, но я читал, что он не учитывается

Никуда не девается, все учитывается.

.- Автор вопроса
s54820
А куда ноль девается?

Может, отчет с 0 начинается и потом ноль заверщающий уравновешивает Типо fasm,0 01234

Alexey
Может, отчет с 0 начинается и потом ноль заверщающ...

Нет никакого отсчёта. Размер вычисляется за счёт арифметики указателей

The Bird of Hermes
Нет никакого отсчёта. Размер вычисляется за счёт а...

То есть разница байта с которого начинается строка, и которым заканчивается?

Dimmu
нулевого?

Символ $ указывает на текущий адрес. Нет, не нулевого, а того, который после нулевого

.
а если не статик

Не совсем понимаю, что Вы подразумеваете под «динамикой» Но repe scasb выглядит неплохо

Alexey
Не совсем понимаю, что Вы подразумеваете под «дина...

Динамика значит строка находится в динамической памяти или поступает функции как аргумент, например, и на этапе компиляции длину строки вычислить невозможно

Alexey
Не совсем понимаю, что Вы подразумеваете под «дина...

Под динамикой имеется в виду реализация функции strlen. А $-str это то же самое, что написал в исходном коде строку, и посчитал пальцем сколько букв. Только фасм немного в этом помог

Похожие вопросы

Обсуждают сегодня

а через ESC-код ?
Alexey Kulakov
29
30500 за редактор? )
Владимир
47
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
13
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
в JclConsole объявлено так: function CtrlHandler(CtrlType: DWORD): BOOL; stdcall; - где ваше объявление с stdcall? у вас на картинке нет stdcall
Karagy
8
Как передать управляющий символ в открытую через CreateProcess консоль? Собсна, есть процедура: procedure TRedirectThread.WriteData(Data: OEMString); var Written: Cardinal;...
Serjone
6
Ребят в СИ можно реализовать ООП?
Николай
33
program test; {$mode delphi} procedure proc(v: int32); overload; begin end; procedure proc(v: int64); overload; begin end; var x: uint64; begin proc(x); end. Уж не знаю...
notme
6
у вас два процесса. один посылает другому сигнал. у вас есть код обоих процессов? если всё не так - расскажите как оно на самом деле. а именно кто кому чего, есть-ли консоли,...
Karagy
6
Карта сайта