Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » Assm - Помогите разобраться с задачей.

Ответить
Настройки темы
Assm - Помогите разобраться с задачей.

Аватара для Gooch

Ветеран


Сообщения: 876
Благодарности: 160


Конфигурация

Профиль | Отправить PM | Цитировать


Всем привет, тема задания битовые операции. Программы реализуются как ассемблерные вставки в языке высшего уровня (С++).

Реализуйте с помощью логических операций вставку заданного значения (0 или 1) в любой бит байта со сдвигом вправо и потерей крайнего бита.

Может кто делал подобные? Я понял задание так, ввести с клавиатуры значение бита и номер бита в который надо вписать значение. Если по моим представлениям делать задачу то получается большой код. Так же вызывает затруднение вывод на экран двоичного значения регистра.

-------
Не забываем жмакать "полезное сообщение"


Отправлено: 21:55, 22-05-2011

 

Аватара для lxa85

Необычный


Contributor


Сообщения: 4463
Благодарности: 994

Профиль | Сайт | Отправить PM | Цитировать


Почему rez должен остаться без значения? Ты же его явно вводишь:
Цитата Gooch:
INT8 rez=0; »
Цитата Gooch:
MOV cl,x //проверка Х на значение не 0
CMP cl,1
JNZ bit
MOV cl,x
CMP cl,0
JZ prog
»
что-то глупость какая-то по моему. Заносим x, сравниваем с 1, допустим не равно - выполняем программу.
Равно - идем дальше - проверяем на равенство 0 и x - равно - выходим, не равно - выполняем программу.
Не понимаю я этих манипуляций.
Приложи весь исходник, я в NetBeans посмотрю.

-------
- Я не разрешаю тебе быть плохой! Потому что плохие люди совершают плохие поступки. А это нехорошо!
(Из наставлений 5 летней девочки своей младшей сестре)


Отправлено: 21:49, 24-05-2011 | #11



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

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


Аватара для Gooch

Ветеран


Сообщения: 876
Благодарности: 160

Профиль | Отправить PM | Цитировать


Код: Выделить весь код
#include "stdafx.h"
#include "iostream"
#include "windows.h"

//Реализуйте с помощью логических операций вставку заданного значения (0 или 1) в любой бит байта со сдвигом вправо и потерей крайнего бита.
INT8 assembler(INT8 z, INT8 x)
{
     INT8 rez=0;
    
     __asm
     {
		MOV cl,x //проверка Х на значение не 0
	    CMP cl,1
		JNZ bit

				
cicle: //берём rez  и записываем в al, в rez должно быть 10000000, после чего 
		//сдвигаем значение на 1 бит, после чего в зависимости от z повторяем цикл
		MOV al,rez
		SHR al,1
		MOV rez,al
		INC cl
		CMP cl,z
		JB cicle
		
		JMP end

		bit:
		MOV al,0
		MOV cl,80H
	    ADD al,cl
		MOV rez,al 
	 
		end:
	 } 
	 
return rez;

}

void main()
{
int  z, y, x;
     system("title Вычисление значения выражения");
     setlocale(LC_ALL,"Russian");
	 printf("\n");
     printf("Введите значение бита (0 или 1): \n");
     scanf_s("%d",&x);
     printf("Введите номер бита (от 0 до 7): \n");
     scanf_s("%d",&y);
   if (y==7)
   {
	z=0;
   }
   if (y==6)
   {
    z=1;
   }
   if (y==5)
   {
	z=2;
   }
   if (y==4)
   {
    z=3;
   }
   if (y==3)
   {
    z=4;
   }
   if (y==2)
   {
	z=5;
   }
   if (y==1)
   {
	z=6;
   }
   if (y==0)
   {
   z=7;
   }
      printf("Ответ = %i\n",assembler(z, x));
 system("pause");
}
вообщем как то так....почему то я думаю что совсем не правильно делаю и ещё не знаю как сделать так, чтобы с 0 работало.

-------
Не забываем жмакать "полезное сообщение"


Отправлено: 17:11, 25-05-2011 | #12



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » Assm - Помогите разобраться с задачей.

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
C/C++ - помогите с задачей! max1331003 Программирование и базы данных 0 24-12-2010 18:58
C/C++ - помогите с задачей по СИ!!! feliks2009 Программирование и базы данных 4 16-11-2009 00:18
Delphi - [решено] Помогите с задачей /Pascal/ Habetdin Программирование и базы данных 23 11-11-2009 22:46
C/C++ - [решено] Помогите с задачей! FeuerEngel Программирование и базы данных 3 28-05-2009 09:58
Delphi - [решено] Помогите с комбинаторной задачей! ALI Программирование и базы данных 16 01-01-2009 14:10




 
Переход