Форум программистов, компьютерный форум, киберфорум
Assembler для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.86/7: Рейтинг темы: голосов - 7, средняя оценка - 4.86
2 / 2 / 1
Регистрация: 22.10.2013
Сообщений: 13
1

Просмотр битовой строки и замена всех имеющиеся последовательностей "111" на "000"

22.10.2013, 18:35. Показов 1409. Ответов 1
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте! Нашёл по своей теме программу, но она что то не работает. Что нужно изменить? Заранее благодарен...
Задача: Написать подпрограмму, просматривающую битовую строку и заменяющую все имеющиеся последовательности "111" на "000". Адрес строки задается парой регистров FS: DI, длина- регистром ECX. Для отладки подпрограммы составляется основная программа, определяющая необходимые структуры данных и вызывающая рабочую процедуру.
Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
locals @@
model tiny
386
 
data
test_str    DB 0EFh, 0DEh, 73h
 
code
    ORG 100h
start:
    push    DS
    pop FS
    mov di,offset test_str
    mov ecx,24
    call    replace_bits
 
    int 20h
 
replace_bits PROC   NEAR
; просматривает битовую строку и заменяет все имеющиеся последовательности
"111" на "000"
; Вход: ECX - длина битовой строки
;   FS:DI - адрес строки
 
    add ecx,7   ; прибавляем 7, поскольку длина битовой строки может
быть не кратна 8
    shr ecx,3   ; длина строки в целых байтах
; реальный режим, поэтому здесь значение ECX не превосходит 64K, т.е.
помещается в CX
 
    mov dx,7    ; маска
 
    mov al,FS:[di]
 
@@next_byte:
    mov ah,0
    cmp cx,1
    je  @@0
    mov ah,[di+1]   ; непоследний байт, подгружаем следующий
@@0:
    mov bx,ax       ; сохраняем (можно также в стеке - код короче,
но медленнее)
    and ax,dx
    cmp ax,dx
    mov ax,bx       ; восстанавливаем
    jne @@next_bit
    ; заменяем 111 на 000
    not dx      ; инвертируем маску
    and ax,dx       ; сбрасываем только нужные биты
 
    cmp cx,1
    je  @@2
    mov FS:[di],ax  ; непоследний байт, сохраняем слово
    jmp short @@3
@@2:
    mov FS:[di],al  ; последний байт, сохраняем только его
@@3:
    not dx      ; восстанавливаем маску
    shl dx,3        ; и сдвигаем на 3 бита
    jmp short @@1
 
@@next_bit:
    shl dx,1
@@1:
    test    dl,dl
    jnz @@0
    ; младший байт проверили полностью, сдвигаем к следующему байту
    mov al,ah
    movzx   dx,dh
    inc di
    loop    @@next_byte
    ret
replace_bits ENDP
 
END start
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
22.10.2013, 18:35
Ответы с готовыми решениями:

Программа для определения всех последовательностей единиц, идущих подряд, в битовой последовательности
Помогите, пожалуйста:swoon::help:. Или хотя бы подтолкните в верном направлении. Мало времени,...

MaskEditExtension. При записи содержимого Textbox в БД, вместо 111-111-111 11 пишется 11111111111
Здравствуйте уважаемые форумчане! Написал небольшой проект (сайт), где расположена форма для...

Строки, замена последовательностей элементов
Всем доброго времени суток! Народ нужен хелп! Задание со строками на С++ в консольном режиме. ...

Просмотр строки и замена символов
Нужно дописать этот код таким образом, чтобы пустые места первой строки были заполнены...

1
Ушел с форума
Автор FAQ
16279 / 7604 / 1065
Регистрация: 11.11.2010
Сообщений: 13,617
23.10.2013, 03:33 2
trueFace,
тебе не кажется, что
Цитата Сообщение от trueFace Посмотреть сообщение
ОСОБЕННОСТИ РЕАЛЬНОГО РЕЖИМА МИКРОПРОЦЕССОРОВ 80386 и 80286
и
Цитата Сообщение от trueFace Посмотреть сообщение
Написать подпрограмму, просматривающую битовую строку и заменяющую все имеющиеся последовательности "111" на "000"
вообще никак не связаны
0
23.10.2013, 03:33
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
23.10.2013, 03:33
Помогаю со студенческими работами здесь

Замена в матрице элементов, меньших 5 на 111
Дан целочисленный массив X. Заменить в нем все элементы, меньшие 5 числом 111.

Проверка мобильного номера на соответствие формату +7(111)111-11-11
Проверка мобильного номера на соответствие формату +7(111)111-11-11 Как мне избавиться от этого...

Посчитать количество всех чисел, которые меньше 1 000 000
Посчитать количество всех чисел, которые меньше 1 000 000, оканчиваются на 002 и делятся на 66....

Вывод на экран всех простых чисел в диапазоне от 2 до 10.000.000
Написать программу, которая выводит на экран все простые числа в диапазоне от 2 до 10.000.000.

Выбрать из базы данных всех инженеров с зарплатой от 30 000 до 50 000 и вывести фамилию
Создать базу данных 15-ти человек. Общие данные: ФИО, дата рождения, место рождения, место...

Вставка битовой строки
Помогите пожалуйста с задачкой. Осуществить вставку битовой строки А длиной 4 бита в строку памяти...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru