![]() |
Помогите разобраться с задачей.
Всем привет, тема задания битовые операции. Программы реализуются как ассемблерные вставки в языке высшего уровня (С++).
Реализуйте с помощью логических операций вставку заданного значения (0 или 1) в любой бит байта со сдвигом вправо и потерей крайнего бита. Может кто делал подобные? Я понял задание так, ввести с клавиатуры значение бита и номер бита в который надо вписать значение. Если по моим представлениям делать задачу то получается большой код. Так же вызывает затруднение вывод на экран двоичного значения регистра. |
Gooch, задание понятно, всплывает с периодичностью в год. По расписанию лабораторных занятий.
Цитата:
Цитата:
Цитата:
Вообще желательно бы видеть рассуждения "вслух". |
Цитата:
Цитата:
Код:
INT8 assembler(INT8 x) |
Цитата:
---- А вот приведенный код не понятен. Занесли мы единицу в старший бит, и что? Кстати ввод единицы сделан не правильно. ЕМНИП в данном случае будет воспринята 10чная система. Чтобы указать, что 80 - это 16ричная система счисления, необходима дополнительная конструкция. 0x80, но все равно проверь в справочнике. Ну, занесли 1цу, потом передали регистр в rez, без модификаций. И ничего у нас не поменялось. ---- Да, конечно, дополнительная переменная, определяющая позицию просто необходима. ---- И надо будет тебе подумать, как разбить регистр на две неравные части. Т.е. подумать с логической разбивкой, экранированием и т.п. |
Цитата:
Цитата:
Цитата:
И всё таки почему у меня не выводит ни чего на экран когда я хочу попробывать посмотреть содержимое переменой? |
Цитата:
Цитата:
Цитата:
|
Цитата:
Код:
printf("Введите значение бита (0 или 1): \n"); Цитата:
И где может быть ошибка? |
Код:
INT8 assembler(INT8 z, INT8 x) если переходы убрать, то код выполняется верно :( |
Цитата:
Когда вводится число отличное от единицы (а не нуля), будет осуществлен переход. (cmp cl, 1) Дальнейшая ассемблерная вставка мне не ясна, поэтому оставляю ее на твое усмотрение. |
ок...передел
Код:
INT8 assembler(INT8 z, INT8 x) |
Почему rez должен остаться без значения? Ты же его явно вводишь:
Цитата:
Цитата:
Равно - идем дальше - проверяем на равенство 0 и x - равно - выходим, не равно - выполняем программу. Не понимаю я этих манипуляций. Приложи весь исходник, я в NetBeans посмотрю. |
Код:
#include "stdafx.h" |
Время: 21:20. |
Время: 21:20.
© OSzone.net 2001-