PDA

View Full Version : register indirect mode в Ассемблере



posterise
06-08-2006, 08:30 AM
разрешено ли такое объявление?:

mov CX, [EAX]
mov [EAX], CX

или

mov W1, [EAX]
mov [EAX],W1
считая, что W1 не doubleword (word or byte)

По-русски, в чем принципиальное различие между direct и indirect access mode ?
Не могу найти примеры неправильного описания и причин непозволительных описаний

Yura717
06-08-2006, 01:49 PM
разрешено ли такое объявление?:

mov CX, [EAX]
mov [EAX], CX

или

mov W1, [EAX]
mov [EAX],W1
считая, что W1 не doubleword (word or byte)

По-русски, в чем принципиальное различие между direct и indirect access mode ?
Не могу найти примеры неправильного описания и причин непозволительных описаний


2.1.4.2 Indirect addressing modes

Recall that the 80386 offers the programmer a choice of one of five indirect
addressing modes when writing an instruction: they are "immediate indirect",
"register indirect", "base register + offset indirect", "index register *
width + offset indirect", and "base register + index register * width + offset
indirect". Table 3 illustrates an example instruction from each of these
categories in both formats.

+-------------+-------------------
| Mode | Intel | |
+-------------+-------------------
| Immediate | MOV EAX, [0100]
| Register | MOV EAX, [ESI]
| Reg + Off | MOV EAX, [EBP-8] |
| R*W + Off | MOV EAX, [EBX*4 + 0100] |
| B + R*W + O | MOV EAX, [EDX + EBX*4 + 8] |
+-------------+----------------------------+--
Table 3. The five 80386 indirect addressing modes and their syntax.


http://webster.cs.ucr.edu/AoA/DOS/ch04/CH04-2.html

posterise
06-08-2006, 02:08 PM
http://webster.cs.ucr.edu/AoA/DOS/ch04/CH04-2.html

Я была на этой странице в этом пункте:
http://webster.cs.ucr.edu/AoA/DOS/ch04/CH04-3.html#HEADING3-5

Вроде как написано что такая форма позволена - legal forms
mov al, [eax]

Логически вроде должно проходить и с объектами в памяти, переменными как бы, типа BYTE( 8 ), и как я понимаю, типа WORD(16) тоже (и с регистрами ax,bx и т.д.). Но правильно ли это ? Хотелось найти в Инете контр-пример, который бы показал случаи в которых так и так нельзя. Но вот как раз их-то и не могу найти.

Yura717
06-08-2006, 02:39 PM
Я была на этой странице в этом пункте:
http://webster.cs.ucr.edu/AoA/DOS/ch04/CH04-3.html#HEADING3-5

Вроде как написано что такая форма позволена - legal forms
mov al, [eax]

Логически вроде должно проходить и с объектами в памяти, переменными как бы, типа BYTE( 8 ), и как я понимаю, типа WORD(16) тоже (и с регистрами ax,bx и т.д.). Но правильно ли это ? Хотелось найти в Инете контр-пример, который бы показал случаи в которых так и так нельзя. Но вот как раз их-то и не могу найти.
загрузите exe -шник в debugger и посмотрите.... думаю Вы знаете в чем разница между машинном кодом и ассемлером Когда то изучал ассемлер..
написал программу на машинном коде которая выводила на зкран "Hello,world!" размер программы был 23 байта (СОМ формат под DOS)
а если откомпилировать в среде ассемлера размер будет больше

posterise
06-08-2006, 07:11 PM
загрузите ехе -шник в дебуггер и посмотрите.... думаю Вы знаете в чем разница между машинном кодом и ассемлером Когда то изучал ассемлер..
написал программу на машинном коде которая выводила на зкран "Хелло,щорлд!" размер программы был 23 байта (СОМ формат под ДОС)
а если откомпилировать в среде ассемлера размер будет больше

ок, спасибо, anyway,
да, практический эксперимент, конечно, - всегда точное решение

posterise
06-10-2006, 12:21 AM
Ну в общем я уже проверила на практике что, как и почему получается, все ясно и понятно, можно тему закрыть :)