Форум программистов, компьютерный форум CyberForum.ru

__asm вставки (процессор Pentium) - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Генерация случайного числа больше нуля, но меньше единицы http://www.cyberforum.ru/cpp-beginners/thread811477.html
Всем привет. Подскажите, как можно генерировать псевдослучайное число больше нуля, но меньше единицы. При этом количество цифр после точки должно быть от 16 до 18 включительно. Заранее всем спасибо.
C++ Исправить ошибки в связном списке Почти готовая лабораторка, но не хватает несколько деталей. Помогите решить проблему, пожалуйста! Задание : 1. Создание списка из файла. 2.Insert <елемент> n Вставка елемента в позицию n. 3. DELETE N Удаление елемента з N позиции. 4.CHANGE M N – Смена елементов M N . 5.DUMP Вывод в конечный файл . Все работает, но когда открываю текстовый файл со списком или отчетом, вместо элементов... http://www.cyberforum.ru/cpp-beginners/thread811474.html
C++ Составить программу с аппроксимацией
С пятой задачей помогите. В голову ничего не лезит
сигнатуры C++
помогите соорудить или предложите свои варианты: 1. сканирование сигнатур байт в другой программе, адрес определить никак нельзя, так как он динамический(при перезаходе в программу все адреса меняются,байты остаются прежними) 2.массив к примеру 3C 6B 61 54 74 00 00 01 XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX...
C++ Почему не стоит создавать массив объектов? http://www.cyberforum.ru/cpp-beginners/thread811460.html
Нам преподаватель сказал, что создавать массив объектов лучше не стоит(надо создавать массив указателей на объекты) так как при наследовании что-то там происходит с преобразованиями типов и привёл пример того, как не стоит писать. Вот пример: class A { public virtual int f()=0; } class B: public A
C++ Rand - рандом не повторяющихся чисел Добрый вечер.Подскажите пожалуйста как сделать что бы рандомные числа не повторялись ? Понимаю что во внутрь надо положить цикл от 0 до i-1 если совпадет то повторять .. но не магу понять как реализовать. for ( i=0; i < c; i++) { B = 1 + rand()%11; // случайные числа от 1 до 11 printf("%d ",B ); } подробнее

Показать сообщение отдельно
_Ivana
2181 / 1386 / 124
Регистрация: 01.03.2013
Сообщений: 4,131
Записей в блоге: 2
18.03.2013, 00:45     __asm вставки (процессор Pentium)
Пишу в вижуал Студии, делаю ассемблерные вставки, хочу вызывать си-процедуру, в которой тоже ассемблер - просто поменять значение одного регистра, не хочу никаких стеков, ОЗУ и прочего. При выходе похоже не восстанавливается из стека адрес возврата и программа вылетает. Подскажите, где ошибка? (Лишние куски кода убрал для краткости)
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
unsigned char expand_CL(void)
{
    //unsigned char y;
    __asm{
        //MOV CL, x
        AND CL, BIN8(00000111)
        CMP CL, 3
        JB M1
        INC CL
M1:     CMP CL, 7
        JB M2
        INC CL
M2:     RET //MOV y, CL
    }
    return 0;
}
unsigned int _8_to_10(unsigned char x)
{
 
    __asm {
    MOV EAX, 0
    MOV AL, x
    CMP AL, BIN8(11110000)
    JB N1
        //y = (x&BIN8(00001100))<<6 | BIN8(10101010);
        AND AL, BIN8(00001100) 
        SHL EAX, 6
        OR  EAX, BIN8(10101010)
        JMP M_end
 
    //else if (x >= BIN8(11000000)) {
        //y = (x&BIN8(00110000))<<4;
        //c = x&BIN8(00000111);
        //if (c>=3) c++; if (c>=7) c++;
        //if (x&BIN8(00001000)) {y = y | c<<4 | BIN8(00001010);}
        //else {y = y | BIN8(10100000) | c;}
 
N1: CMP AL, BIN8(11000000)
    JB N2
        AND AL, BIN8(00110000) 
        SHL EAX, 4
 
        MOV CL, x
        CALL expand_CL
 
//      AND CL, BIN8(00000111)
//      CMP CL, 3
//      JB M1
//      INC CL
//M1:       CMP CL, 7
//      JB M2
//      INC CL
//M2:       //RET
 
        MOV CH, x
        TEST CH, BIN8(00001000)
        JZ M3
        OR  EAX, BIN8(00001010)
        SHL CL, 4
        OR  AL, CL
        JMP M4
M3:     OR  EAX, BIN8(10100000)
        OR  AL, CL
M4:     JMP M_end
 
N2: //else {
        //y = (x&BIN8(11000000))<<2;
        //c = (x&BIN8(00111000))>>3;
        //if (c>=3) c++; if (c>=7) c++;
  
 
M_end:
    MOV y, EAX
        }
        return y;
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 23:05. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru