лаб15
.docx
ЛАБОРАТОРНА РОБОТА №15
Тема: Робота с відеобуфером у програмах на мові Асемблер.
Мета: Оволодіти навичками написання програм на мові Асемблер для роботи з відеобуфером.
Завдання 1:
data segment
mess0 db 'pershiy ryadock',13,10
db 'drugiy ryadock','$'
fname db 'text.txt',0
buff db 2000 dup(20h)
pkey db "press any key...$"
ends
stack segment
dw 128 dup(0)
ends
code segment
start:
mov ax, data
mov ds, ax
mov es, ax
mov ax,3
int 10h
mov ah,9
mov dx, offset mess0
int 21h
mov di, offset buff
xor bx,bx
xor dx,dx
save:
mov cx,80
b:
mov ah,2
int 10h
mov ah,8
int 10h
stosb
inc dl
loop b
mov ax,0a0dh
stosw
xor dl,dl
inc dh
cmp dh,2
jnz save
mov ah,3ch
mov dx, offset fname
mov cx,20h
int 21h
xchg bx,ax
mov ah,40h
mov dx,offset buff
mov cx,2000
int 21h
mov ah,3eh
int 21h
exit:
xor ax,ax
int 16h
int 20h
lea dx, pkey
mov ah, 9
int 21h
mov ah, 1
int 21h
mov ax, 4c00h
int 21h
ends
end start
Завдання 2:
data segment
file db 'text.txt',0
mess0 db 'pershiy ryadock'
descr dw 0
str_len=$-mess0
buff db 100 dup(20h)
attr db 1eh
ends
stack segment
dw 128 dup(0)
ends
code segment
start:
mov ax, data
mov ds, ax
mov es, ax
mov ax, 0b800h
mov es, ax
mov cx,str_len
mov si, offset mess0
cld
mov ah, attr
lodstor:
lodsb
stosw
loop lodstor
mov di, offset buff
mov bx,0
mov cx,1
mmm: push cx
mov cx,25
nnn: push cx
mov ax,es:[bx]
mov [di],ax
add bx,2
inc di
pop cx
loop nnn
mov ax,0a0dh
mov [di],ax
inc di
inc di
pop cx
loop mmm
mov ah,3ch
mov dx, offset file
mov cx,20h
int 21h
xchg bx,ax
mov ah,40h
mov dx,offset buff
mov cx,str_len
int 21h
mov ah,3eh
int 21h
mov ax, 4c00h
int 21h
ends
end start
Завдання 3:
data segment
fname db 'text.txt',0
mess0 db 'pershiy ryadock'
str_len=$-mess0
mess1 db '1234567890'
buff db 100 dup(20h)
attr db 1eh
ends
stack segment
dw 128dup(0)
ends
code segment
start:
mov ax, data
mov ds, ax
mov es, ax
mov ax, 0b800h
mov es, ax
mov cx,str_len
mov si, offset mess0
cld
mov ah, attr
lodstor:
lodsb
stosw
loop lodstor
mov di, 0
mov cx,10
mov si, offset mess1
cld
mov ah, attr
lodstor1:
lodsb
stosw
loop lodstor1
mov di, offset buff
mov bx,0
mov cx,1
mmm: push cx
mov cx,25
nnn: push cx
mov ax,es:[bx]
mov [di],ax
add bx,2
inc di
pop cx
loop nnn
mov ax,0a0dh
mov [di],ax
inc di
inc di
pop cx
loop mmm
mov ah,3ch
mov dx, offset fname
mov cx,20h
int 21h
xchg bx,ax
mov ah,40h
mov dx,offset buff
mov cx,str_len
int 21h
mov ah,3eh
int 21h
mov ax, 4c00h
int 21h
ends
end start