лб10
.docx
Лабораторна робота № 10
ПРОГРАМУВАННЯ ПРОСТИХ ЦИКЛІВ І РОЗГАЛУЖЕНЬ
Мета роботи – вивчення правил побудови простих циклів і розгалужень, способів адресації змінних і набуття навиків їх реалізації у програмах мовою асемблера.
Завдання на виконання роботи
Ввести з клавіатури довільний текст (не більше рядка на екрані). Виконати його оброблення згідно варіанта. Текст після обробдення вивести на екран.
Варіанти завдання 1
12. Додати після кожного символа новий символ, введений з клавіатури.
Лістинг програми:
data segment
t1 db 13,10,'Vvedit ryadok: $'
t3 db 13,10,'Vvedit simvol: $'
t2 db 13,10,'Rez: $'
s db 100 dup(' ')
s1 db ?
ends
stack segment
dw 128 dup(0)
ends
code segment
start:
mov ax, data
mov ds, ax
mov es, ax
xor bx,bx
xor cx,cx
mov dx, offset t1
mov ah, 9
int 21h
lea dx, s
mov ah,0Ah
int 21h
mov dx, offset t3
mov ah, 9
int 21h
mov ah, 1
int 21h
mov s1,al
lea si, s
inc si
xor cx,cx
mov cl,byte [si]
inc si
mov dx, offset t2
mov ah, 9
int 21h
for2:
xor ax,ax
xor dx,dx
mov ah, 2
mov dl,[si]
int 21h
xor ax,ax
xor dx,dx
mov ah, 2
mov dl,s1
int 21h
inc si
loop for2
mov ah, 1
int 21h
mov ah, 4Ch
int 21h
end start
Варіанти завдання 2
Визначити кількість знакочергувань елементів, тобто переходів з мінуса на плюс і навпаки.
Лістинг програми:
data segment
zn db 20
mas DB 1,2,-2,-4,6,$
len = $-mas
rez db 13,10,"Vsbogo - $"
ends
stack segment
dw 128 dup(0)
ends
code segment
start:
mov ax, data
mov ds, ax
mov es, ax
mov si, offset mas
mov cx, len - 1
xor dx, dx
cld
cykl: lodsw
xor ax, [si]
jns odinznak
inc dx
odinznak: loop cykl
add dl,30h
mov bx,dx
mov dx, offset rez
mov ah, 9
int 21h
mov dl, bl
mov ah, 2
int 21h
mov ax, 4c00h
int 21h
ends
end start