Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
RGR_SPO_5 вариант.docx
Скачиваний:
8
Добавлен:
05.09.2020
Размер:
233.44 Кб
Скачать

Блок – схема программы:

Текст программы с необходимыми комментариями

.MODEL tiny

.CODE

ORG 100H; устанавливаем относительный адрес для начала выполнения программы

Begin:

main proc

MOV AH,56H ; для переименования/перемещения

LEA DX,oldname ;старое название файла

LEA DI,newname ;новое название файла

int 21h ;прерывание

MOV AH, 02H ;Перемещаем курсор на строку ниже

MOV BH, 00

MOV DH, 0

MOV DL, 0

INT 10H

MOV AH, 09H ; Выводим сообщение

LEA DX, string

INT 21H

MOV AH, 02H ;Перемещаем курсор на строку ниже

MOV BH, 00

MOV DH, 1

MOV DL, 0

INT 10H

MOV AH, 09H ; Выводим сообщение

LEA DX, string1

INT 21H

MOV AH, 02H ;Перемещаем курсор на строку ниже

MOV BH, 00

MOV DH, 2

MOV DL, 0

INT 10H

MOV AH, 09H ; Выводим сообщение

LEA DX, string2

INT 21H

MOV AH, 02H ;Перемещаем курсор на строку ниже

MOV BH, 00

MOV DH, 3

MOV DL, 0

INT 10H

MOV AH, 09H ; Выводим сообщение

LEA DX, string3

INT 21H

MOV AX, (LAST-BEGIN) ;заносим в регистр AX разность конца и начала адресов сегмента

SYMBOL:

DIV TEN ;Делим на 10 для отсечения цифры справа

MOV NUM1, AL ; цифра заносится в AL, ее перемещаем в NUM1 для того, чтобы сохранить ее

ADD AH, BIAS ; добавляем смещение BIAS, так как цифры от 0 до 9 в таблице ASCII имеют соответственно код 48 – 57

MOV NUM2, AH ; Сохраняем цифру так как регистр AH будет использоваться дальше

MOV AH, 02H ; Устанавливаем положение курсора

MOV BH, 00

MOV DH, 3

MOV DL, J ; J-ый столбец

INT 10H ; Вызов BIOS

DEC J ;Сдвигаем курсор на единицу влево

MOV AH, 40H ; Функция вывода на экран

MOV BX, 01 ; дескриптор дисплея

MOV CX, 1 ; количество выводимых байт

LEA DX, NUM2 ; загружаем адрес строки NUM2 где хранится код цифры

INT 21H ; вызываем DOS

CMP NUM1, 0 ; проверяем остались ли цифры в числе

JE CHANGE ;Если нет, то переходим к метке CHANGE

MOV AL, NUM1 ; возвращаем в регистр оставшееся число

XOR AH, AH ; обнуляем регистр AH для того чтобы число переместилось в AX

JMP SYMBOL ; переходим к метке SYMBOL для вывода следующей цифры

CHANGE:

MOV AH,08H ; ожидание нажатия кнопки

INT 21H

MOV AX,4C00H ;завершение работы

INT 21H;вызовDOS

EXITPROG: RET ;Завершение программы возврат в DOS

main endp

oldname db 'C:\OLDDIR\FILE_SPO.txt',0

newname db 'C:\NEWDIR\MYFILE.txt',0

string db "Gabdrakhmanova.L.A.",'$'

string1 db "GRP: IVT- 314",'$'

string2 db "GR on a discipline: System software, edition 5",'$'

string3 db "program size in bytes is - ",'$'

NUM1 db 0

NUM2 db 0

TEN db 10

bias db 48

j db 30

LAST=$

End Begin

Скриншоты программы

До выполнения программы в папке OLDDIRнаходился файл FILE_SPO.TXT

После выполнения программы из папки OLDDIRфайл FILE_SPO.TXT был переименован в MYFILE.TXT и перемещен в папку NEWDIR.

Заключение

В ходе данной расчетно-графической работе были изучены возможности операционной системы MS-DOS и основы системного программирования с помощью ассемблера. В результате разработки данной работы была создана программа, позволяющая переслать файл из одного каталога в другой и переименовать его. Данную программу можно улучшить, добавив выбор начальной и конечной директории, или ввод исходного имени файла и имени нового файла.

Соседние файлы в предмете Системное программное обеспечение