Заблокирован Статус: Не в сети Регистрация: 02.11.2003 Откуда: Россия,Москва
Люди очень надо помогите для профи вроде Вас это не сложно.
2 задания...
1 задание
В массиве слов (байтов) указанного размера над каждым элементом проде-
лать операцию: сбросить два старших бита в элементе, если в нём трижды
встречается образец из трёх битов.
(Пример: 101 три раза встречается в слове 1101011110111100, поэтому оно
превращается в 00010111101111100).
2 задание
Если обе строки чётной длины, то сцепить первую половину первой строки
со второй половиной второй строки. Из полученной строки удалить все
цифры и сосчитать количество удалений и длину новой строки.
("Первая строка пуста", "Вторая строка пуста", "Первая строка нечётной
длины", "Вторая строка нечётной длины", "В новой строке нет цифр").
_________________ Ego potissimus. Если кто не понял - его проблемы... Правда - и я не допёр... Хотя догадываюсь.Типа на Латыне что то.....
Member
Статус: Не в сети Регистрация: 27.05.2004 Откуда: Москва
1.
Код:
text segment 'code' assume CS:text, DS:text org 100h main proc mov ax, num mov bl, msk mov cx,14 xor dl,dl srch: mov bh,al and bh,111b xor bh,bl jnz nfnd inc dl cmp dl,3 je fnd nfnd: shr ax,1 loop srch jmp exit fnd: and num, 11111111111111b exit: mov ax,4C00h int 21h num dw 1101011110111100b msk db 101b main endp text ends end main
_________________ Надо просто осознать, что вы не крупный специалист, прежде чем обманывать (c) Du Volon
Заблокирован Статус: Не в сети Регистрация: 02.11.2003 Откуда: Россия,Москва
А есть точно такой же код для точно такой же проги но что бы самому вводить числа и прога сама бы отсортировалала бы(ну как в задани).
???А то как я понял сдесь только с 1 числом можно работать..
_________________ Ego potissimus. Если кто не понял - его проблемы... Правда - и я не допёр... Хотя догадываюсь.Типа на Латыне что то.....
mov cx,ax xor bx,bx sr: cmp byte ptr [di],'0' jb next cmp byte ptr [di],'9' ja next mov byte ptr [di],' ' inc bx next: inc di loop sr
;В bx - количество удаленных цифр.
cmp bx,0 jne bxnz call err5
bxnz: mov di,offset str3 call prints jmp exit
err1: mov di,offset errs1 call prints jmp exit err2: mov di,offset errs2 call prints jmp exit err3: mov di,offset errs3 call prints jmp exit err4: mov di,offset errs4 call prints jmp exit
err5: mov di,offset errs5 call prints ret
exit: mov ax,4C00h int 21h
main endp
strlen proc push cx push di xor al,al mov cx,0FFFFh repnz scasb mov ax,0FFFEh sub ax,cx pop di pop cx ret strlen endp
prints proc push bx push cx push dx mov bx,1 call strlen mov cx,ax mov ah,40h mov dx,di int 21h pop dx pop cx pop bx ret prints endp text ends data segment str1 db 'string 1',0 str2 db 'string 2',0
errs1 db '1st string is empty',0 errs2 db '2nd string is empty',0 errs3 db '1st string has odd length',0 errs4 db '2nd string has odd length',0 errs5 db 'New string does not contain numbers',0
str3 db 80 dup (?) data ends sseg segment stack dw 128 dup (?) sseg ends end main
_________________ Надо просто осознать, что вы не крупный специалист, прежде чем обманывать (c) Du Volon
Member
Статус: Не в сети Регистрация: 27.05.2004 Откуда: Москва
PaPa_CaRLO
Цитата:
А есть точно такой же код для точно такой же проги но что бы самому вводить числа
А ввод с клавы надо добавить. И перевод символьных строк в числа - тоже.
Ввод строки - это функция ДОС 3Fh
Примерно так:
Код:
mov ah,3Fh mov bx,0 mov cx,128;максимальное число вводимых символов mov dx,offset inbuf; адрес буфера ввода int 21h
На выходе: в ax-число введенных символов, по адресу inbuf (надо, естественно, объявить соответствующую область данных) - введенная строка. А преобразование строки в число сводится к вычитанию из кода символа 0:
Код:
sub al,'0';В al предварительно положили символ, взятый из строки
Далее - проверка на нахождение числа в допустимом диапазоне (не больше 1 для 2-ичных чисел). Примерно так:
Код:
cmp al,1 ja error ;на метке error - код, обрабатывающий ситуацию, когда число вне диапазона
Ну и если ввод в норме - то сдвигаем полученную цифру на соответствующую позицию и or'ом "вставляем" ее в получаемое число.
_________________ Надо просто осознать, что вы не крупный специалист, прежде чем обманывать (c) Du Volon
Сейчас этот форум просматривают: Ханыга и гости: 21
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения