![]() |
|
|
![]()
|
|
| Ak47black |
|
||||||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2205 Регистрация: 2.12.2005 Репутация: нет Всего: 0 |
Здравствуйте.
Подскажите пожалуйста как можно решить следующую проблему. Есть вот такой вот код
первый строчки
Компилируются нормально, а дальше например вот эти
получаются с ошибкой
Как их правильно объявить? И ещё хотелбы задать вопрос коственно связанный с этой темой: сколько всего существует вариантов команды mov? В одном месте я видел 6, но вродебы их получается больше. |
||||||||
|
|||||||||
| Goodwin98 |
|
||||
![]() Новичок Профиль Группа: Участник Сообщений: 41 Регистрация: 1.7.2009 Где: Deeptown Репутация: 4 Всего: 5 |
нолик вначале числа приписывайте.
|
||||
|
|||||
| Ak47black |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2205 Регистрация: 2.12.2005 Репутация: нет Всего: 0 |
А вот так. Спасибо.
Я как насчет количества вариантов кодов, ктонибудь может подсказать? |
|||
|
||||
| Goodwin98 |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 41 Регистрация: 1.7.2009 Где: Deeptown Репутация: 4 Всего: 5 |
Я насчитал 7 вариантов:
1. Загрузка в любой общий регистр из др. общего регистра или памяти и наоборот 2. Загрузка в аккумулятор из памяти и наоборот. 3. Загрузка в память непосредственное значение. 4. Загрузка в 8 битный регистр. 5. Загрузка в сегментные регистры. 6. Загрузка из сегментных регистров. 7. Загрузка в регистр непосредственного числа. Еще варианты, работающие с отладочными и др. регистрами. |
|||
|
||||
| Mikl_ |
|
||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 537 Регистрация: 9.11.2007 Репутация: 8 Всего: 14 |
Сразу вспомнилась цитата из фильма девчата
Возможные варианты команды: mov reg/mem, reg (т.е. mov reg,reg и mov mem,reg) reg – операнд в одном из регистров размером в байт, слово, двойное слово, четверное слово; r8 – операнд в одном из регистров размером в байт: AH, AL, BH, BL, CH, CL, DH, DL, BPL, SPL, DIL, SIL или один байт регистров (R8L – R15L) доступный когда используется REX.R и 64-битный режим; r16 – операнд в одном из регистров размером в слово: AX, BX, CX, DX, BP, SP, SI, DI или одно слово регистров (R8 – R15) доступный когда используется REX.R и 64-битный режим; r32 – операнд в одном из регистров размером в двойное слово: EAX, EBX, ECX, EDX, EBP, ESP, ESI, EDI или одно двойное слово регистров (R8D – R15D) доступный когда используется REX.R и 64-битный режим; r64 – операнд в одном из регистров размером в четверное слово RAX, RBX, RCX, RDX, RBP, RSP, RSI, RDI, R8 – R15 доступные когда используется REX.R и 64-битный режим mov reg, mem mov mem/reg(8/16/32/64), imm(8/16/32) imm, imm8, imm16, imm32, imm64 – непосредственный одно-, двух-, четырех-, восьмибайтовый операнд команды; mov sreg, m/r16 sreg – сегментный регистр: ES, CS, SS, DS, FS, GS mov m/r16, sreg MMX movd mmx,m64/mmx movq mmx,m64/mmx rmmx/m64 – MMX-регистр или 64-разрядный операнд в памяти SSE movups xmm,m128/xmm movups m128,xmm movaps xmm,m128/xmm movaps m128,xmm rxmm/m128 – XMM-регистр (от XMM0 до XMM7) или адрес 128-битной ячейки памяти SSE2 movdqu xmm,m128/xmm movdqu m128,xmm movupd xmm,m128/xmm movupd m128,xmm movdqa xmm,m128/xmm movdqa m128,xmm 3DNow! movq mmx,m64/mmx Это сообщение отредактировал(а) Mikl_ - 14.9.2009, 03:43 |
||||
|
|||||
| Mikl_ |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 537 Регистрация: 9.11.2007 Репутация: 8 Всего: 14 |
Ak47black,
Программирование на уровне битов номера регистров: dec| bin|W=0|W=1 | | | | rb |rw |rd |Segment|Control|Debug|Test 0|000|AL |AX |EAX| ES | CR0 | DR0 | – 1|001|CL|CX|ECX| CS | – | DR1 | – 2|010|DL|DX|EDX| SS | CR2 | DR2 | 3|011|BL|BX|EBX | DS | CR3 | DR3 |TR3 4|100|AH|SP|ESP| FS | CR4 | – |TR4 5|101|CH|BP|EBP| GS | – | – |TR5 6|110|DH|SI |ESI | – | – | DR6 |TR6 7|111|BH|DI |EDI | – | – | DR7 |TR7 инструкция | bin-код | hex-код |инструкция Поместить число imm в регистр |1011 w reg: imm |B0+rb|mov r8,imm8 | |B8+rw|mov r16,imm16 | |B8+rd|mov r32,imm32 Поместить число imm в регистр (альтернативная кодировка)|1100 011w:11 000 reg: imm|C6|mov r8,imm8 | |C7|mov r16,imm16 | |C7|mov r32,imm32 Поместить число imm в ячейку памяти mem |1100 011w:mod 000 r/m: imm|C6|mov m8,imm8 | |C7|mov m16,imm16 | |C7|mov m32,imm32 Поместить содержимое ячейки памяти mem в регистр reg | 1000 101w:mod reg r/m | 8A /r | mov r8,m8 8B /r| mov r16,m16 8B /r| mov r32,m32 Поместить содержимое регистра reg в ячейку памяти mem | 1000 100w:mod reg r/m| 88 /r| mov m8,r8 89 /r | mov m16,r16 89 /r | mov m32,r32 Поместить содержимое ячейки памяти с адресом (seg:offset)|1010 000w: full displacement |A0|mov al,moffs8 в регистр AL,AX,EAX | A1 |mov ax,moffs16 | A1 |mov eax,moffs32 Поместить содержимое регистра AL,AX,EAX в ячейку памяти |1010 001w: full displacement|A2|mov moffs8,al по адресу (seg:offset) |A3|mov moffs16,ax |A3|mov moffs32,eax Move to/from Control Register Move r32 to CR0 |0000 1111:0010 0010:11 000 reg|0F 22 /r|mov cr0,r32 Move r64 to extended CR0 |0000 1111:0010 0010:11 000 reg|0F 22 /r|mov cr0,r64 Move r32 to CR2 |0000 1111:0010 0010:11 010 reg|0F 22 /r|mov cr2, r32 Move r64 to extended CR2 |0000 1111:0010 0010:11 010 reg|0F 22 /r|mov cr2, r64 Move r32 to CR3 |0000 1111:0010 0010:11 011 reg|0F 22 /r|mov cr3, r32 Move r64 to extended CR3 |0000 1111:0010 0010:11 011 reg|0F 22 /r|mov cr3, r64 Move r32 to CR4 |0000 1111:0010 0010:11 100 reg|0F 22 /r|mov cr4, r32 Move r64 to extended CR4 |0000 1111:0010 0010:11 100 reg|0F 22 /r|mov cr4, r64 Move r32 to CR8 | |0F 22 /r|mov cr8, r32 Move r64 to extended CR8 | |REX+0F 22 /r|mov cr8, r64 Move CR0 to r32 |0000 1111:0010 0000:11 000 reg|0F 20 /r|mov r32,cr0 Move extended CR0 to r64 |0000 1111:0010 0000:11 000 reg|0F 20 /r|mov r64,cr0 Move CR2 to r32 |0000 1111:0010 0000:11 010 reg|0F 20 /r|mov r32,cr2 Move extended CR2 to r64|0000 1111:0010 0000:11 010 reg|0F 20 /r|mov r64,cr2 Move CR4 to r32|0000 1111:0010 0000:11 100 reg|0F 20 /r|mov r32,cr4 Move extended CR4 to r64|0000 1111:0010 0000:11 100 reg|0F 20 /r|mov r64,cr4 Move CR8 to r32 | |0F 20 /r|mov r32,cr8 Move extended CR8 to r64| |0F 20 /r|mov r64,cr8 Move to/from Debug Register Move r32 to debug register|0000 1111:0010 0011:11 eee reg|0F 23 /r|mov dr0-7, r32 Move r64 to extended debug register |0000 1111:0010 0011:11 eee reg|REX.W+0F 23 /r|mov dr0-7, r64 Move debug register to r32|0000 1111:0010 0001:11 eee reg|0F 21 /r|mov r32,dr0-7 Move extended debug register to r64|0000 1111:0010 0001:11 eee reg|REX.W+0F 21 /r|mov r64,dr0-7 Move to/from Segment Registers register to segment register|1000 1110:11sreg reg|8E /r|mov sreg,r16 lower 16 bits of r64 to segment register|1000 1110:11sreg reg|REX.W+8E /r|mov sreg,r64 memory to segment register|1000 1110:mod sreg r/m|8E /r|mov sreg,m16 lower 16 bits of m64 to segment register|1000 1110:mod sreg r/m|REX.W+8E /r|mov sreg,m64 segment register to register|1000 1100:11 sreg reg|8C /r|mov r16,sreg Move zero extend 16 bits segment register to r64|1000 1100:11 sreg r64|REX.W+8C /r|mov r64,sreg segment register to memory|1000 1100:mod sreg r/m|8C /r|mov m16,sreg Move zero extend 16 bits segment register to m64|1000 1100:mod sreg r/m64|REX.W+8C /r|mov m64,sreg Move to/from Test Registers register from TR6-TR7|0000 1111:0010 0100:|0F 24 /r|mov r32,tr6-7 TR6-TR7 from register|0000 1111:0010 0101:|0F 26 /r|mov tr6-7, r32 register from TR3|0000 1111:0010 0100:|0F 24 /r|mov r32,tr3 Это сообщение отредактировал(а) Mikl_ - 14.9.2009, 08:18 |
|||
|
||||
| Goodwin98 |
|
||||
![]() Новичок Профиль Группа: Участник Сообщений: 41 Регистрация: 1.7.2009 Где: Deeptown Репутация: 4 Всего: 5 |
Вооще-то например
Имеют разные опкоды. А вопрос был насчет именно их. Ой не заметил. Это сообщение отредактировал(а) Goodwin98 - 14.9.2009, 06:30 |
||||
|
|||||
| Ak47black |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2205 Регистрация: 2.12.2005 Репутация: нет Всего: 0 |
Я тут так и несмог понять точно.
Давайте ребята я лучше открою новую тему, чтобы модератор не ругался и опишу проблему более обще. Новая тема тут. Это сообщение отредактировал(а) Ak47black - 15.9.2009, 18:33 |
|||
|
||||
![]()
|
| Правила форума "Asm для начинающих" | |
|
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, MAKCim. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Asm для начинающих | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |