С Новым годом! Форум программистов, компьютерный форум, киберфорум
Assembler, MASM, TASM
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
 Аватар для Ivanio
0 / 0 / 0
Регистрация: 13.03.2011
Сообщений: 31

Незнаю что дальше делать, не могу дописать

02.04.2011, 07:23. Показов 1089. Ответов 1
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
4) Ввести строку из произвольных ASCII-символов и произвести её сортировку к виду, вклю-чающему четыре части разделённые пробелами: цифры, буквы прописные, буквы строчные, все дру-гие символы. Работу программы отобразить на экране и защитить паролем.

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
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
IDEAL
MODEL small
STACK 256
descrip_in  =   0   ;Дескриптор стандартного ввода
descrip_out =   1   ;Дескриптор стандартного вывода
descrip_err =   2   ;Дескриптор стандартной ошибки (экрана)
 
DATASEG
dlstr   DW   1   DUP(?)
password    DB  'beda'        ;Пароль
pass_len    =   $-password
string  DB  80 DUP(?)         ;Буфер для ввода пароля
promt     DB    13,10,'Введите пароль: $'
OK        DB    13,10,'Пароль верный!$'
msg Db  'Введите строку!'
msg_len =   $-msg
 
Buf DB  80 DUP(?)   ;Буфер для ввода строки
actual_len  DW  ?   ;Фактическая длина введённой строки
 
Buf1    DB  80 DUP(?)   ;Буфер для строчных
Buf2    DB  80 DUP(?))  ;Буфер для прописных
Buf3    DB  80 DUP(?)   ;Буфер для цифровых
Buf4    DB  80 DUP(?))  ;Буфер для остальных
Buffin  DB  80 DUP(?) ; Буфер объединённой строки
len_str1    DW  0   ;Переменная для хранения длины 1 строки
len_str2    DW  0   ;Переменная для хранения длины 2 строки
len_str3    DW  0   ;Переменная для хранения длины 3 строки
len_str4    DW  0   ;Переменная для хранения длины 4 строки
len_strfin  DW  0   ;Переменная для хранения длины результирующей строки
    
CODESEG
start:  mov ax,@data
          mov ds,ax
begin:  mov ah,09h              ;Вывод запроса на ввод пароля
        mov dx,offset promt ;Адрес запроса
        int 21h
                            ;Введём пароль
        mov bx,0                ;Инициализация индексирования ввода
pass:       mov ah,08h              ;Функция ввода символа в AL без эха
        int 21h
        cmp al,13               ;<Enter> ?
        je compare              ;Да, на сравнение
        mov [string+bx],al  ;Нет, сохраним символ
        mov ah,02h 
        mov dl,'*'              ;Запишем на экран *
        int 21h
        inc bx
        jmp pass                ;Повторять
    ;Сравнение введённого пароля с действительным (сравнение строк)
compare:    push ds                 ;Установить ES на сегмент данных
        pop es
        mov di,offset string    ; начало string
        mov si,offset password  ; начало password
        cld                     ;DF=0- просмотр вперёд
        mov cx,pass_len       ;Установить счётчик сравнения
        cmp cx,bx              ;Длина пароля = длине введённого слова?
        jne errz               ;Нет - ошибка
        repe    cmpsb           ;{ds:si - es:di}. Сравнивать, пока символы двух 
                        ;строк совпадают, но не более СХ раз
        jne errz            ;Строки не равны
mov ah,09h        ;Вывод сообщения ОК, подтверждающего 
mov dx,offset OK      ;правильность пароля
int 21h
 
 
 
;;;;;;;;;;;;;;;;;Ввод начальной строки с клавиатуры в буфер Buf
mov ah,3fh     ;Функция ввода
mov bx,descrip_in
mov cx,80                       ;Ввод максимум 80 байт
mov dx,offset Buf     ;Адрес буфера
int 21h
mov [actual_len],ax  ;Фактически введено
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 
 
 
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;цифры
            mov cx,[actual_len] ;Счётчик элементов строки
            mov  si,0   ;Инициализация указателя элементов строки
filter:  mov al,[Buf+si]    ;Возьмём символ
           cmp al,'a'   ;равно '0'?
            je no_letter    ;Да, не преобразовывать
            cmp al,'z'  ;равно '9'?
            je no_letter    ;Да, не преобразовывать
 
           mov[Buf3+si],al  ;Отправим в Buf3
           mov cl,[Buf3+1]  ;Число элементов строки_2
           mov [byte len_str3],cl   ;Сохраним
 
     no_letter: inc si
     loop filter    ;Цикл
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 
 
 
 
mov ah,40h  ;Функция вывода
mov bx,descrip_out
mov cx,[len_str3]   ;Длина сообщения
mov dx,offset Buf3  ;Адрес сообщения
int 21h
Exit:   mov ax,4C00h    ;Функция DOS 4Сh: выход из программы
int 21h ;Вызов DOS. Останов
END Start   ;Конец программы/точка входа
Добавлено через 1 минуту
Не могу вывести все в один буфер.

Добавлено через 15 секунд
Не могу вывести все в один буфер.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
02.04.2011, 07:23
Ответы с готовыми решениями:

Незнаю что делать дальше(
Выучил основы html,css ели-ели верстаю простенькие шаблоны. Незнаю что делать дальше может посоветуете выучить всякие фреймворки или еще...

Не расшаривается папка
дал папкам уже все права на всех пользователей. Интересно то что по практике когда я подгатавливался к практическому заданию все работало...

помогите с написанием пожалуйста, не могу понять что нужно делать дальше
мне надо найти из куска проги , считанной из файла, числа и вывести их в stringgrid, вот мой плачевный набросок unit Unit1; ...

1
 Аватар для qwarta
73 / 73 / 11
Регистрация: 20.11.2009
Сообщений: 238
03.04.2011, 18:46
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
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
OK       db 'OK! Good!$'
msg      db 'Input string:    $'
msg_fin  db 'Output string:   $'
NO       db 'Incorrect password!$'
password db 'beda$' 
plen = $-password
promt    db 13,10,'Password: $'
buf      db 80
blen     db 0      
mas      db 80 dup(?)                               ; Буфер для ввода строки
end_str  db 83 dup(?)                              ; Буфер для вывода
fin      db 10,13,'$'
        ........
;------ макрос поиска и перестановки символов -----------
_FIND macro arg1, arg2
   local @1
    cmp mas[si],arg1
    jb  @1
    cmp mas[si],arg2
    ja  @1
    mov al,mas[si]
    mov ah,mas[di]
    xchg ah,al
    mov mas[di],ah
    mov mas[si],al
    mov end_str[bp],ah
    inc di
    inc bp
@1:
    inc si
    cmp si,bx
endm
;------ макрос вывода на экран ---------------------
_PRINT macro _str
    mov ah,09h
    mov dx,offset _str
    int 21h
endm
;--------------------------------------------------
start:
      _PRINT promt
;----- ввод и проверка пароля ---------------------      
      xor si,si 
      xor cx,cx      
pass:           
      mov ah,08h       
      int 21h
      inc cx
      cmp al,13
      je  _ok
      cmp password[si],al
      jne _no
      mov ah,02h 
      mov dl,'*'     
      int 21h
      inc si
      jmp pass
      
_no:
      _PRINT NO
      jmp start
_ok:      
      cmp cx,plen
      jb  _no
      _PRINT fin
      _PRINT OK
      _PRINT fin
      _PRINT msg
;----- ввод исходной строки ----------------------
      mov ah,0Ah
      mov dx,offset buf
      int 21h
      _PRINT fin
      
      xor di,di
      xor si,si
      xor bp,bp
      mov bl,[blen]
;----- ищем цифры ---------------------------------
cikl:
      _FIND '0','9'
      jb cikl
      
      mov si,di
      mov end_str[bp],' '
      inc bp
;----- ищем большие буквы -------------------------
cikl_1:
      _FIND 'A','Z'
      jb cikl_1
      
      mov si,di
      mov end_str[bp],' '
      inc bp
;----- ищем маленькие буквы ------------------------
cikl_2:
      _FIND 'a','z'
      jb cikl_2
      mov end_str[bp],' '
      inc bp
;----- прочие знаки -------------------------------
cikl_3:
      mov al,mas[di]
      mov end_str[bp],al
      inc bp
      inc di
      cmp di,bx
      jb  cikl_3
      mov end_str[bp],'$'
_exit:
      _PRINT fin
      _PRINT msg_fin
      _PRINT end_str
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
03.04.2011, 18:46
Помогаю со студенческими работами здесь

Нарисовать ромб через цикл,почти сделал,не могу понять что делать дальше
#include &lt;iostream&gt; #include &lt;math.h&gt; #include &lt;conio.h&gt; using namespace std; int main() { int N,i; N=10; for...

Написал сайт, Незнаю что дальше
Помогите люди добрые:) написал простенький сайт из 10 ссылок в обычном блокноте. Купил домен на jino.ru , и не знаю что дальше, не знаю...

Незнаю что делать.
Здраствуйте, вот у меня такая проблема есть 2 компа (ПК и ноут), есть маршрутизатор NETGEAR. На обоих стоят Windows XP SP3. Я этот...

Звук. Незнаю что и делать
Как-то раз у меня сломалось гнездо для наушников/колонок (зеленое) и я решил купить звуковую карту, но перед установкой я заметил, что...

помогите,незнаю что делать!
играю в игру,world of tanks,после последнего патча игра стала заедать и выкидывать,написал в службу помощи по игре,мне ответили что нужно...


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ * Дана цепь постоянного тока с сопротивлениями и напряжениями. Надо найти токи в ветвях. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и решает её. Последовательность действий:. . .
Новый CodeBlocs. Версия 25.03
palva 04.01.2026
Оказывается, недавно вышла новая версия CodeBlocks за номером 25. 03. Когда-то давно я возился с только что вышедшей тогда версией 20. 03. С тех пор я давно снёс всё с компьютера и забыл. Теперь. . .
Модель микоризы: классовый агентный подход
anaschu 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение. И на уровне агентов добавится между грибами или бактериями взаимодействий. До того я пробовал подход через многомерные массивы,. . .
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru