О мове в сборе - PullRequest
       27

О мове в сборе

2 голосов
/ 16 сентября 2010

переместить содержимое регистра bx в регистр ax

MOV ax, bx

Почему синтаксис такой странный?

Mov ax, (до) bx на самом деле означает move содержимое от bx до ax, есть ли историческая причина определить его таким образом?

Ответы [ 3 ]

10 голосов
/ 16 сентября 2010

Рассмотрим код

x = 5

Вероятно, значение 5 присваивается х.Хотели бы вы 5 = х?

Точно так же не стоит пытаться сравнивать язык английский с кодированием.Это то, что исторически также произошло.Английский может сказать, переместить это к этому.Но компьютерные архитекторы так к этому относятся.

Таким образом, в основном процесс:

X := Y

можно было бы лучше описать как

7 голосов
/ 16 сентября 2010
MOV ax, bx

Это означает, что ax = bx (точнее переместить bx к топору, точнее скопировать bx к топору). В этом синтаксисе ассемблера первым операндом является пункт назначения - это обычный случай, например, в функциях C:

strcpy(dest, source);

В AT & T Assembler первый операнд является источником. Как правило, это выглядит странно, и пользователи AT & T Assembler делают интересные ошибки из-за этого.

1 голос
/ 16 сентября 2010

Выдержка из википедии

Синтаксис: язык ассемблера x86 имеет две основные ветви синтаксиса: синтаксис Intel, первоначально использовавшийся для документации платформы x86, и синтаксис AT & T.Синтаксис Intel доминирует в мире MS-DOS и Windows.В мире Unix / Linux оба используются, потому что GCC поддерживал только AT & T-синтаксис в прежние времена.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...