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

Текст программы

.model tiny ;com файл

.code ; сегмент

org 100h ; начальный счетчик

begin:

main proc

mov ah,9 ;Функция вывода на экран

lea dx,string4 ;Выводимая строка

int 21h ;Вызов DOS

mov ah,9 ;Функция вывода на экран

lea dx,string5 ;Выводимая строка

int 21h ;Вызов DOS

mov ah,9 ;Функция вывода на экран

lea dx,string7 ;Выводимая строка

int 21h ;Вызов DOS

mov ah,9 ;Функция вывода на экран

lea dx,string6 ;Выводимая строка

int 21h ;Вызов DOS

MOV AX, (LAST-BEGIN) ;память программы

mov dx,10 ; 10 в регистр dx

xor cx,cx ;установка регистра сх на 0

sh1: xor bx,bx ;установка регистра bx на 0

sh2: cmp ax,dx ;переход если ax меньше 10 переход

jb sh3 ; переход в sh3

inc bx ; целая часть

sub ax,dx ;вычесть ах из dx

jmp sh2 ;переход на sh2

sh3: add ax,48 ; переводим в число от 0 до 9

push ax ;помещение содержимого ах в начало стека

inc cx ;кол - во цифр

xchg ax,bx ;поменять местами

or ax,ax ;равниваем AX с 0

jne sh1 ;если не равно 0 переход на sh1 (флаг ZF)

sh4: pop dx ;извлечение в dx

mov ah,02h ;вывод

int 21h

loop sh4 ;пока сх не равно

mov ah,9 ;Функция вывода на экран

lea dx,string2 ;Выводимая строка

int 21h ;Вызов DOS

mov ah,0Ah ;ввод строки в буфер

mov dx,offset Max_Length ;Заносим в dx адрес max_length

int 21h ;Прерывание DOS

xor cx,cx ;обнуляем сх

mov cl,[Max_Length+1] ;В cl заносим реальную длину слова

push cx ; сохраняем в стеке

mov bx,cx ;Заносим значение CX в BX

mov [string1+bx],'$'; добавляем конец строки

mov si,offset string1 ;Заносим значение si адрес string1

mov di,si ;Заносим si в di

B2: ;Метка B2

lodsb ;Загружаем символ из DS: (E)Si

cmp al,'a' ;Сравниваем значение регистра al с ASCII кодом "a"

jb B3 ;Если меньше

cmp al,'z' ;Сравниваем значение регистра al с ASCII кодом "z"

ja B3 ;Если больше

and al,11011111b ;Инвертирование регистра буквы 11011111

B3: ;Метка B3

stosb ;Переписываем содержимое AL в ES: (E)DI

loop B2 ;Повтор B2

mov ah,9 ;Функция вывода на экран

lea dx,string3 ;Выводимая строка

int 21h ;Вызов DOS

mov ah,9 ;Функция вывода на экран

lea dx,string1 ;Выводимая строка

int 21h ;Вызов DOS

mov ah,3Ch ;Создать файл

mov dx,offset filename ;Имя файла

int 21h

mov descr,ax ;дискриптор

mov ah,3Dh ;Открыть файл

mov al,2

mov dx, offset filename ;имя файла

int 21h

mov descr,ax

pop cx

mov ah,40h ;Запись в файл

mov bx,descr ;дискриптор файла

mov cx,cx ;размер строки

lea dx,string1

int 21h

mov ah,3Eh ;Закрыть файл

mov bx,descr

int 21h

mov ah,08 ;Ожидание нажатия клавиши

int 21h ;Вызов BIOS

mov ah,0h ;Выход из программы

int 21h

main endp

filename db 'file12.txt',0

Max_Length db 255,0;Max Length string

string1 db 255

string2 db 0ah,0dh,0ah,0dh,"Vvedite stroku"

string3 db 0ah,0dh,"$"

string4 db "Karimov R.I.",0ah,0dh,'$'

string5 db "IVT - 314",0ah,0dh,'$'

string6 db "Size in bite ",'$'

string7 db "RGR on a discipline: System software, edition 10",0ah,0dh,'$'

descr dw 1

LAST=$ ;Переменной LAST присваиваем адрес конца программы

end begin

Результат работы программы:

Вывод:

В ходе выполнения данной расчётно-графической работы по дисциплине «Системное программное обеспечение» были усвоены навыки создания прикладных программ на основе низкоуровневых системных функций BIOS и MS DOS.

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