Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ГОС_ответы.doc
Скачиваний:
43
Добавлен:
27.10.2018
Размер:
21.59 Mб
Скачать

17 Розробіть на мові асемблер програму для обчислення суми чисел масиву з 10 елементів типу байт у процедурі з передаванням аргументів через регістри.

data segment para public 'data' ;сегмент данных

mas db 1,2,3,4,5,6,7,8,9,10 ;массив из 10 элементов

len dw 10

data ends

stk segment stack

db 256 dup ('?') ;стек

stk ends

code segment para public 'code'

main proc

assume cs:code,ds:data,ss:stk,es:data

mov ax,data

mov ds,ax

mov cx,len

mov si,offset mas ;передается начало массива

xor ax,ax ;обнуление

cycle: mov bl,[si] ;считывание следующего элемента массива

call ad ;вызов процедуры proc

inc si

loop cycle

exit: mov ax,4c00h

int 21h

endp main

ad proc ;процедура сложения

add al, bl

ret

endp ad

code ends

end main

18 Розробіть на мові асемблер фрагмент програми, в якій знаходиться максимальний елемент масиву з 10 чисел типу слово (з використанням команди jcxz).

data segment para public 'data' ;сегмент данных

mas dw 1,2,3,4,5,6,7,8,9,10 ;массив 10 чисел типа cлово

len dw 10

data ends

stk segment stack

db 256 dup ('?') ;стек

stk ends

code segment para public 'code'

main proc

assume cs:code,ds:data,ss:stk,es:data

mov ax,data

mov ds,ax

mov cx,len

mov si,offset mas ;передается начало массива

xor ax,ax ;обнуление

cycle: mov bx,[si] ;считывание следующего элемента массива

cmp ax,bx ;сравнение с максимальным

jg next ;переход если ax>bx

mov ax,bx

next: inc si

dec cx

jcxz exit ;если конец массива - выход

jmp cycle

exit: mov ax,4c00h

int 21h

endp main

code ends

end main

19 Розробіть на мові асемблер фрагмент програми для обчислення номеру мінімального елементу в масиві з 10 чисел типу слово (за допомогою команди loop)

data segment para public 'data' ;сегмент данных

mas dw 1,2,3,4,5,6,7,8,9,10 ;массив 10 чисел типа слово

len dw 10

data ends

stk segment stack

db 256 dup ('?') ;стек

stk ends

code segment para public 'code'

main proc

assume cs:code,ds:data,ss:stk,es:data

mov ax,data

mov ds,ax

mov cx,len

mov si,offset mas ;передается начало массива

mov ax,07fh

cycle: mov bx,[si] ;считывание следующего элемента массива

cmp ax,bx ;сравнение с минимальным

jl next ;переход если ax<bx

mov ax,bx

next: inc si

loop cycle

exit: mov ax,4c00h

int 21h

endp main

ad proc

add al, bl

ret

endp ad

code ends

end main

20 Розробіть на мові асемблер фрагмент програми, що порівнює значення двох змінних введених з клавіатури й відображає результат у вигляді: рівні або нерівні.

data segment para public 'data'

mes1 db 0ah,0dh,'equal','$'

mes2 db 0ah,0dh,'not equal','$'

newl db 0ah,0dh,'$'

data ends

stk segment stack

db 256 dup ('?')

stk ends

code segment para public 'code'

main proc

assume cs:code,ds:data,ss:stk,es:data

mov ax,data

mov ds,ax

mov ah,01h

int 21h

mov bl,al

mov ah,09h

mov dx,offset newl

int 21h

mov ah,01h

int 21h

cmp al,bl

jne nequal

equal:

mov ah,09h

mov dx,offset mes1

int 21h

jmp exit

nequal:

mov ah,09h

mov dx, offset mes2

int 21h

exit: mov ax,4c00h

int 21h

endp main

code ends

end main

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