Русские самосчёты

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.



Русский ассемблер

Сообщений 101 страница 132 из 132

101

Юрий написал(а):

А чем Вам не понравилиcь мои замены?
CALL   ()
RET     <--
JMP     -->
JLE      <=
JG       >
JE       ==
MOV    =

Не думаю, что для вызова подзадачи стоит использовать скобки.
Зачем они вообще, ведь никаких значений всё равно не передать?

Стремиться всё обозначить знаками не стоит.

0

102

Не думаю, что для вызова подзадачи стоит использовать скобки.
Зачем они вообще, ведь никаких значений всё равно не передать?

Это потакание привычке из языков высокого уровня обозначать вызов скобками.

0

103

Юрий написал(а):

Это потакание привычке из языков высокого уровня обозначать вызов скобками.

Мне кажется, что адрес со скобками после него будет выглядеть не очень хорошо.
Лучше словом всё-таки обозначить вызов по нужному адресу:

ВЫЗОВ 004B0048

А не:

004B0048()

0

104

Кстати - регистр можно так и обозвать порусски "СКЛАД".

0

105

Колос написал(а):

Кстати - регистр можно так и обозвать порусски "СКЛАД".

Нет, всё-таки склад — это место, где что-то хранят. «Складом» можно было бы назвать т.н. стэк, т.к. склад — это буквально то, что склажено, но слово «склад» уже занято.
Я придумал слово числоём. Может быть, оно здесь подойдёт? Или запоминатель, запомник, помник, помнец?

0

106

Юрий написал(а):

(кстати, обратил внимание, что в словаре замен для слова "регистр" замены нет. Можно попробовать "хранитель"

Может быть, хран или хрон, чтобы отличать от хранителей?

0

107

Yaisis написал(а):

но оставить возможность ассемблерных вставок, которые пусть будут на иностранном.

Нет, это неудобно. Русский низкояз всё-таки нужен. Ну, и пусть, что он будет машинозависимым.

0

108

Если не нравится 004B0048(), то можно записать -->004B0048. Вполне прозрачно. Меньше слов, больше условных и понятных значков - правильный путь, мне кажется. Зачем писать "СЛОЖИТЬ", если "+" - короче и быстрее читается?

0

109

Юрий написал(а):

Зачем писать "СЛОЖИТЬ", если "+" - короче и быстрее читается?

Действие сложения и его знак известны всем ещё с младших классов школы.

А вот:

ВЫЗОВ 004B0048

читается намного легче, чем:

-->004B0048

Юрий написал(а):

Меньше слов, больше условных и понятных значков - правильный путь, мне кажется.

В том-то и дело, что слишком много условных знаков затрудняют чтение исходника, на мой взгляд.

К тому же, вы говорили, что обозначение «-->» — для обычного перехода, т.е. JMP.

Возможно, стоит дать выбор разработчику. Но тогда получим неоднообразные исходники.

0

110

читается намного легче... слишком много условных знаков затрудняют чтение исходника, на мой взгляд.

Так их как раз-то немного. А в остальном - дело вкуса.

0

111

ВЫЗОВ 004B0048

можно (004B0048) или 004B0048()

0

112

Код:
// BIOS.v_static
Префикс MBR;
_Счетчик Отобразить(_Счетчик Символ):
	mov al, Символ;
	mov ah, 0x0E; // номер функции BIOS
	mov bh, 0x00; // страница видеопамяти
	int  0x10; //вызываем функцию BIOS
	=Символ;
.
 
_Счетчик ЗагрузитьСекторы(_Счетчик DiskID, _Счетчик НомерСектора, _Счетчик КолВо, _Счетчик Сегмент, _Счетчик Смещение):
	_Счетчик лКолВоПовторов=3;
	mov es, Сегмент;
	mov bx, Смещение;
	mov cx, (0<<6)+НомерСектора; // номер головки
	mov dl, DiskID; // номер диска
	mov dh, 0; // номер головки
	mov al, КолВо; // сколько секторов считать
	mov ah, 2; // номер функции BIOS
	int  0x13; //вызываем функцию BIOS
	< лКолВоПрочитано = ax;
	< лОш = ah;
	CF==0:
    MBR::Отобразить((лКолВоПрочитано & 0xF)+'0');
    =НомерСектора;
	.
	MBR::Отобразить((лОш>>6)+'0'); MBR::Отобразить(((лОш & 0x38)>>3)+'0'); MBR::Отобразить((лОш & 0x07)+'0');
	=0;
.
Конец области префикса;
Код:
// BIOS2.v_static
_Счетчик Отобразить(_Ссылка Текст):
	_Счетчик лРес=0;
	mov si, Текст;
	cld; //направление для строковых команд
	Цикл:
    mov ax, 0;
    lodsb; //загружаем очередной символ в al
    Иначе:
    	--;
    .
    mov ah, 0x0E; // номер функции BIOS
    mov bh, 0x00; // страница видеопамяти
    int  0x10; //вызываем функцию BIOS
    лРес=лРес+1;
	.
	=лРес;
.
 
_Счетчик Отобразить(_Счетчик Символ):
	mov al, Символ;
	mov ah, 0x0E; // номер функции BIOS
	mov bh, 0x00; // страница видеопамяти
	int  0x10; //вызываем функцию BIOS
	=Символ;
.
Код:
Реальный 0x7c00;
?Использовать("BIOS.v_static")
Программа:
	< лИндетификаторДиска=dl; // в переменную из dl
	MBR::Отобразить('>');
	_Счетчик лС='L';
	Если MBR::ЗагрузитьСекторы(лИндетификаторДиска, 2, 7, 0x1000, 0)==0: // 7
    лС='?';
	.
	MBR::Отобразить(лС);
.
Продолжить(0x1000, 0, 0x100, 0xEFFF); // первая пара сегмент+адрес перехода, вторая - сегмент+адрес стека
Граница 442;
Обнулить 512;
 
//тут продолжение
Реальный 0;
?Использовать("BIOS2.v_static")
Программа:
	Отобразить('S');
	Отобразить(" Go--->");
	Цикл:
	.
.
Граница 4096;

0

113

vic_one, что это?

0

114

Это загрузчик написанный на моем варианте ассемблера. Команды mov и прочие не стал переводить, но все это возможно и главное легко.

0

115

vic_one написал(а):

Это загрузчик написанный на моем варианте ассемблера. Команды mov и прочие не стал переводить, но все это возможно и главное легко.

А как устроен ваш низкояз? Он переводит на язык другого ассемблера, а потом уже строит программу? Или у вас не просто свой язык, а свой ассемблер?

0

116

Это компилятор порождающий bin файл, а дальше самописной утилитой записывается в начальные сектора VHD и в виртуальной (VirtualBOX) машине происходит выполнение. Без драйвера сетевой карты весь проект не имеет смысла, а с драйвером и желательно 32 битным - это будет хорошо.

0

117

vic_one написал(а):

Это компилятор порождающий bin файл, а дальше самописной утилитой записывается в начальные сектора VHD и в виртуальной (VirtualBOX) машине происходит выполнение. Без драйвера сетевой карты весь проект не имеет смысла, а с драйвером и желательно 32 битным - это будет хорошо.

Ясно. Но я не об этом спросил. Просто у Юрия низкояз сначала переводится на язык обычного ассемблера, а уже потом этим сторонним ассемблером строится приложение. А у вас как с этим? Тоже промежуточный перевод есть?
Вы свою ОС делаете?

0

118

Нет переводов. ОС писать очень круто, но идея была в запуске кода в привилегиях ОС, но однозадачно.

0

119

Про ассемблер. Написан транслятор, который переводит текст в текст MASM32, после чего последний переводит в бинарный код. На гитхаб  ничего не выкладывалось. Если Вам интересно - могу выслать исходники и описание. Отпишитесь на mail (друг человека) compiler . su.

0

120

Русский ассемблер это бред !!!

0

121

А как Вы можете обосновать свою точку зрения? Что конкретно Вам не нравится – сама идея или её конкретное воплощение?

0

122

сам думал о таком но значения кодов не знаю скинте список что они значат и какую функцию выполняют а я подумаю чем заменить так чтобы любой чайник хакером стать мог...gena.naldaev@yandex.ru

0

123

А для какого процессора нужен справочник? Для какой архитектуры?

Вот хороший справочник, для семейства процессоров x86.
http://www.club155.ru/x86cmd
За одно советую заглянуть в учебники:
В, Юров, С. Хорошенко-Ассемблер (учебный курс)-Питер (1999)
Ирвин К. Язык ассемблера для процессоров Intel 2005
Л. Скэнлон Пер. с англ. И. В. Емелин М.-Персональные ЭВМ IBM PC и XT. Программирование на языке ассемблера-Радио и связь(1989)

0

124

Управляющий написал(а):

Я имел ввиду, можно ли указывать не метку и не регистр, в котором адрес находится, а сам адрес напрямую. Например:

Почему CALL? Мы же вроде о русском ассемблере думаем?

А причём тут латинские буквы? Глупость какая-то. Если так рассуждать, то в русском ассемблере вообще русские буквы нужно запретить, иначе они всегда будут путаться: и в метках, и в регистрах, и в служебных словах. Если рассуждать здраво, то путаться в названиях регистров буквы не будут, т.к. имена регистров заданные, и приложение для набора исходника будет выделять цветом правильные названия регистров, а не правильные — подчёркивать и выводить предупреждение, преобразователь же будет выдавать ошибку на неправильное название регистра. Тоже самое относится и к меткам и служебным словам.

Это у них не вписывается, а мы можем сделать так, чтобы наши названия вписывались. Переиначивая одну рекламку, можно сказать: наш ассемблер — наши правила. Или вы всерьёз хотите тупо транслитерировать их названия?

Общего назначения: О1, О2 (или ОА, ОБ), ... ; счётчики: С1, С2 (или СА, СБ), ... ; и т.д.

А можно даже подлиннее названия придумать, не вижу в этом ничего страшного.

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

Кстати, если я правильно понял, то в указании "MOV EAX, adr" порядок такой: УКАЗАНИЕ куда, откуда. Так вот, на мой взгляд, было бы разумнее сделать наоборот: УКАЗАНИЕ откуда, куда. Так понятнее. Я не про это именно указание говорю (здесь, как я понял, будет просто присвоение), а вообще.

Идея очень хорошая. И с языком, и с указанием.

0

125

Задумка хорошая и нужная. Но как мне кажется (перекрещусь на всякий случай))) надо начинать со стандартов. Например ASCII - американский стандарт кодирования символов, знаков, цифр и т. д. А ведь русского стандарта нет. Соответственно такие мнемоники как ААА - ASCII Adjust After Addition - ASCII-коррекция после сложения, всё равно будут подразумевать американский стандарт. Но если пофантазировать, то можно этот опрос назвать - КОРАВС - коррекция регистра А в символ после сложения или ПЕРАМАС перенос битов из регистра Ам(А младший) в Ас(А старший) при переполнении Ам и преобразование в символ. Ну или типа того))

0

126

Американский семибитный ASCII затем продублирован в международном UTF-8. Изобретать новую отечественную кодировку нужно в том случае, если она в чём-то лучше предыдущих иностранных.

0

127

При старте процессора используется ASCII кодировка, а как мы знаем изначально семейство х86 процессоров стартует в допотопном 16-ти битном режиме. Да и производители видеокарт зашивают в свои ПЗУ кодировку ASCII, а не UTF-8, которая уже потом прикручивается.
Хоть процессору и плевать на человеческие языки, стандарты никуда не выкинешь). Конечно, если очень хочется, то можно попробовать переназвать опкоды на кириллице, а лучше написать свой транслятор в машинные коды с офигительно подробной документацией.
Такие символы как "{", "[", "<" и другие, которых нет в русской раскладке, можно переназначить на клавиши F1-F12 или на NumPad с выключенным NumLock-ом, чтобы не переключаться на латиницу каждый раз. А лучше сразу переходить кодить на Эльбрусы, но у них документации нет нормальной.
Прошу прощения, если много "воды" написал не по теме).

0

128

ОПКод                                                                                                                                                        Кириллица
AAA    ASCII-коррекция после сложения (ASCII Adjust after Addition)                                                            КАПОСЛОЖ
AAD    ASCII-коррекция регистра AX перед делением (ASCII Adjust AX before Division)                                  КАПДЕЛ
AAM    ASCII-коррекция регистра AX после умножения (ASCII Adjust AX after Multiply)                                  КАПОУМ
AAS    ASCII-коррекция после вычитания (ASCII Adjust after Subtraction)                                                     КАПОВЫЧ
ADC    Сложение с переносом (Add with Carry)                                                                                             СЛОЖПЕР
ADD    Сложение (Add)                                                                                                                                СЛОЖ
AND    Логическое "И" (Logical "AND")                                                                                                          ЛИ
ARPL    Коррекция поля RPL селектора (Adjust Requested Privilege Level)                                                       КОРПЛЕС
BOUND    Контроль нахождения индекса массива в границах (Check array index against Bound)                     КИНМАГ
BSF    Сканирование бита вперед (Bit Scan Forward)                                                                                     СКАБИПЕР
BSR    Сканирование бита назад (Bit Scan Reverse)                                                                                       СКАБИЗАД

Ну как-то так). Конечно тут можно много придираться, но осуждая, предлагайте!)

0

129

хттп://ref.x86asm.net/geek32.html
Тут лежат таблицы перевода ОПКода ассемблера в машинный код.

0

130

Тема русского ассемблера не очень популярна, мягко говоря. Если Вы заметили, тема на этом форуме была заведена 10 лет назад и бурных комментариев не вызвала. Во-первых, на ассемблере очень мало кто программирует. А кто программирует, тот в русификации особо не заинтересован. ОС "Колибри" написана на ассемблере и есть форум русскоязычных программистов этой ОС. У них тоже не обнаружилось интереса после моего сообщения о попытке русификации ассемблера.

0

131

Конечно я заметил. Дело в том, что энтузиастов мало, а в университетах учат на английском программировать. Потому что русского ничего нет в этой области, а то что есть, не особо популярно.
Мне лично лень учить английский, чтобы научиться программировать, по книгам особо не научишься, только методом проб и ошибок. Да и в книгах исчерпывающую информацию на русском проблематично добыть.
Может сейчас начнëт что-то меняться, но уверенности в этом нет.
Но кому-то надо быть первым!)))

0

132

У меня проблем с английским нет. Меня тянет к программированию на русском по другим причинам. Вам же могу сказать, что для программирования  надо знать английский в разрезе программирования, не больше. Да и компьютерные переводчики хороши, как никогда. Вот вам история:

Молодой учитель факультативно объяснил четвероклассникам основы языка программирования Fortran. И мальчики и девочки с увлечением начали писать простенькие программки.
Директор школы с удивлением спросила:
— Как же это у вас дети английские слова понимают, если английский только в пятом классе начнём проходить?! DO, IF, GOTO...
На что учитель ответил:
— Это для детей — не английские слова. Это для них это слова Фортрана!

Пусть и для Вас слова DO, IF, GOTO будут словами программирования, а не английского. Ну и двигаться в сторону русского программирования таки надо.

0

Быстрый ответ

Напишите ваше сообщение и нажмите «Отправить»