Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Проблема с описанием структуры 
V
    Опции темы
Ak47black
  Дата 13.9.2009, 16:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2205
Регистрация: 2.12.2005

Репутация: нет
Всего: 0



Здравствуйте.
Подскажите пожалуйста как можно решить следующую проблему.
Есть вот такой вот код
Код

    opcodes OPCODE    <'MOV', 88h>
                    OPCODE    <'MOV', 89h>
                    OPCODE    <'MOV', 8Ah>
                    OPCODE    <'MOV', 8Bh>
                    OPCODE    <'MOV', 8Ch>
                    OPCODE    <'MOV', 8Eh>
                    
                    OPCODE    <'MOV', A0h>
                    OPCODE    <'MOV', A1h>
                    OPCODE    <'MOV', A2h>
                    OPCODE    <'MOV', A3h>
                    
                    OPCODE    <'MOV', B0h>
                    OPCODE    <'MOV', B1h>
                    OPCODE    <'MOV', B2h>
                    OPCODE    <'MOV', B3h>
                    OPCODE    <'MOV', B4h>
                    OPCODE    <'MOV', B5h>
                    OPCODE    <'MOV', B6h>
                    OPCODE    <'MOV', B7h>
                    OPCODE    <'MOV', B8h>
                    OPCODE    <'MOV', B9h>
                    OPCODE    <'MOV', BAh>
                    OPCODE    <'MOV', BBh>
                    OPCODE    <'MOV', BCh>
                    OPCODE    <'MOV', BDh>
                    OPCODE    <'MOV', BEh>                    
                    OPCODE    <'MOV', BFh>

первый строчки
Код

                    OPCODE    <'MOV', 89h>
                    OPCODE    <'MOV', 8Ah>
                    OPCODE    <'MOV', 8Bh>
                    OPCODE    <'MOV', 8Ch>
                    OPCODE    <'MOV', 8Eh>

Компилируются нормально, а дальше например вот эти
Код

                    OPCODE    <'MOV', A0h>
                    OPCODE    <'MOV', A1h>
                    OPCODE    <'MOV', A2h>
                    OPCODE    <'MOV', A3h>

получаются с ошибкой
Цитата

**Error** dis.asm(274) Undefined symbol: A0H
**Error** dis.asm(275) Undefined symbol: A1H
**Error** dis.asm(276) Undefined symbol: A2H
**Error** dis.asm(277) Undefined symbol: A3H

Как их правильно объявить?

И ещё хотелбы задать вопрос коственно связанный с этой темой: сколько всего существует вариантов команды mov?
В одном месте я видел 6, но вродебы их получается больше.  smile 
PM MAIL   Вверх
Goodwin98
Дата 13.9.2009, 17:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 41
Регистрация: 1.7.2009
Где: Deeptown

Репутация: 4
Всего: 5



Цитата

Как их правильно объявить?

нолик вначале числа приписывайте.
Код

                    OPCODE    <'MOV', 0A0h>
                    OPCODE    <'MOV', 0A1h>
                    OPCODE    <'MOV', 0A2h>
                    OPCODE    <'MOV', 0A3h>

PM MAIL ICQ   Вверх
Ak47black
Дата 13.9.2009, 17:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2205
Регистрация: 2.12.2005

Репутация: нет
Всего: 0



А вот так. Спасибо.
Я как насчет количества вариантов кодов, ктонибудь может подсказать?
PM MAIL   Вверх
Goodwin98
Дата 13.9.2009, 17:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 41
Регистрация: 1.7.2009
Где: Deeptown

Репутация: 4
Всего: 5



Я насчитал 7 вариантов:
1. Загрузка в любой общий регистр из др. общего регистра или памяти и наоборот
2. Загрузка в аккумулятор из памяти и наоборот.
3. Загрузка в память непосредственное значение.
4. Загрузка в 8 битный регистр.
5. Загрузка в сегментные регистры.
6. Загрузка из сегментных регистров.
7. Загрузка в регистр непосредственного числа.
Еще варианты, работающие с отладочными и др. регистрами.
PM MAIL ICQ   Вверх
Mikl_
Дата 14.9.2009, 03:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 537
Регистрация: 9.11.2007

Репутация: 8
Всего: 14



Цитата(Ak47black)
сколько всего существует вариантов команды mov?

Сразу вспомнилась цитата из фильма девчата 
Цитата
"Картошка жареная, отварная, пюре... картофель фри, картофель пай... картофельные пирожки с мясом, с грибами, с капустой... картофельные оладьи, рулет, запеканка, картофель тушенный с черносливом... шаньги!"

Возможные варианты команды:
                   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
PM MAIL   Вверх
Mikl_
Дата 14.9.2009, 06:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 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
PM MAIL   Вверх
Goodwin98
Дата 14.9.2009, 06:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 41
Регистрация: 1.7.2009
Где: Deeptown

Репутация: 4
Всего: 5



Вооще-то например
Код

mov     mem(8/16/32), imm(8/16/32)
и
mov     reg(8/16/32/64), imm(8/16/32)


Код

 mov     m, sreg
и
 mov     r16, sreg

Имеют разные опкоды. А вопрос был насчет именно их.

Ой не заметил. smile

Это сообщение отредактировал(а) Goodwin98 - 14.9.2009, 06:30
PM MAIL ICQ   Вверх
Ak47black
Дата 15.9.2009, 18:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2205
Регистрация: 2.12.2005

Репутация: нет
Всего: 0



Я тут так и несмог понять точно.
Давайте ребята я лучше открою новую тему, чтобы модератор не ругался и опишу проблему более обще.
Новая тема тут.

Это сообщение отредактировал(а) Ak47black - 15.9.2009, 18:33
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Asm для начинающих"
MAKCim
  • Проставьте несколько ключевых слов темы, чтобы её можно было легче найти.
  • Не забывайте пользоваться кнопкой КОД.
  • Телепатов на форуме нет! Задавайте чёткий, конкретный и полный вопрос. Указывайте полностью ошибки компилятора и компоновщика.
  • Новое сообщение должно иметь прямое отношение к разделу форума. Флуд, флейм, оффтопик запрещены.
  • Категорически запрещается обсуждение вареза, "кряков", взлома программ и т.д.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, MAKCim.

 
 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Asm для начинающих | Следующая тема »


 




[ Время генерации скрипта: 0.0536 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.