Поможем написать учебную работу
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.
Міністерство освіти і науки України
Національний університет харчових технологій
Кафедра інформаційних систем
Лабораторна робота №5
Системне програмування та ОС
на тему:
«програмування простих циклів і розгалужень»
Перевірив викладач:
Дроб`язко І. П.
Виконав:
Студент групи АКС 3-5
Денисенко О. Ю.
Київ 2012
Мета роботи вивчення правил побудови простих циклів і розгалужень, способів адресації змінних і набуття навиків їх реалізації у програмах мовою асемблера.
Завдання 51: Замінити непарні літери на символ, введений з клавіатури.
Завдання 52: Визначити кількість відємних елементів масиву.
Лістинг програми 51
data SEGMENT
string db 256 dup('*')
i dw ?
sb db 60h
lgth dw ?
S_1 db 'Input string please: ','$'
S_2 db 'Input simbol please: ','$'
ent db 13,10,'$'
data ENDS
code SEGMENT
ASSUME cs:code,ds:data
begin:
include macros.lib
mov ax,data
mov ds,ax
S_S S_1
mov ah, 3fh
mov bx, 0
mov cx, 256
lea dx, string
int 21h
sub ax, 2
mov lgth, ax
mov dx,offset ent ;out ent
mov ah,9
int 21h
xor si, si
n_loop equ lgth
mov cx, n_loop
start_loop:
mov i, cx
cmp ah, 0
jz M2
M1:
WriteString string, si
inc sb
jmp fin
M2:
WriteSimbol sb
fin:
inc si
mov cx, i
loop start_loop
mov ax,4c00h
int 21h
code ENDS
end begin
Macros.lib
S_S macro Str
mov dx, offset Str
mov ah, 9
int 21h
endm
WriteSimbol macro Simb
mov dl, Simb
mov ah, 2
int 21h
endm
WriteString macro string,index
mov ah, 40h
mov bx, 1
mov cx, 1
lea dx, string[index]
int 21h
endm
Лістинг програми 52
data SEGMENT byte
Ms db 10,2,-4,-7,7,10,-20,40
n dw 8
m db 0
i dw ?
data ENDS
code SEGMENT
ASSUME cs:code,ds:data
begin:
mov ax,data
mov ds,ax
xor si, si
mov bx, 0
n_loop equ n
mov cx, n_loop
start_loop:
mov i, cx
mov ah, Ms[si]
cmp ah, 0
jng M2
M1:
jmp fin
M2:
cmp ah, bh
jl max
jmp fin
max:
mov bh, ah
fin:
inc si
mov cx, i
loop start_loop
mov m, bh
mov ax,4c00h
int 21h
code ENDS
end begin
Результат роботи програми
Висновок: в першій частині л.р. були замінити непарні літери на символ, введений з клавіатури, рядок може мати довільну кількість символів. Заміна відбувається лише при виведені строки. В другій визначено кількість відємних елементів масиву. Та відображено у регістрі BX.