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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 31.01.2011, 17:56   #1
Garik2277
Новичок
Джуниор
 
Регистрация: 22.10.2010
Сообщений: 1
По умолчанию Написать программу, исх. данные типа байт

Написать программу, исх. данные типа байт
Если логическая сумма 3 бита массива X и 7 бита массива У =1, то в массив Z записать 'A', иначе 'B'
Garik2277 вне форума Ответить с цитированием
Старый 31.01.2011, 22:32   #2
spburger
 
Регистрация: 30.11.2009
Сообщений: 4
По умолчанию

Цитата:
Сообщение от Garik2277 Посмотреть сообщение
Написать программу, исх. данные типа байт
Если логическая сумма 3 бита массива X и 7 бита массива У =1, то в массив Z записать 'A', иначе 'B'
Ногами только не пинать, я сам после первого asm-семестра...

datasg segment
arrx db 1h,3h,5h,8h
arry db 2h,4h,6h,9h
arrz db 4 dup(?)
datasg ends

codesg segment
assume cs:codesg,ds:datasg
start: mov ax,datasg
mov dx,ax

mov ax,0
mov ax,4h
mov si,0

looop:
push ax
clc ; clean up CF

mov al,arrx[si] ; get element from x-array
and al,00000100b
mov cl,3 ; for the rotating of 3 times(bit number 3)
clc
ror al,cl ; rotate 3 times and get the bit's value in CF
mov bl,0
adc bl,0 ; save the value in bl

mov ah,arry[si] ; get element from y-array
and ah,01000000b
mov cl,2 ; we need to rotate the 7th bit value only 2 times
clc
rol ah,cl ; rotate 2 times left and get bit's value in CF
mov bh,0
adc bh,0 ; save the value in bh

add bl,bh ; check up the bits' summary // или or bl,bh

cmp bl,1 ; compare the sum with "1"
jnz writeB ; if not equal jump to "writeB'-tag
mov arrz[si],'A' ; if equal -- write 'A' into z-array...
jmp moveon ; preparing for next loop

writeB: mov arrz[si],'B'

moveon: inc si
pop ax
dec ax
jnz looop ; just move on till counter of loops isn't equal to "0"...

mov ah,4Ch
int 21h
codesg ends
end start

Последний раз редактировалось spburger; 01.02.2011 в 00:38.
spburger вне форума Ответить с цитированием
Старый 01.02.2011, 00:25   #3
Ant1971on
Пользователь
 
Регистрация: 20.07.2010
Сообщений: 52
По умолчанию

Немного по-другому сделал:
Код:
CODE_SEG SEGMENT

ASSUME CS:CODE_SEG,DS:DATA_SEG

BEGIN:

	MOV AX,DATA_SEG
	MOV DS,AX

	MOV SI,0
	MOV CX,LEN

_LOOP:

        PUSH CX
	MOV AH,X[SI]
	MOV AL,Y[SI]
	MOV CL,4
	SHR AL,CL
	OR AH,AL
	AND AH,00001000b
	JZ WR_B
	MOV Z[SI],'A'
	JMP NXT

WR_B:

	MOV Z[SI],'B'

NXT:

	INC SI
	POP CX
	LOOP _LOOP

	MOV AX,4C00h
	INT 21h

CODE_SEG ENDS

;------------------------------------------------------------------------------

DATA_SEG SEGMENT

X DB 2,45,123,89,19
LEN=$-X
Y DB 54,13,6,182,9
Z DB ?	

DATA_SEG ENDS

;------------------------------------------------------------------------------

STACK_SEG SEGMENT STACK

DB 256 DUP (0)

STACK_SEG ENDS

;------------------------------------------------------------------------------

END BEGIN
Ant1971on вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Найти байт максимальным количестов единиц и байт с максмальным количеством нулей и разность (ассемблер) Beren42 Помощь студентам 0 15.12.2010 20:32
Нужно написать Программу типа "Квартплата" White121 Фриланс 14 18.01.2010 07:44
Данные из двух полей исх. таблицы в одно поле сводной таблицы Strelec79 Microsoft Office Excel 2 02.08.2009 13:59
Можно ли написать программу по определению типа кабеля используемого в ЛВС NeG666 Общие вопросы Delphi 4 27.10.2008 12:08
как под структуру типа MSG выделить строго определенное количество байт? Morskoivolk Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 1 03.04.2007 20:12