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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 09.11.2010, 13:22   #1
Маришка_Курносова
Пользователь
 
Регистрация: 01.07.2010
Сообщений: 24
Смущение Ассемблер for windows. Осуществление логической операции

C = (НЕ A ИЛИ НЕ B ИЛИ (A И B)) ИСКЛ.ИЛИ (A ИЛИ НЕ B)

Я только начала изучать ассемблер, поэтому плохо представляю как это выглядит.

P.S. буду благодарна за подсказки к решению или готовые варианты ответов. Заранее спасибо. Ребят, если можно, поскорее, пожалуйста.
Маришка_Курносова вне форума Ответить с цитированием
Старый 09.11.2010, 13:40   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

С потолка:
Код:
mov eax,[a]
not eax
or eax,[b]
mov eax,edx

mov eax,[a]
and eax,[b]
mov ebx,[b]
not ebx
or eax,ebx
mov ebx,[a]
not ebx
or eax,ebx

xor eax,edx
mov [c],eax
Но ИМХО это выражение можно упростить...
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 09.11.2010, 14:00   #3
Маришка_Курносова
Пользователь
 
Регистрация: 01.07.2010
Сообщений: 24
По умолчанию

а как объявить переменные а,б,с ?
Маришка_Курносова вне форума Ответить с цитированием
Старый 09.11.2010, 14:04   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Как dword объяви
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 09.11.2010, 14:17   #5
Fog
Пользователь
 
Аватар для Fog
 
Регистрация: 29.08.2010
Сообщений: 76
По умолчанию

Цитата:
а как объявить переменные а,б,с ?
для MASM32 в разделе .data обявляеш так:
имя_переменоой тип значение
Например:
a dd 0 ;здесь у нас а обявляется как DWORD (двойное слово 4 байт).
b dd 0 ; dd означает declare dword
c dd 0
----------------
a db "moys stroka",0 ;а так строку обявляеш db означает declare byte

можно еще макросами:
В разделе .code пишеш
LOCAL a ; типа локальную переменную обявляеш
LOCAL b
LOCAL c
Fog вне форума Ответить с цитированием
Старый 10.11.2010, 12:56   #6
Маришка_Курносова
Пользователь
 
Регистрация: 01.07.2010
Сообщений: 24
Хорошо

Всем спасибо, разобралась.
Вот рабочий код, слегка подредактированный, наверняка кому-нибудь поможет.

Код:
.386
.model  flat, stdcall
option  casemap :none

includelib  \masm32\lib\kernel32.lib
ExitProcess     proto :DWORD

.data
A dword 1d
B dword 0d
D dword ?

.code
main:

	;C = (!A || !B || (A & B)) ^ (A || !B)

    mov eax,[B]
    not eax
    or eax,[A]
    mov edx,eax
    ; в edx (А || !B)

    mov eax,[A]
    and eax,[B] ; A & B в eax
    mov ebx,[B]
    not ebx     ;!B в ebx
    or eax,ebx  ;(A & B) || !B в eax
    mov ebx,[A] 
    not ebx
    or eax,ebx  ;(!A || (A & B) || !B

    xor eax,edx
    mov [D],eax


    invoke  ExitProcess, 0
end main
Маришка_Курносова вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Осуществление функции суммирования Gray_Jagger JavaScript, Ajax 2 06.04.2010 20:13
Значение логической переменной Shevali Помощь студентам 2 17.03.2009 22:41
Осуществление последовательного считывания атрибутов Meskalito БД в Delphi 5 01.04.2008 17:17
Арифметические операции Ассемблер BAV Помощь студентам 9 05.03.2008 00:21
Осуществление функции Root из MathCad в Delphi NITRON Общие вопросы Delphi 0 17.08.2007 12:17