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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 07.12.2010, 23:25   #1
Aleks2215
Пользователь
 
Регистрация: 19.09.2010
Сообщений: 30
Вопрос Вставка битов

Задание
Извлечь 5 битов числа А, начиная со второго и вставить их в число В, начиная с третьего бита. А – номер студента по списку. В = 1A74 h.
Мой код
Код:
.386
.model small
.stack 100h
.data
ttt db "natchalo dannyh"
A dw 1011b
B dw 11010111100b
sum dw ?
.code
start: mov ax,@data
mov ds,ax
xor ax,ax
mov ax,A
rol ax,2
mov dx,b
ror dx,8
SHRD ax,dx,2
mov sum,ax
int 21h
mov ax,4c00h
int 21h
end start
Перевел оба числа в двоичный вид, а затем командами rol подготовил число к вставке, командой shrd вставил, но получилось что то не то... можете подсказать в чем ошибка?
Aleks2215 вне форума Ответить с цитированием
Старый 08.12.2010, 04:40   #2
Mikl___
Участник клуба
 
Регистрация: 11.01.2010
Сообщений: 1,162
По умолчанию

Aleks2215
Код:
mov ax,A
and ax,0000000001111100b;Извлечь 5 битов числа А, начиная со второго
shl ax,1; теперь наше число начинается с третьего бита и готово для вставки в число В
and B,1111111100000111b; очистим в числе В 5 битов начиная с третьего
or B,ax; вставим в число В биты из числа А

Последний раз редактировалось Mikl___; 08.12.2010 в 04:46.
Mikl___ вне форума Ответить с цитированием
Старый 09.12.2010, 17:12   #3
Aleks2215
Пользователь
 
Регистрация: 19.09.2010
Сообщений: 30
По умолчанию

не работает(
Ошибка Fatal: 32-bit record encountered in module при компиляции
Aleks2215 вне форума Ответить с цитированием
Старый 09.12.2010, 20:32   #4
Ulex
Непрофессионал
Участник клуба
 
Аватар для Ulex
 
Регистрация: 01.01.2008
Сообщений: 1,432
По умолчанию

Ага, а то есть до этого компилировалась?

Цитата:
Turbo Link Version 5.1 Copyright (c) 1992 Borland International
Fatal: 32-bit record encountered in module PROGA57.ASM
Это ваш исходный пример. И, кстати, не на компиляции, а на линковке.
Если замените .386 на .286 - будет счастье. (SHRD не в счёт, убирайте его).
И чем больше я узнавал людей, тем больше мне нравились компьютеры.
------------------------------------
Страничка с моими программками http://ulex-masm.ru
Ulex вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сдвиг битов XOKS Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 5 08.11.2010 18:11
Изменение битов в байте bondik Общие вопросы .NET 1 08.10.2010 22:02
Симметричное отображение битов Ra88 Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 3 25.09.2010 07:07
извлечение битов из байтов... WinApi Помощь студентам 4 10.11.2008 15:14
Перестановка битов. RegentM Общие вопросы Delphi 3 05.11.2007 17:23