Лабораторная работа №5
Самостоятельная работа. Димитровградский инженерно-технологический институт – филиал НИЯУ МИФИ
Лабораторная работа №5 по дисциплине «Организация ЭВМ» Тема: «Ввод чисел. Перевод чисел в различные системы счисления»
Выполнил: студент гр. ВТ-31 Горбунов И. М. Проверил: Аленин А. А.
Димитровград, 2014
Задание на выполнение лабораторной работы: Разработать программу вывода строковых данных в файл. Строка вводится с клавиатуры, во введенной строке заменить символы «.» на «,» и вывести результирующую строку в файл. Работа с файлами должна осуществляться через описатели. В программе должны использоваться подпрограммы. Замечания: 1. Имя файла должно вводиться с клавиатуры. 2. Если файл с введенным именем не существует, то программа должна выдать запрос о необходимости создания файла.
Выполнение лабораторной работы Процедура замены .model small .data msg1 db 13,10,'Input filename: $' msg2 db 13,10,'File does not exist. Create(y/n)?$' msg3 db 13,10,'Input string: $' msg4 db 13,10,'Program finished.$' buf db 200,205 dup(0);принимает строку, введенную с клавиатуры .stack 256 .code start: mov ax,@data;Настраиваем сегментные регистры mov ds,ax ;ввод имени текстового файла mov ah,9;функция вывода сообщения на экран lea dx,msg1;выводимое сообщение int 21h;выводим на экран mov ah,0ah;функция ввода строки с клавиатуры mov dx,offset buf;буфер куда вводить int 21h;пользователь вводит в текст в buf mov bl,buf[1];длина введенной строки mov bh,0;bx=длина введенной строки mov buf[bx+2],byte ptr 0;добавить 0 в конец введенной строки mov ax,3d01h;функция открытия файла на запись lea dx, buf[2];введенное имя файла int 21h;попытка открыть jnc opened;если открыт - переход mov ah,9;функция вывода сообщения на экран lea dx,msg2;выводимое сообщение int 21h;выводим на экран m1: mov ah,0;ф-я ожидания нажатия клавиши int 16h;ожидаем нажатия клавиши cmp ah,49;если N jz ex;то выход cmp ah,21;если не Y jnz m1;то повторить ввод mov ah,3ch;ф-я создания файла mov cx,0;атрибуты файла lea dx, buf[2];введенное имя файла int 21h;создать новый файл opened: mov bx,ax;сохранить хэндл созданного/открытого файла mov ax,4202h;переместить xor cx,cx;указатель файла xor dx,dx;в конец int 21h mov ah,9;функция вывода сообщения на экран lea dx,msg3;выводимое сообщение int 21h;выводим на экран mov ah,0ah;функция ввода строки с клавиатуры mov dx,offset buf;буфер куда вводить int 21h;пользователь вводит в текст в buf lea si,buf[2];начало введенного текста lp: mov al,[si];взять очередной символ cmp al,13;если конец строки jz fin;то закончить cmp al,'.';если точка jnz m2 mov [si],byte ptr ',';то заменить ее на запятую m2: inc si;следующий символ jmp lp;обработать всю строку fin: mov cl,buf[1];длина введенной строки mov ch,0;сx=длина введенной строки mov si,cx mov buf[si+2+1],byte ptr 10;За символом 13 в конце строки добавить 10 add cx,2;длина строки+перевод строки lea dx,buf[2];адрес строки mov ah,40h;ф-я записи int 21h;дописываем строку в файл mov ah,3eh;закрываем int 21h;файл ex: mov ah,9;функция вывода сообщения на экран lea dx,msg4;выводимое сообщение int 21h;выводим на экран
mov ah,1;Ожидаем нажатия любой клавиши int 21h mov ax,4c00h;закончить программу int 21h
end start При запуске программы вводим строку «qwer,,..// qwer». Программа заменяет все точки на запятые и записывает в файл полученную строку, т.е в файле qwe будет записана строка «qwer,,,// qwer» (Рисунок 1). Рисунок 1 – контрольный пример
|