Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Генерация случайного числа больше нуля, но меньше единицы http://www.cyberforum.ru/cpp-beginners/thread811477.html
Всем привет. Подскажите, как можно генерировать псевдослучайное число больше нуля, но меньше единицы. При этом количество цифр после точки должно быть от 16 до 18 включительно. Заранее всем...
C++ Исправить ошибки в связном списке Почти готовая лабораторка, но не хватает несколько деталей. Помогите решить проблему, пожалуйста! Задание : 1. Создание списка из файла. 2.Insert <елемент> n Вставка елемента в позицию n. 3.... http://www.cyberforum.ru/cpp-beginners/thread811474.html
C++ Составить программу с аппроксимацией
С пятой задачей помогите. В голову ничего не лезит
сигнатуры C++
помогите соорудить или предложите свои варианты: 1. сканирование сигнатур байт в другой программе, адрес определить никак нельзя, так как он динамический(при перезаходе в программу все адреса...
C++ Почему не стоит создавать массив объектов? http://www.cyberforum.ru/cpp-beginners/thread811460.html
Нам преподаватель сказал, что создавать массив объектов лучше не стоит(надо создавать массив указателей на объекты) так как при наследовании что-то там происходит с преобразованиями типов и привёл...
C++ Rand - рандом не повторяющихся чисел Добрый вечер.Подскажите пожалуйста как сделать что бы рандомные числа не повторялись ? Понимаю что во внутрь надо положить цикл от 0 до i-1 если совпадет то повторять .. но не магу понять как... подробнее

Показать сообщение отдельно
_Ivana
3185 / 1801 / 153
Регистрация: 01.03.2013
Сообщений: 5,030
Записей в блоге: 3

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

18.03.2013, 00:45. Просмотров 623. Ответов 9
Метки (Все метки)

Пишу в вижуал Студии, делаю ассемблерные вставки, хочу вызывать си-процедуру, в которой тоже ассемблер - просто поменять значение одного регистра, не хочу никаких стеков, ОЗУ и прочего. При выходе похоже не восстанавливается из стека адрес возврата и программа вылетает. Подскажите, где ошибка? (Лишние куски кода убрал для краткости)
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;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru