
- •1Написать программу на ассемблере ia-16, вычисляющую максимальное значение числа n, при котором n! не
- •4Написать программу, вычисляющую максимальное значение числа n, при котором n! не переполняет 4 байта
- •7Напишите последовательность команд, корректно работающую со стеком без использования команд pop и push с применением базой индексной адресации и выполняющую перечисленные ниже задачи:
- •8Написать программу на ассемблере ia-16, вычисляющую максимальное значение числа n, при котором n!
- •9Написать программу на языке ассемблер ia-16, в которой определены две переменных х и у двойные слова и подпрограмму, вычисляющую разность х - у. Параметры передаются через стек процессора
- •13Написать программу для ввода с клавиатуры натурального числа порядка n с последующим его преобразованием в машинное представление
- •14Написать программу, в которой определены две переменных х и у двойные слова и подпрограмму, вычисляющую разность х - у. Параметры передаются через регистры процессора
- •16. Написать программу на языке ассемблер ia-16, преобразующую строку байтов длинной n, являющихся ascii-кодами десятичных цифр, в машинное представление
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