Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Prakticheskaya_rabota_4.docx
Скачиваний:
9
Добавлен:
27.09.2019
Размер:
727.3 Кб
Скачать

Результат:

Задание №2

Ассемблировать программу. Исследовать в отладчике.

;prg_11_3.asm

MASM

MODEL small

STACK 256

.data

;

fnd db 0ah,0dh,'Simvol nayden!','$'

nochar db 0ah,0dh,'Simvol ne nayden','$'

;

string db 'Poisk simvola v etoy stroke.',0ah,0dh,'$'

.code

ASSUME ds:@data,es:@data

main:

mov ax,@data

mov ds,ax

mov es,ax

mov ah,09h

lea dx,string

int 21h

mov al,'a'

cld

lea di,string

mov cx,29

;

;

repne scas string

je found

failed:

;

mov ah,09h

lea dx,nochar

int 21h

jmp exit

found:

mov ah,09h

lea dx,fnd

int 21h

;

;

; dec di

;...

exit: ;

mov ax,4c00h

int 21h

end main

aam

add ax,3030h

mov bx,ax

mov ah,02h

mov al,bh

int 21h

mov dl,bl

int 21h

mov ax,4c00h

int 21h

end start

Результат:

Задание №3

.model small

.stack 100h

.data

;

st1 db "P-22 Artyomenko Alina",13,10,"Prakticheskaya rabota№9.2",13,10,"$"

st2 db "Task:Recognize pressings of f1..f10",13,10,13,10,"Type <q> to exit",13,10,"$"

st3 db 13,10,13,10,"Press functional key (F1..F10), please:$"

st4 db "non-functional key typed....",13,10,"$"

exm db "Bye-bye",13,10,"$"

.code

;

main proc

;

mov ax,@data

mov ds,ax

mov es,ax

;

mov ah,09h

lea dx,st1

int 21h

lea dx,st2

int 21h

jmp n0

nerr:mov ah,09h

lea dx,st4

int 21h

n0:

mov ah,09h

lea dx,st3

int 21h

;

mov ah,00

int 16h

;

;

cmp al,'q'

je ex

cmp ah,59

jl nerr

cmp ah,68

jg nerr

mov dl,"f"

mov dh,ah

mov ah,02h

int 21h

mov ah,dh

cmp ah,59

jne n1

mov dl,30h+1

n1:

cmp ah,60

jne n2

mov dl,30h+2

n2:

cmp ah,61

jne n3

mov dl,30h+3

n3:

cmp ah,62

jne n4

mov dl,30h+4

n4:

cmp ah,63

jne n5

mov dl,30h+5

n5:

cmp ah,64

jne n6

mov dl,30h+6

n6:

cmp ah,65

jne n7

mov dl,30h+7

n7:

cmp ah,66

jne n8

mov dl,30h+8

n8:

cmp ah,67

jne n9

mov dl,30h+9

n9:

cmp ah,68

jne n10

mov ah,02h

mov dl,30h+1

int 21h

mov dl,30h

n10:

mov ah,02h

int 21h

jmp n0

ex:

mov ah,09h

lea dx,exm

int 21h

mov ah,04ch

int 21h

main endp

end main

Результат:

Задание №4

.model small

.stack 100h

.data

st1 db "gruppa № fio",13,10,"prakticheskaja rabota N9.2",13,10,"$"

st2 db "Task: Recognize pressings of ALT + 1 .. 5",13,10,13,10,"type <q> to exit",13,10,"$"

st3 db 13,10,13,10,"press functional key (f1..f10,please: $"

st4 db"non-functional key typed ....",13,10,"$"

exm db "bye-bye",13,10,"$"

.code

main proc

mov ax,@data

mov ds,ax

mov es,ax

mov ah,09h

lea dx,st1

int 21h

lea dx,st2

int 21h

jmp n0

nerr:mov ah, 09h

lea dx,st4

int 21h

n0:

mov ah,09h

lea dx,st3

int 21h

mov ah,00

int 16h

cmp al,'q'

je ex

cmp al,0

jne nerr

cmp ah,120

jne n1

mov dl,30h+1

n1:

cmp ah,121

jne n2

mov dl,30h+2

n2:

cmp ah,122

jne n3

mov dl,30h+3

n3:

cmp ah,123

jne n4

mov dl,30h+4

n4:

cmp ah,124

jne n5

mov dl,30h+5

n5:

cmp ah,125

jne n6

mov dl,30h+6

n6:

mov ah,02h

int 21h

jmp n0

ex:

mov ah,09h

lea dx,exm

int 21h

mov ah,04ch

int 21h

main endp

Результат:

Практическая работа № 10/1.

Изучение настроек Bios с помощью установки обработки прерывания, а также возможностей dos по замене и дополнению сервисных программ собственными обработками пребывания.

Цель работы: Ознакомиться с основными средствами вывода текстовых данных на экран посредственно средств операционной системы dos , средствами Bios и средствами непосредственного (прямого) отображения в виде обуфер.

Задание №1

.model tiny

.code

org 100h

begin:

mov dl,52h

mov ah,6

int 21h

ret

end begiт

Результат:

Задание №2

DOS 40

.model tiny

.code

org 100h

begin:

mov ah,40h

mov bx,2

mov dx, offset message

mov cx,25

int 21h

ret

message db 'this funktion can print $'

end begin

Результат:

Задание №3

Работа прерывания int 29h

.model tiny

.code

org 100h

begin:

mov ax,3030h

int 29h

ret

end begin

Результат:

Задание №4

int 29h

.model tiny

.code

org 100h

begin:

mov dx,offset message1

mov ah,9

int 21h

mov dx,offset buffer

mov ah,0Ah

int 21h

mov dx, offset crlf

mov ah,9

int 21h

xor di,di

xor ax,ax

mov cl,blength

xor ch,ch

xor bx,bx

mov si,cx

mov cl,10

asc2hex:

mov bl,byte ptr bcontents[di]

sub bl,'0'

jb asc_error

cmp bl,9

ja asc_error

mul cx

add ax,bx

inc di

cmp di,si

jb asc2hex

push ax

mov ah,9

mov dx,offset message2

int 21h

pop ax

push ax

xchg ah,al

call print_al

ret

asc_error:

mov dx,offset err_msg

mov ah,9

int 21h

ret

print_al:

mov dh,al

and dh,0fh

shr al,1

call printf_nibble

mov al,dh

printf_nibble:

cmp al,10

sbb al,69h

das

mov dl,al

mov ah,2

int 21h

ret

message1 db"desatichnoe chislo: $"

message2 db "shesnadcatirichnoe chisli: $"

err_msg db "oshibka vvoda"

crlf db 0dh,0ah, '$'

buffer db 6

blength db ?

bcontents:

end begin

Результат:

Задание №5

Функция 0Ah

.model tiny

.code

org 100h

begin:

call wait_key

cmp al,27

je Quit_prog

cmp al,0

je begin

Quit_prog:

mov al,32

call out_char

int 20h

waiy_key proc

mov ah,10h

int 16h

ret

wait_key endp

Out_char proc

push cx

push ax

push es

push ax

Результат:

Практическая работа №10/2.

Изучение настроек bios с помощью установки обработчика прерывания, а также возможно dos по замене и дополнению сервисных программ собственными обработчиками прерываний.

Цель работы: Ознакомление с основными средствами вывода текстовых данных на экран посредством средств операционной системы Dos, средствами Bios и средствами непосредственного (прямого) отображением в видеобуфере.

Задание №1

.model tiny

.code

org 100h

begin:

mov ah,00

mov al,6

int 10h

ret

end begin

Задание №2

Установление положением курсора.

.model tiny

.code

org 100h

begin:

mov ah,02

mov bh,9

mov dh, 12

mov dl, 20

int 10h

mov ax, 66

int 29h

ret

end begin

Результат:

Задание №3

Выводим символ с заданным атрибутом на экран.

.model tiny

.code

org 100h

begin:

mov ah,09

mov bh,0

mov al,77

mov bl,00011111b

mov cx,555

int 10h

ret

end begin

Результат:

Задание №4

.model tiny

.code

org 100h

begin:

mov cl, 'd'

call ungetch

mov cl,'i'

call ungetch

mov cl,'r'

call ungetch

mov cl,0dh

ungetch proc

mov ah,05h

mov ch,0

int 16h

ret

ungetch endp

end begin

Результат:

Контрольные задания.

1.функции вывода на экран dos-каждый символ на экране описывается двумя байтами –ASCLL-кодом и байтом атрибута, указывающих цвет символа и фона, а также является ли символ мигающим.

Атрибуты символа:

Бит 7:символ мигает ( по умолчанию) или фон яркого цвета(если его действие было переопределено видео функцией 10h.

Бит6-4:цвет фона.

Бит 3: символ яркого цвета (по умолчанию) или фон мигает( если его действия было переопределено видео функцией 11h).

Биты 2-0: цвет символа.

Цвета кодируются в битах

.

2. Работа фикции Dos 02h-

Int 10, ah=02-установить положение курсора.

3.основные управляющие символы вывода на экран- ASCLL-кодом и байтом атрибута.7.

7.функции установки видеорежима (текстовый, цветовой, монохромный):

Al= номер режима в младших 7 битах.

-int 10h? ah=00-установка видеорежима.Bios(Phoenix и AMI) помещают а Al 30H для текстового режима и 20H для графических.

-int 10h, ah=4fh, al=02- установка Super VRA-видеорежим

Bx- номер режима младших 13 битах.

Al=4fh.Если эта функция поддерживаеться.

Ah=0, если переключение произошло успешно

Ah=1, если произошла ошибка.

8.становка Super VRA-видеорежим-int 10h, ah=4fh, al=02.

9.Функции прерывания управление по.курсора-int 10h, ah=02-устаеовить положение курсора

Ah=02

Bh=номер страницы

Dh=строка

Dl=столбец.

10.Считывать положение размера курсора int 10h, ah=03.

Ah=03

Bh=номер страницы

Dh,Dl-строка и столбец текущей позиции курсора

Ch,Cl= первая и последняя строки курсора.

11. int 10h, ah=0ah- вывести символ на экран.

Ah=0ah

Bh= номер страницы

Al=ASCII-код символа

Cx=число повторений символа

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]