Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ассемблер.docx
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
49.45 Кб
Скачать

1Написать программу на ассемблере ia-16, вычисляющую максимальное значение числа n, при котором n! не

переполняет одно слово .model small

.386

.stack 100h

.data

N DW 1

.code

START: mov ax, @data

mov ds, ax

xor ax, ax

mov ax, N

mov bx, N

xor dx, dx

fact: cmp dx, 0

jne FINISH

inc bx

mul bx

jmp fact

FINISH:xor ax, ax

dec bx

mov N, bx

mov dx, bx

add dl, 30h

mov ah, 2

int 21h

MOV AX, 4C00h

INT 21h

END START

2.20Написать программу на языке ассемблер IA-16, в которой определены две переменных х и у двойные слова и подпрограмму, вычисляющую сумму х + у. Параметры передаются через стек процессора

.model small

.stack 100h

.data

x dd 1287432

y dd 0056363

otv dd ?

.code

start:

mov ax, @data

mov ds, ax

push ax; выделим место в стеке для того, чтоб записать туда ответ

push ax; сейчас закинули туда мусор

mov bx, offset x

push [bx]

push [bx + 2]

mov bx, offset y

push [bx]

push [bx + 2]

call mimi

pop ax

pop ax

pop ax

pop ax

mov bx, offset otv

pop [bx + 2]

pop [bx]

mov ax, 4C00h

int 21h

mimi proc

mov bp, sp

mov ax, [bp + 4]

add ax, [bp + 8]

mov [bp + 12], ax

jnc k1

mov ax, 1

jmp k2

k1:

mov ax, 0

k2:

add ax, [bp + 2]

add ax, [bp + 6]

mov [bp + 10], ax

ret

mimi endp

end start

3Написать программу на языке ассемблер IA-16, в которой определены натуральные числа A1,…An. Написать подпрограмму, вычисляющей среднее арифметическое этих чисел и формирующей массив d1, … dn, отклонений этих чисел от среднего значения. Адреса начала массивов An, dn передаются подпрограмме через регистры ax и bx, а число элементов n передается через регистр cx.

.model small

.stack 100h

.data

x dd 10000h

y dd 1

z dd ?

.code

start: mov ax, @data

mov ds, ax

mov ax, word ptr x

push ax

mov ax, word ptr x+2

push ax

mov ax, word ptr y

push ax

mov ax, word ptr y+2

push ax

call sum

pop bx

mov word ptr z+2, bx

pop cx

mov word ptr z, cx

mov ah, 4Ch

int 21h

sum proc

pop ax

pop di

pop si

pop bx

pop cx

add cx, si

adc bx, di

push cx

push bx

push ax

ret

sum endp

end start

3Написать программу на языке ассемблер IA-16, в которой определены натуральные числа A1,…An. Написать подпрограмму, вычисляющей среднее арифметическое этих чисел и формирующей массив d1, … dn, отклонений этих чисел от среднего значения. Адреса начала массивов An, dn передаются подпрограмме через регистры ax и bx, а число элементов n передается через регистр cx.

.model small

.stack 100h

.data

a DB 3, 5, 7, 2, 3

n DW 5

d DB 5 DUP(0)

.code

START: mov ax, @data

mov ds, ax

xor ax, ax

mov bx, offset a

mov si, offset d

call function

mov si, offset d

mov cx, si

add cx, n

xor dx, dx

print: mov dl, [si]

add dl, 30h

mov ah, 2

int 21h

inc si

cmp si, cx

jl print

MOV AX, 4C00h

INT 21h

function proc

mov cx, bx

add cx, n

sum: add al, [bx]

inc bx

cmp bx, cx

jl sum

xor cx, cx

mov cx, n

div cl

sub cx, n

xchg bx, cx

xor dx, dx

zamena:mov dl, al

sub dl, [bx]

mov [si], dl

inc bx

inc si

cmp bx, cx

jl zamena

RET

function endp

END START