- •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-кодами десятичных цифр, в машинное представление
4Написать программу, вычисляющую максимальное значение числа n, при котором n! не переполняет 4 байта
.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
fact: inc bx
mul bx
jo print
jmp fact
print: xor ax, ax
mov dx, bx
add dl, 30h
mov ah, 2
int 21h
MOV AX, 4C00h
INT 21h
END START
5Написать программу на языке ассемблер, которая осуществляет ввод с клавиатуры в память компьютера посимвольно строку символов длины L, упорядочивает введенные символы по порядку возрастания ASCII кодов
.model small
.stack 100h
.data
L DW 7
a DB 7 dup(?)
.code
START: mov ax, @data
mov ds, ax
xor ax, ax
mov bx, offset a
mov cx, bx
add cx, L
vvod: mov ah, 1
int 21h
mov [bx], al
inc bx
cmp bx, cx
jl vvod
sub bx, L
mov dx, cx
dec cx
xor ax, ax
sort: mov si, bx
inc si
sort2: mov al, [si]
cmp al, [bx]
jl zamena
inc si
cmp si, dx
jl sort2
jmp next
zamena:mov al, [si]
mov ah, [bx]
mov [si], ah
mov [bx], al
inc si
cmp si, dx
jl sort2
next: inc bx
cmp bx, cx
jl sort
mov bx, offset a
print: mov dl, [bx]
mov ah, 2
int 21h
inc bx
cmp bx, dx
jl print
mov ax, 4C00h
int 21h
END START
6Написать программу, в которой определены натуральные числа , размерностью двойные слова(4 байта) x и y. Написать подпрограмму, которая находит максимальное из них. Параметры и результат передаются через стек
.model small
.stack 100h
.data
x dd 10000h
y dd 14532h
z dd ?
.code
start:
mov ax, @data
mov ds, ax
mov bx, offset x
push [bx]
mov bx, offset y
push [bx]
mov bx, offset x+2
push [bx]
mov bx, offset y+2
push [bx]
call mimi
mov bx, offset z+2
pop [bx]
mov bx, offset z
pop [bx]
mov ax, 4C00h
int 21h
mimi proc
pop dx
pop ax
pop bx
cmp ax, bx
jb k1
ja k2
mov cx, ax; нужный старший записали сразу в сх
pop ax
pop bx
cmp ax, bx
jb finish
mov bx, ax
jmp finish
k1: mov cx, bx; старшая часть в сх
pop ax; достаём ненужный у
pop bx; достаём младшую часть числа
jmp finish
k2: mov cx, ax; записываем старшую часть в сх
pop bx
pop ax
jmp finish
; по окончанию старшая часть числа в сх, а младшая в bx, а мы это дело, потом, в стек закидываем
finish: push bx
push cx
push dx; адрес возврата
ret
mimi endp
end start
