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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 16.11.2012, 22:28   #1
NinjaNoob
Пользователь
 
Регистрация: 02.10.2012
Сообщений: 40
По умолчанию TASM

Цитата:
Рассматривая байт как набор логических значений x7 x6 x5 x4 x3 x1 x0 (true -1, false - 0), вычислить логическую формулу
Сложность в том, чтобы каждый бит байта, например 10111011, поместить в соответствующую переменную. 0-й бит в х0, 1-й бит в х1 и так далее.

Код:
data segment
        b db 100111011 ; сам байт
       x0 db ?
       x1 db ?
       x2 db ?
       x3 db ?
       x4 db ?
       x5 db ?
       x6 db ?
       x7 db ?
       res db ? ; результат выполнения логической функции
data ends

code segment
        assume cs:code, ds:data
        
start:

mov ax,b ;помещаю байт в ax
and ax,1h ;выделяю младший бит
mov x0, ax ; значение выбранного бита в переменную

mov ax,b ;помещаю байт в ax
sar ax,1 ; сдвигаю вправо, чтобы работать со вторым битом
mov b,ax ; записываю измененное значение в переменную
and ax,1h ;выделяю младший бит
mov x1, ax ; значение выбранного бита в переменную

mov ax,b ;помещаю байт в ax
sar ax,1 ; сдвигаю вправо, чтобы работать со вторым битом
mov b,ax ; записываю измененное значение в переменную
and ax,1h ;выделяю младший бит
mov x1, ax ; значение выбранного бита в переменную
; и так далее
как зациклить этот код?
NinjaNoob вне форума Ответить с цитированием
Старый 16.11.2012, 22:34   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Допустим так:
Код:
mov ax,b ;помещаю байт в ax
push ax
mov cx,7
for:
and ax,1h ;выделяю младший бит
mov x0, ax ; значение выбранного бита в переменную

mov ax,b ;помещаю байт в ax
sar ax,1 ; сдвигаю вправо, чтобы работать со вторым битом
mov b,ax ; записываю измененное значение в переменную
and ax,1h ;выделяю младший бит
mov x1, ax ; значение выбранного бита в переменную

mov ax,b ;помещаю байт в ax
sar ax,1 ; сдвигаю вправо, чтобы работать со вторым битом
mov b,ax ; записываю измененное значение в переменную
and ax,1h ;выделяю младший бит
mov x1, ax ; значение выбранного бита в переменную

pop ax
shr ax,1
push ax

loop for
Не проверял.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 16.11.2012, 23:38   #3
NinjaNoob
Пользователь
 
Регистрация: 02.10.2012
Сообщений: 40
По умолчанию

да, но как сделать, чтобы автоматически менялась переменная по ходу цикла.
т.е на первом шаге:
Код:
mov ax,b ;помещаю байт в ax
sar ax,1 ; сдвигаю вправо, чтобы работать со вторым битом
mov b,ax ; записываю измененное значение в переменную
and ax,1h ;выделяю младший бит
mov x1, ax ; значение выбранного бита в переменную
на следующем шаге тот же набор операций работал с переменной х2 и т.д.

З.Ы.
можно на асме описать массив переменных?
например,
array db x7, x6, x5, x4, x3 ,x3, x2, x1, x0
а потом в неком цикле, смещая записывать значения?
NinjaNoob вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
TASM дело тонкое!:) (Где в TASM IDE?) 3.14oner Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 9 15.11.2011 16:20
ассемблер. tasm alex(21) Помощь студентам 5 20.03.2011 23:50
TASM Hant111 Фриланс 5 23.03.2010 21:54
TASM romale Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 0 16.12.2009 23:03
tasm>>fasm better Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 11 09.02.2009 19:34