Русские вычислители

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

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



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

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

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

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

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