Блок – схема программы:
Текст программы с необходимыми комментариями
.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 и основы системного программирования с помощью ассемблера. В результате разработки данной работы была создана программа, позволяющая переслать файл из одного каталога в другой и переименовать его. Данную программу можно улучшить, добавив выбор начальной и конечной директории, или ввод исходного имени файла и имени нового файла.