МЗЯ ИУ6 МГТУ ДЗ1. отчет_ДЗ1 — копия. Отчет по домашней работе 1 Вариант 15 Название домашней работы обработка символьной информации
Скачать 112.03 Kb.
|
Федеральное государственное бюджетное образовательное учреждение высшего образования
ФАКУЛЬТЕТ ____ИНФОРМАТИКА И СИСТЕМЫ УПРАВЛЕНИЯ________ КАФЕДРА _____Компьютерные Системы и сети (ИУ6)___________ Отчет по домашней работе № 1 Вариант 15 Название домашней работы: обработка символьной информации Дисциплина: машинно-зависимые языки и основы компиляции Студент гр.ИУ6-43 __________________ Апельсин Заводной (Подпись, дата) (И.О. Фамилия) Преподаватель __________________ (Подпись, дата) (И.О. Фамилия) Москва, 2018 Условие Дан текст 10 слов, разделенных пробелами (одним и более). Определить количество слов, содержащих более 4 символов. Ход работы Рисунок 1 – Схема алгоритма Листинг 1. Исходный код программы ; Template for console application .586 .MODEL flat, stdcall OPTION CASEMAP:NONE Include kernel32.inc Include masm32.inc IncludeLib kernel32.lib IncludeLib masm32.lib .CONST MsgExit DB "Press Enter to Exit",0AH,0DH,0 msgInput DB "Enter 10 words: ", 0AH, 0DH, 0 msgCount DB "Count of words with length >4: ", 0AH, 0DH, 0 .DATA result dd ? len dw 4 string db 100 DUP (?) ; input str rezstr DB 5 DUP (?) .DATA? inbuf DB 100 DUP (?) .CODE Start: ; ; Дан текст 10 слов, разделенных пробелами (одним и более). ; Определить количество слов, содержащих более 4 символов. ; Invoke StdOut, addr msgInput Invoke StdIn, addr string, LengthOf string Invoke StripLF, addr string lea edi, string ; load string adress to edi mov ecx, 100 ; load size of input buffer for getting strlen mov al, 0 ; load 0 symbol to search repne scasb ; find 0 mov ax, 100 sub ax, cx ; size(buf) - rest in cx mov cx, ax ; difference - strlen + 1 dec cx lea edi, string mov al, ' ' mov ebx, 0 ; counter of words cld cycle1: cmp cx, 0 ; is end of line? jle con ; if yes => print result mov dx, 0 ; wordlen counter cycle2: scasb ; check another symb to ' ' je endword ; if ' ' - goto checking of wordlen inc dx dec cx cmp cx, 0 ; if is end of line je endword ; then goto check word jmp cycle2 endword: cmp dx, len ; if end of word, compare wordlen with given length jg checkw ; if wl>4 goto inc ebx jmp nextword ; else just dec cx and goto cycle1 checkw: inc ebx nextword: dec cx jmp cycle1 con: mov result, ebx xor eax, eax Invoke dwtoa,result,ADDR rezstr Invoke StdOut,ADDR rezstr Invoke StdIn,ADDR inbuf,LengthOf inbuf Invoke ExitProcess,0 End Start Рисунок 2 – Работа программы Таблица 1. Тесты
Вывод Изучены команды обработки цепочек и приемы обработки символьной информации. |