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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 28.04.2020, 18:58   #1
derpy
Новичок
Джуниор
 
Регистрация: 07.04.2019
Сообщений: 2
Сообщение MASM Дано два числа. Обменять пару разрядов (2-ой и 13-й) одного числа с та-кой же парой второго числа

Добрый день, я сделал задание, программа работает, но препод сказал переделать: выделить, а потом и заменить сразу пару разрядов, чтобы код вышел короче: 6-7 команд, я не пойму как это сделать. Помогите, пожалуйста
Код:
.586 ; 
.model flat,C ; 
Option Casemap: None; 
.Data; 
a dd 100011000000010b; 17922 
b dd 110001001101000b; 25192 
.Code 
start: 
mov eax, a
mov ebx, b
mov ecx, eax
and ecx, 000000000000100b
je c1
jne m1
c1:
mov ecx, ebx
xor ebx, 000000000000100b
and ecx, 000000000000100b; сравниваем с маской
je c2
jne m2
m1:
mov ecx, ebx
or ebx, 000000000000100b
and ecx, 000000000000100b; сравниваем с маской
je c2
jne m2
c2:
xor eax, 000000000000100b
JGE t
m2:
or eax, 000000000000100b
JGE t
t:
mov ecx, eax
and ecx, 010000000000000b
je c3
jne m3
c3:
mov ecx, ebx
xor ebx, 010000000000000b
and ecx, 010000000000000b; сравниваем c маской
je c4
jne m4
m3:
mov ecx, ebx
or ebx, 010000000000000b
and ecx, 010000000000000b; сравниваем с маской
je c4
jne m4
c4:
xor eax, 010000000000000b
JGE finish
m4:
or eax, 010000000000000b
JGE finish
finish:
end start
derpy вне форума Ответить с цитированием
Старый 29.04.2020, 18:17   #2
derpy
Новичок
Джуниор
 
Регистрация: 07.04.2019
Сообщений: 2
По умолчанию

Я смог сам разобраться, может кому пригодится:
Код:
.586 ; 32-битный режим
.model flat,C ; компил¤ци¤ в exe-файл
Option Casemap: None; неразличение прописных и строчных символов
.Data; начинает сегмент данных (и завершает предыдущий сегмент)
a dd 7fah;  000011111111010b
b dd 26beh; 010011010111110b
.Code 
start:  
mov eax, a
mov ebx, b
and  eax,2004h
and  ebx,2004h
and a, 0FFFFDFFBh
and b, 0FFFFDFFBh
or a, ebx
or b, eax
mov eax, a
mov ebx, b
end start
derpy вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
[Python] Дано натуральное число n. Найти все числа меньшие Мр числа Мерсенна. Джина Ким Помощь студентам 0 18.05.2018 18:39
Pascal. Дано натуральное число. Верно ли, что произведение нечетных цифр данного числа меньше некоторого заданного числа Анастасия0 Помощь студентам 10 23.12.2016 12:10
Программа запрашивает два числа, и выводит все числа от первого до второго momo1 Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 1 04.12.2016 06:49
Задачи в ТурбоПаскаль: найти числа Армстронга и просуммировать числа в последовательности номера которых простые числа Lena1808 Помощь студентам 1 17.05.2012 08:00
Вывести числа, из диапазона от n до m у которых, количество единичных разрядов в двоичном представлении числа нечетно sheff123 Помощь студентам 8 05.01.2012 15:35