Студопедия
Случайная страница | ТОМ-1 | ТОМ-2 | ТОМ-3
АрхитектураБиологияГеографияДругоеИностранные языки
ИнформатикаИсторияКультураЛитератураМатематика
МедицинаМеханикаОбразованиеОхрана трудаПедагогика
ПолитикаПравоПрограммированиеПсихологияРелигия
СоциологияСпортСтроительствоФизикаФилософия
ФинансыХимияЭкологияЭкономикаЭлектроника

Дополните программу. Введите строку текста и выведите его по буквам в режиме телетайпа разными по цвету буквами.

Напишите программу, запрашивающую у оператора строку, а затем выводящую ее на экран. Выполните трассировку программы. | Ввести с клавиатуры натуральное число. Найти сумму его первой и последней цифры и вывести на экран. Выполните трассировку программы. | Напишите программу, запрашивающую у оператора строку, а затем выводящую каждое слово в отдельной строке. Выполните трассировку программы. | Ввести с клавиатуры натуральное число. Поменять порядок следования цифр в числе и вывести на экран. | C0 - Нижний левый угол B3 - Вертикальная линия | Напишите программу, которая получает строку и слово. С помощью макроса определить входит ли данное слово в строку. | Напишите программу, в которой вводятся целые числа а, b. Напишите макрокоманду определения min. | Напишите программу, в которой вводятся целые числа c, d. Напишите макрокоманду определения max. | Ввести с клавиатуры натуральное число. Проверить будут ли его цифры все различны. Вывести на экран сообщение. Преобразование строки в число производить в макрокоманде. | Дана длина ребра куба. Найти площадь полной поверхности этого куба. |


Читайте также:
  1. Creating optional variables Создание дополнительных переменных
  2. II. Информация о платных дополнительных образовательных услугах.
  3. II. Прочитайте текст и выполните задание на понимание текста.
  4. IV. Работа с текстами.
  5. Lt;question>Кто такой адресат книги (текста)?
  6. VI. Список дополнительной литературы.
  7. VIII. Дополнительная информация

codesg segment para 'code'

assume cs:codesg, ds:codesg, ss:codesg, es:codesg

org 100h

 

begin: jmp main

 

main proc near

mov ax, 0600h

mov bh, 07

mov cx, 0000h

mov dx, 184fh

int 10h

 

mov dx, 0105h

lea bp, [message]

mov cx, 16

call write_string

 

mov ah, 0ah

lea dx, str1

int 21h

 

mov ah, 02h

mov dx, 0216h

int 10h

 

mov cl, real

xor ch, ch

lea si, str2

mov count, 15h

mov bl, 03h

star:

call write_symbol

inc si

loop star

 

mov ah, 4ch

int 21h

main endp

 

write_string proc near

mov ah, 13h

mov bh, 00

mov bl, 0fh

mov al, 1

int 10h

ret

write_string endp

 

write_symbol proc near

push cx

push ax

mov ah, 02h

mov dl, count

int 10h

call teletype

mov al, [si]

mov ah, 09h

mov cx, 1

call color

int 10h

inc count

pop ax

pop cx

ret

write_symbol endp

 

color proc near

inc bl

cmp bl, 0eh

jb m1

mov bl, 02h

m1: ret

color endp

 

teletype proc near

mov cx, 65534

n1: push cx

mov cx, 32676

n2:

loop n2

pop cx

loop n1

ret

teletype endp

message db 'Vvedite stroky: '

str1 label byte

virt db 39

real db?

str2 db 40 dup (?),'$'

count db?

codesg ends

end begin

 

5. Дополните программу: вводите пароль 3 раза, каждый раз после ввода отображайте введенное слово и сообщайте верно или неверно введен пароль. Затем выход в DOS.

title Лабораторная работа №3

 

stacksg segment para stack 'Stack'

dw 32 dup(?)

stacksg ends

 

datasg segment para 'Data'

message db 'Vvedite PAROL: $'

pass db 'admin'

true db 'Parol vveden VERNO$'

false db 'Parol vveden NEVERNO$'

string label byte

max db 20

len db?

ary db 21 dup ('$')

as db 1

kol_sr db 1

datasg ends

 

codesg segment para 'Code'

begin:

assume cs:codesg, ds:datasg, ss:stacksg, es:datasg

push ds

sub ax,ax

push ax

mov ax,datasg

mov ds,ax

 

;цикл будет повторяться 3 раза, поэтому в cx заношу 3

mov cx,3

m1:

;вывожу приветствие

mov ah, 09h

lea dx, message

int 21h

 

;буферизированный ввод с клавиатуры

lea dx, string

mov ah, 0ah

int 21h

 

;перемещаю курсор на следующую строку

mov dh, as

mov dl, 00

mov bh, 00

mov ah, 02h

int 10h

inc as

 

;вывожу введенное слово

mov bx, offset len

mov al,[bx]

mov ah,0

add bx, ax

inc bx

mov [bx],'$'

mov ah,09h

lea dx,ary

int 21h

 

;сравниваю длину введенной строки и длины пароля

mov bx, offset len

mov al,[bx]

cmp al,5

je m2;если длина введенной строки и pass равны, то переход на m2

jne m3;если длина введенной строки и pass не равны, то переход на m3

m4:

;перемещаю курсор на следующую строку

mov dh, as

mov dl, 00

mov bh, 00

mov ah, 02h

int 10h

inc as

 

loop m1

 

m2:

;перемещаю курсор на следующую строку

mov dh, as

mov dl, 00

mov bh, 00

mov ah, 02h

int 10h

inc as

 

lea si, pass;помещаю адреса строк pass в si

lea di, ary;помещаю адреса строк ary в di

mov kol_sr,1;кол-ву сравнений присваиваю 1

m6:

mov ah, byte [si];беру символ из строки pass

mov al, byte [di];беру символ из строки ary

cmp ah,al;сравниваю их

jne m3;если не равны перехожу на метку m3

inc si;увеличиваю на 1 si

inc di;увеличиваю на 1 di

inc kol_sr;увеличиваю на 1 kol_sr

cmp kol_sr,5;сравниваю кол-во сравнений с кол-вом букв в pass

jne m6

 

;выводится сообщение о том, что строки равны

mov ah,09h

lea dx,true

int 21h

 

mov bx, cx

cmp bx,1

jne m4;если цикл не прошел еще 3 раза иду на метку m4

cmp bx,1

je m5;если цикл отработал 3 раза, то перехожу на метку m5

 

m3:

;перемещаю курсор на следующую строку

mov dh, as

mov dl, 00

mov bh, 00

mov ah, 02h

int 10h

inc as

 

;вывожу сообщение о том, что строки не равны

mov ah,09h

lea dx,false

int 21h

 

mov bx, cx

cmp bx,1

jne m4;если цикл не прошел еще 3 раза иду на метку m4

cmp bx,1

je m5;если цикл отработал 3 раза, то перехожу на метку m5

 

m5:

;жду нажаие клавишы

mov ah, 01h

int 21h

 

;выход в DOS

mov ah,4ch

int 21h

 

codesg ends

end begin

 

6. Дополните программу: измените цвет выводимых на экран символов и при неверном вводе пароля в правом верхнем углу выводите сообщение «Ха-ха, Вы ошиблись!!!»

codesg segment para 'code'

assume cs:codesg, ds:codesg, ss:codesg, es:codesg

org 100h

begin: jmp main

 

;******************************************************************

main proc near

call clear_scrin

; вывод сообщения на экран

mov row,09

mov col,10

lea bp, [message]; адрес строки

mov cx, 15;длина строки

call write_string

;Cмещение курсора на конец выведеного сообщения

add col, 18

lea si, cout

wr:

; Установка позиции курсора

mov ah, 02h

mov bh, 00

mov dl, col

int 10h

;ожидание ввода с клавиатуры без эхоотображения

mov ah, 00h

int 16h

CMP al, 0dh; конец ввода «Enter»

je wr1

; Введенный символ из al записывается в строку cout

mov [si], al

inc si

; выводится на экран в текущую позицию курсора символ '*'

mov ah, 09

mov al, '*'

mov bh, 00

mov cx, 1

int 10h

 

inc col

inc coun

CMP coun, 8;вводится только 5 символов

jne wr;повторяем ввод символа

 

lea si, parol

lea bp, [cout]

wr1:

mov ah, [si]

mov al, [bp]

cmp ah, al

jne q;выход из программы

cmp cl, coun

je wr2

inc si

inc bp

inc cl

jmp wr1

 

;выход из программы

MOV ah, 8h

int 21h

q:

call clear_scrin

mov ah, 13h;установка курсора

mov bh, 0

mov bl, 11001010b

mov dh, 0

mov dl, 65

lea bp, mess1

mov cl, 14

mov ch, 0

mov al, 1

int 10h

ret

wr2: call ok

main endp

;********************************************************************

 

;вывод на экран сообщения о правильном вводе пароля

ok proc near

call clear_scrin

lea bp,[mess];адрес строки

mov cl, 14

call write_string

ret

ok endp

;********************************************************************

 

clear_scrin proc near

; Очистка экрана

mov ax, 0600h; ah=06-прокрутка экрана

; al=00-весь экран

mov bh, 07

mov cx, 0000

mov dx, 184fh

int 10h

ret

clear_scrin endp

;********************************************************************

 

write_string proc near

mov ah, 13h; функция вывода на экран

mov al, 1

mov bh, 00; номер видео страницы

mov bl, 00001110b

mov dh, 6;координаты по строке

mov dl, 6;координаты по столбцу

int 10h

ret

write_string endp

 

message db 'Input password:'

mess db 'You are right!'

mess1 db 'You are wrong!'

row db 00

col db 00

cout db 9 dup (' ')

parol db 'tiraspol'

coun db 0

codesg ends

end begin

 

7. Дополните программу: измените цвет выводимых на экран символов и при неверном вводе пароля в правом нижнем правом углу выводите сообщение «Ха-ха, Вы ошиблись!!!»

codesg segment para 'code'

assume cs:codesg, ds:codesg, ss:codesg, es:codesg

org 100h

begin: jmp main

 

;******************************************************************

main proc near

call clear_scrin

; вывод сообщения на экран

mov row,09

mov col,10

lea bp, [message]; адрес строки

mov cx, 15;длина строки

call write_string

;Cмещение курсора на конец выведеного сообщения

add col, 18

lea si, cout

wr:

; Установка позиции курсора

mov ah, 02h

mov bh, 00

mov dl, col

int 10h

;ожидание ввода с клавиатуры без эхоотображения

mov ah, 00h

int 16h

CMP al, 0dh; конец ввода «Enter»

je wr1

; Введенный символ из al записывается в строку cout

mov [si], al

inc si

; выводится на экран в текущую позицию курсора символ '*'

mov ah, 09

mov al, '*'

mov bh, 00

mov cx, 1

int 10h

 

inc col

inc coun

CMP coun, 8;вводится только 8 символов

jne wr;повторяем ввод символа

 

lea si, parol

lea bp, [cout]

wr1:

mov ah, [si]

mov al, [bp]

cmp ah, al

jne q;выход из программы

cmp cl, coun

je wr2

inc si

inc bp

inc cl

jmp wr1

 

;выход из программы

MOV ah, 8h

int 21h

q:

call clear_scrin

mov ah, 13h;установка курсора

mov bh, 0

mov bl, 11001010b

mov dh, 23; координаты y

mov dl, 65; координата x

lea bp, mess1

mov cl, 14

mov ch, 0

mov al, 1

int 10h

ret

wr2: call ok

main endp

;********************************************************************

 

;вывод на экран сообщения о правильном вводе пароля

ok proc near

call clear_scrin

lea bp,[mess];адрес строки

mov cl, 14

call write_string

ret

ok endp

;********************************************************************

 

clear_scrin proc near

; Очистка экрана

mov ax, 0600h; ah=06-прокрутка экрана

; al=00-весь экран

mov bh, 07

mov cx, 0000

mov dx, 184fh

int 10h

ret

clear_scrin endp

;********************************************************************

 

write_string proc near

mov ah, 13h; функция вывода на экран

mov al, 1

mov bh, 00; номер видео страницы

mov bl, 00001110b

mov dh, 6;координаты по строке

mov dl, 6;координаты по столбцу

int 10h

ret

write_string endp

 

message db 'Input password:'

mess db 'You are right!'

mess1 db 'You are wrong!'

row db 00

col db 00

cout db 9 dup (' ')

parol db 'tiraspol'

coun db 0

codesg ends

end begin

 

8. Дополните программу: измените цвет выводимых на экран символов и при неверном вводе пароля в центре экрана выводится сообщение «Ха-ха, Вы ошиблись!!!»

 

; Аналогично предыдущему (изменить координаты)

 

9. Дополните программу: ввод пароля пока не будет введено правильное слово. При каждом неверном вводе выводите сообщение об этом красным цветом в лувом верхнем углу, при верном вводе пароля он появляется на экране экране через временную задержку разного цвета в правом верхнем углу.

;Аналогично предыдущим


Дата добавления: 2015-08-17; просмотров: 77 | Нарушение авторских прав


<== предыдущая страница | следующая страница ==>
Дополните программу. При верном вводе пароля он появляется на экране через временную задержку разного цвета.| Введите две строки. В случае если они одинаковые. Выводится сообщение о том что строки совпали, в противном случае выводится сообщение, о том что строки не совпадают.

mybiblioteka.su - 2015-2024 год. (0.035 сек.)