Результат:
Задание №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=число повторений символа