Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Низкоуровневое программирование > Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 22.03.2009, 19:31   #1
Ivan_32
somewhere else
Участник клуба
 
Аватар для Ivan_32
 
Регистрация: 17.07.2008
Сообщений: 1,409
Вопрос Вопросы по коммандам ассемблера

Думаю тема будет полезной, учитывая то что наверняка те комманды про которые я спрошу непонятны многим новичкам вроде меня.
ROR и ROL - что делают эти комманды? Написано что они делают какую то побитовую ротацию вправо и влево соответственно. Есть ли в дискретной математике аналогичные операции?
И интересует принцип работы команды TEST - она производит ведь сравнение по маске?
TEST 1001,1000
Сравнение вернет TRUE или нет?
Знаю вопросы дурацкие но все же знания нужно восполнить.
"Тяжело в учении, легко в бою" - А.В. Суворов
Ivan_32 вне форума Ответить с цитированием
Старый 22.03.2009, 19:46   #2
rpy3uH
добрый няша
Старожил
 
Аватар для rpy3uH
 
Регистрация: 29.10.2006
Сообщений: 4,804
По умолчанию

http://programmersclub.ru/assembler11/
ROR и ROL - это циклический сдвиг, в дискретной математике аналогов нет.
Цитата:
ROL и ROR сдвигают все биты операнда влево(для ROL) или вправо(для ROR) на один разряд, при этом старший(для ROL) или младший(для ROR) бит операнда вдвигается в операнд справа(для ROL) или слева(для ROR) и становится значением младшего(для ROL) или старшего(для ROR) бита операнда; одновременно выдвигаемый бит становится значением флага переноса cf. Указанные действия повторяются количество раз, равное значению второго операнда.
Цитата:
Сообщение от Ivan_32 Посмотреть сообщение
TEST 1001,1000
Сравнение вернет TRUE или нет?
у этой операции не может быть результат TRUE, как и у любой другой в ассемблере. Команда производит операцию AND между операндами и устанавливает необходимые флаги в регистре флагов. Отличие от команды AND в том, что она не сохраняет результат.
rpy3uH вне форума Ответить с цитированием
Старый 22.03.2009, 23:20   #3
Ivan_32
somewhere else
Участник клуба
 
Аватар для Ivan_32
 
Регистрация: 17.07.2008
Сообщений: 1,409
По умолчанию

Цитата:
у этой операции не может быть результат TRUE
я ведь образно Ну она сравнит только бит который установлен в маске или все биты?
Короче проще говоря:
CMP 6,2 - результат сравнения будет отрицательный т.е. не равны. а у
TEST 6,2 - результат сравнения будет положительный т.е равны. Я правильно мыслю?
"Тяжело в учении, легко в бою" - А.В. Суворов
Ivan_32 вне форума Ответить с цитированием
Старый 23.03.2009, 07:56   #4
rpy3uH
добрый няша
Старожил
 
Аватар для rpy3uH
 
Регистрация: 29.10.2006
Сообщений: 4,804
По умолчанию

Цитата:
Сообщение от Ivan_32 Посмотреть сообщение
TEST 6,2 - результат сравнения будет положительный т.е равны. Я правильно мыслю?
будет не равны. 6 AND 2 = 2, флаг ZF будет сброшен
rpy3uH вне форума Ответить с цитированием
Старый 24.03.2009, 01:39   #5
Ivan_32
somewhere else
Участник клуба
 
Аватар для Ivan_32
 
Регистрация: 17.07.2008
Сообщений: 1,409
По умолчанию

Возникла проблема в программе(чувствую из за собственного невежества) RDTSC выполняется корректно, а вот RDTSCP , вызывает краш. Код в обоих случая абсолютно одинаковый. Краш вызывает именно эта инструкция - проверял. Она требует повышения привилегий до R0 ?
"Тяжело в учении, легко в бою" - А.В. Суворов
Ivan_32 вне форума Ответить с цитированием
Старый 24.03.2009, 07:52   #6
Д'якон
Форумчанин
 
Регистрация: 05.12.2007
Сообщений: 236
По умолчанию

Может она не поддерживается?
Д'якон вне форума Ответить с цитированием
Старый 24.03.2009, 08:00   #7
rpy3uH
добрый няша
Старожил
 
Аватар для rpy3uH
 
Регистрация: 29.10.2006
Сообщений: 4,804
По умолчанию

Цитата:
Сообщение от Ivan_32 Посмотреть сообщение
Она требует повышения привилегий до R0 ?
Если флаг TSD в регистре CR4 установлен, то интрукцию можно вызывать только на нулевом уровне привилегий. В общем, если можно вызывать RDTSC, значит можно вызывать и RDTSCP

Последний раз редактировалось rpy3uH; 24.03.2009 в 08:03.
rpy3uH вне форума Ответить с цитированием
Старый 01.04.2009, 05:12   #8
Ivan_32
somewhere else
Участник клуба
 
Аватар для Ivan_32
 
Регистрация: 17.07.2008
Сообщений: 1,409
По умолчанию

Правда ли то что команды для блочной обработки данных(CMPSx MOVSx итд) медленней своих аналогов на основе CMP MOV итд ?
"Тяжело в учении, легко в бою" - А.В. Суворов
Ivan_32 вне форума Ответить с цитированием
Старый 01.04.2009, 17:31   #9
rpy3uH
добрый няша
Старожил
 
Аватар для rpy3uH
 
Регистрация: 29.10.2006
Сообщений: 4,804
По умолчанию

говорят да. а что? трудно протестить?
rpy3uH вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Зацените IDE для Ассемблера. G&R Софт 0 29.01.2009 18:09
Изучение ассемблера, начало Lich Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 2 18.06.2008 14:16
вставки из ассемблера макс07 Общие вопросы C/C++ 7 13.05.2008 19:19
Несколько вопросов по командам ассемблера. jenja Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 10 12.03.2008 19:52
Сравнение Си и Ассемблера... Sota Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 9 25.07.2007 16:15