21.11.2018, 18:10 [+3 UTC]
в нашей команде: 3 135 чел. | участники онлайн: 14 (рекорд: 19)

:: РЕГИСТРАЦИЯ

:: задать вопрос

:: все разделы

:: правила

:: новости

:: участники

:: доска почёта

:: форум

:: блоги

:: поиск

:: статистика

:: наш журнал

:: наши встречи

:: наша галерея

:: отзывы о нас

:: поддержка

:: руководство

Версия системы:
7.55 (06.11.2018)

Общие новости:
24.09.2018, 16:49

Форум:
21.11.2018, 13:37

Последний вопрос:
21.11.2018, 16:50

Последний ответ:
21.11.2018, 17:29

Последняя рассылка:
21.11.2018, 11:15

Писем в очереди:
0

Мы в соцсетях:

Наша кнопка:

RFpro.ru - здесь вам помогут!

РАЗДЕЛ • Assembler

Создание программ на языке Assembler.

[администратор рассылки: Лысков Игорь Витальевич (Старший модератор)]

Лучшие эксперты в этом разделе

Зенченко Константин Николаевич
Статус: Модератор
Рейтинг: 700
Лысков Игорь Витальевич
Статус: Старший модератор
Рейтинг: 90
Evgen aka Chuma
Статус: 6-й класс
Рейтинг: 14

Перейти к консультации №:
 

Консультация онлайн # 193540
Раздел: • Assembler
Автор вопроса: Strastar (1-й класс)
Отправлена: 11.09.2018, 22:53
Поступило ответов: 1

Здравствуйте! У меня возникли сложности с таким вопросом:
- по ассемблеру. Я только сейчас зарегистрировался тут и еще не знаю куда писать. Быть может Вы мне поможете.

Мне нужно понять как решать задачу.
____
Дан массив из 8 байт. Рассматривая его как массив логических значений х0
х1 х2 х3 х4 х5 х6 х7 (true-есть ненулевые биты в байте, false-все биты нулевые),
вычислить логическую формулу
f=(x7 & x6 & x1) V (x6 & x4 & x2 & x1 & x0) V (x7 & x6 & x3 & x1).
____

Как я понимаю создаю переменные. Вношу значения произвольные. А вот дальше не знаю уже..что и как.
Связь со мной, если что, то можно и через email, вконтакте.
Strastar@yandex.ru https://vk.com/strastar

Вопрос перенесен из раздела • Исследование операций
--------

• Отредактировал: Гордиенко Андрей Владимирович (Младший модератор)
• Дата редактирования: 12.09.2018, 09:46

Состояние: Консультация закрыта

Ответ # 276679 от Лысков Игорь Витальевич (Старший модератор)

Здравствуйте, Strastar!
Немного упростим формулу:
f = (x7 & x6 & x1) V (x6 & x4 & x2 & x1 & x0) V (x7 & x6 & x3 & x1) =
= x6 & x1 & (x7 V (x4 & x2 & x0) V (x7 & x3 )) =
= x6 & x1 & ((x7 V (x7 & x3 )) V (x4 & x2 & x0)) =
= x6 & x1 & (x7 V (x4 & x2 & x0))
Вот последнюю формулу и закодируем:

Код (Assembler) :: выделить код
data	segment 
x0	db	0
x1	db	66
x2	db	5
x3	db	0
x4	db	0ffh
x5	db	0
x6	db	10
x7	db	1
data	ends 
 
code	segment 
	assume cs:code, ds:data
start:
	mov	ax, data
	mov	ds, ax 
	
	cmp	x6, 0
	jz	return_false
	cmp	x1, 0
	jz	return_false
	cmp	x7, 0
	jnz	return_true
	cmp	x4, 0
	jz	return_false
	cmp	x2, 0
	jz	return_false
	cmp	x0, 0
	jz	return_false

return_true:
	mov	al, 1
	jmp	quit

return_false:
	mov	al, 0

quit:
	mov	ah, 4Ch		; Код завершения - значение f
	int	21h 		; Выход в DOS 
code	ends 
 
end 	start


Консультировал: Лысков Игорь Витальевич (Старший модератор)
Дата отправки: 12.09.2018, 12:18

5
Спасибо Вам большое))
-----
Дата оценки: 13.09.2018, 00:20

Рейтинг ответа:

+2

[подробно]

Сообщение
модераторам

Отправлять сообщения
модераторам могут
только участники портала.
ВОЙТИ НА ПОРТАЛ »
регистрация »

Мини-форум консультации № 193540

Коцюрбенко Алексей aka Жерар
Мастер-Эксперт

ID: 312929

# 1

= общий = | 12.09.2018, 07:30 | цитировать цитировать  | профиль профиль  |  отправить письмо в личную почту пейджер
Strastar:

То есть Вам нужно написать программу на ассемблере, реализующую эту формулу?

Гордиенко Андрей Владимирович
Младший модератор

ID: 17387

# 2

= общий = | 12.09.2018, 09:46 | цитировать цитировать  | профиль профиль  |  отправить письмо в личную почту пейджер
Экспертам раздела:

Обратите внимание на данную консультацию, перенесённую из другого раздела.

=====
Facta loquuntur.

Хватов Сергей
Академик

ID: 20764

# 3

= общий = | 12.09.2018, 09:54 | цитировать цитировать  | профиль профиль  |  отправить письмо в личную почту пейджер

Точно на ассемблере? Там и без этого есть что оптимизировать.

Гордиенко Андрей Владимирович
Младший модератор

ID: 17387

# 4

= общий = | 12.09.2018, 10:07 | цитировать цитировать  | профиль профиль  |  отправить письмо в личную почту пейджер
Хватов Сергей:

В Интернете аналогичные задания содержатся в пособиях по изучению Ассемблера.

=====
Facta loquuntur.

Strastar
1-й класс

ID: 402280

# 5

= общий = | 12.09.2018, 10:23 | цитировать цитировать  | профиль профиль  |  отправить письмо в личную почту пейджер

Здравствуйте. Пишем код и затем запускаем его в Turbo Debugger -е.

Удалён неправильно использованный тег цитирования.
--------

• Отредактировал: Гордиенко Андрей Владимирович (Младший модератор)
• Дата редактирования: 12.09.2018, 10:28

Гордиенко Андрей Владимирович
Младший модератор

ID: 17387

# 6

= общий = | 12.09.2018, 10:29 | цитировать цитировать  | профиль профиль  |  отправить письмо в личную почту пейджер
Коцюрбенко Алексей aka Жерар:

Предыдущее сообщение автор вопроса, судя по всему, хотел адресовать Вам.

=====
Facta loquuntur.

Хватов Сергей
Академик

ID: 20764

# 7

= общий = | 12.09.2018, 10:32 | цитировать цитировать  | профиль профиль  |  отправить письмо в личную почту пейджер
Гордиенко Андрей Владимирович:

ещё до реализации есть о чём подумать. Да и в процессе тоже. Тем более, что изначально вопрос был в другом разделе.

Гордиенко Андрей Владимирович
Младший модератор

ID: 17387

# 8

= общий = | 12.09.2018, 10:34 | цитировать цитировать  | профиль профиль  |  отправить письмо в личную почту пейджер
Хватов Сергей:

Что Вам мешает думать? Но к разделу "Исследование операций" этот вопрос не относится в любом случае.

=====
Facta loquuntur.

Гордиенко Андрей Владимирович
Младший модератор

ID: 17387

# 9

= общий = | 12.09.2018, 10:36 | цитировать цитировать  | профиль профиль  |  отправить письмо в личную почту пейджер
Strastar:

Во избежание лишних вопросов ответьте на этот:

© Цитата: Коцюрбенко Алексей aka Жерар
То есть Вам нужно написать программу на ассемблере, реализующую эту формулу?

=====
Facta loquuntur.

Strastar
1-й класс

ID: 402280

# 10

= общий = | 12.09.2018, 10:41 | цитировать цитировать  | профиль профиль  |  отправить письмо в личную почту пейджер
Гордиенко Андрей Владимирович:

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

-----
 Прикрепленный файл:  скачать (PDF) » [356.1 кб]

Strastar
1-й класс

ID: 402280

# 11

= общий = | 12.09.2018, 10:42 | цитировать цитировать  | профиль профиль  |  отправить письмо в личную почту пейджер
Коцюрбенко Алексей aka Жерар:

Все правильно.

Гордиенко Андрей Владимирович
Младший модератор

ID: 17387

# 12

 +1 
 
= общий = | 12.09.2018, 10:46 | цитировать цитировать  | профиль профиль  |  отправить письмо в личную почту пейджер
Хватов Сергей:

В двух предыдущих сообщениях автор вопроса подтвердил, что требуется написать программу на Ассемблере. Теперь Вы можете со спокойной совестью думать и творить. smile

=====
Facta loquuntur.

Strastar
1-й класс

ID: 402280

# 13

= общий = | 12.09.2018, 11:10 | цитировать цитировать  | профиль профиль  |  отправить письмо в личную почту пейджер
Коцюрбенко Алексей aka Жерар:

На данный момент у меня есть такой код. Это 5 вариант. Не факт, что код правильно написан.

Код (Assembler) :: выделить код
data segment
 NB db 10110100b
data ends

code segment
 assume cs: code, ds: data
start:
 mov ax, data
 mov ds, ax
 mov ax,0 
 mov al,NB
 mov ah,al
 mov bx,ax
 mov dx,ax
 mov cx,ax
 
 shr al,1 ;x7-5A
 shr ah,2 ;x6-2D
 shr bl,5 ;x3-05
 
 shr bh,4 ;x4-0B
 shr cl,6 ;x2-02
 shr ch,7 ;x1-01
 
 shr dl,8 ;x0-00
 
 mov dh,11111111b
 and dh,al
 and dh,ah
 and dh,bl ;x7*x6*x3
 
 mov bl,11111111b
 and bl,ah
 and bl,bh
 and bl,cl
 and bl,ch ;x6*x4*x2*x1
 
 mov bh,11111111b
 and bh,al
 and bh,ah
 and bh,cl
 and bh,dl ;x7*x6*x2*x0
 
 mov ax,0
 mov al,dh
 
 mov dx,0
 mov dl,bl
 
 mov cx,0
 mov cl,bh
 
 add al,dl
 add al,cl
quit:
 mov ax,4Ch ; Код завершения - младший байт суммы
 int 21h ; Выход в DOS
code ends

 end start

-----
 Прикрепленный файл:  скачать (RAR) » [1.1 кб]

Лысков Игорь Витальевич
Старший модератор

ID: 7438

# 14

 +1 
 
= общий = | 12.09.2018, 11:27 | цитировать цитировать  | профиль профиль  |  отправить письмо в личную почту пейджер
Strastar:

Хорошо, что есть кое-какой код. Посмотрим. Поможем...

=====
"Если вы заметили, что вы на стороне большинства, —
это верный признак того, что пора меняться." Марк Твен

 

Возможность оставлять сообщения в мини-форумах консультаций доступна только после входа в систему.
Воспользуйтесь кнопкой входа вверху страницы, если Вы зарегистрированы или пройдите простую процедуру регистрации на Портале.

Яндекс Rambler's Top100

главная страница | поддержка | задать вопрос

Время генерирования страницы: 0.29074 сек.

© 2001-2018, Портал RFPRO.RU, Россия
Калашников О.А.  |  Гладенюк А.Г.
Версия системы: 7.55 от 06.11.2018