Не думал, что когда-нибудь и я задам тут вопрос, но вот. . Пришел ассемблер :D Делфи, Паскаль, PHP - давались легко, но с ним. . Вообще не дружу)
Буду крайне благодарен, если кто-нибудь поможет не просто решить, а немного разъяснить основные моменты)
Для заданного массива Х (I), где I=1,2,...10, вычислить:
у (x) = ax, если 0 < x <= 5
у (x) = ах + а, если 5 < x <= 10
у (x) = 0, если x > 10
Я и сам, в своё время, пытаюсь разобраться по учебникам, но может найдется умелец, который с ним на "ты" :)
(Есть еще и вторая, но с ней, надеюсь, сам смогу разобраться. "Даны два массива А (I) и В (I). Найти max(A(I)), max(B(D)), min(A(D), min(B(I)). Задачу нахождения max и min оформить в виде подпрограмм. I=1,2,...5.")
Другие языки программирования и технологии
Лабораторная работа по Ассемблеру (TASM), помогите пожалуйста)
Не совсем корректное условие задания или приведено не полностью.
Не понятно как задаётся массив и какая разрядность его элементов.
Судя по функции, X - неотрицательное число, даже натуральное, т. к. при X = 0 функция не определена.
Также не указано, что такое а, и как оно задаётся в программе.
model small
data segment
XArray db 3,7,10,4,1,5,12,8,23,9
Len equ $ - XArray
a db 6
Xtxt db 13,10,'X = $'
Ytxt db ' Y = $'
data ends
assume cs:code, ds:data, ss:stseg
code segment
start:
mov ax,data
mov ds,ax
mov si,1
mov cx,Len
MainLoop:
lea dx,Xtxt
mov ah,9
int 21h
mov al,XArray[si-1]
call PrintInt
xor dl,dl
cmp al,10
ja PrintY
mul a
mov dl,al
cmp byte ptr XArray[si-1],5
jbe PrintY
add dl,a
PrintY:
push dx
lea dx,Ytxt
mov ah,9
int 21h
pop ax
call PrintInt
inc si
loop MainLoop
xor ah,ah
int 16h
mov ah,4Ch
int 21h
PrintInt proc
push ax
push cx
push bx
xor cx,cx
mov bl,10
DivLoop:
xor ah,ah
div bl
add ah,'0'
push ax
inc cx
test al,al
jnz DivLoop
PrintLoop:
pop ax
xchg al,ah
int 29h
loop PrintLoop
pop bx
pop cx
pop ax
ret
PrintInt endp
code ends
stseg segment
dw 64
stseg segment
end start
Не понятно как задаётся массив и какая разрядность его элементов.
Судя по функции, X - неотрицательное число, даже натуральное, т. к. при X = 0 функция не определена.
Также не указано, что такое а, и как оно задаётся в программе.
model small
data segment
XArray db 3,7,10,4,1,5,12,8,23,9
Len equ $ - XArray
a db 6
Xtxt db 13,10,'X = $'
Ytxt db ' Y = $'
data ends
assume cs:code, ds:data, ss:stseg
code segment
start:
mov ax,data
mov ds,ax
mov si,1
mov cx,Len
MainLoop:
lea dx,Xtxt
mov ah,9
int 21h
mov al,XArray[si-1]
call PrintInt
xor dl,dl
cmp al,10
ja PrintY
mul a
mov dl,al
cmp byte ptr XArray[si-1],5
jbe PrintY
add dl,a
PrintY:
push dx
lea dx,Ytxt
mov ah,9
int 21h
pop ax
call PrintInt
inc si
loop MainLoop
xor ah,ah
int 16h
mov ah,4Ch
int 21h
PrintInt proc
push ax
push cx
push bx
xor cx,cx
mov bl,10
DivLoop:
xor ah,ah
div bl
add ah,'0'
push ax
inc cx
test al,al
jnz DivLoop
PrintLoop:
pop ax
xchg al,ah
int 29h
loop PrintLoop
pop bx
pop cx
pop ax
ret
PrintInt endp
code ends
stseg segment
dw 64
stseg segment
end start
Александр Гусев
Большое спасибо! Очень выручили! :) Осталось разобраться и добавить комментарии ^_^
Похожие вопросы
- Помогите написать небольшую программу на ассемблере (TASM). Подробности внутри.
- Ассемблер (TASM). Нужно ввести строку и с помощу команд обработки цепочек подсчитать кол-во русской буквы "в" в строке
- Как перевести число из троичной системы счисления в десятичную в Ассемблер (tasm)
- Как перевести число из двоичной системы счисления в восьмеричную в Ассемблер (tasm) Программа должна быть простой!
- Как перевести число из восьмеричной системы счисления в двоичную в Ассемблер (tasm) Программа должна быть простой!
- Помогите сделать лабораторную работу по теме "Одномерные массивы" [C++]
- Ассемблер! ! Помогите, пожалуйста с программированием.
- помогите пожалуйста с задачей по ассемблеру 8086
- помогите пожалуйста решить задачу по работе компьютера!
- Работа в ассемблере nasm