Добрый вечер всем.
У меня проблемы с Ассемблером, никак не могу въехать в него=(( Есть опыт на С++, Дельфе, Яве, но в этот язык никак не могу...
Помогите плиз вот с таким заданием:
Тема "Обработка одномерных массивов"
Задан массив A из N чисел. Создать массив B , в котором будут записаны числа из массива A, и массив C, в котором Ci равно количеству чисел Bi в массиве A. Например, массив A (1,0,0,2,0,3,2,-4,1). Массив B должен быть (1,0,2,3,-4), а массив С (2,3,2,1).Пример написания кода, относящегося именно к заданию, а не к внутренностям ассемблера.
Код:
Dseg Segment
; индивидуальные данные - начало
N dw 5
A dw -2,3,4,-8,0
B dw 10 dup (?)
TextMA db 'Массив А: ',10,13,'$'
TextMB db 'Массив В: ',10,13,'$'
TextSum db 'Сумма=$'
; Индивидуальные данные конец
Prob db ' $'
Buffer db 6 dup (?),'$'
NL db 10,13,'$'
Dseg Ends
Stacks segment
dw 128 dup (?)
Stacks ends
Codes segment
Main proc far
Assume CS:codes, DS:dseg, SS:stacks
Mov AX,Dseg
Mov DS,AX
; Индивидуальная часть программы - начало
LEA DX,TextMA ;блок 1
CALL PRT ;* напечатать 'Массив А:'
LEA BP,A ;блок 2
Mov CX,N ; загрузить в регистр BP адрес начала массива А
CALL PRINTMAS ; печать массива А
LEA DX,NL ;перевод строки
CALL PRT
Xor AX,AX ;блок 2 SUM - регистр AX
Xor BX,BX ;блок 3 i - регистр BX
Xor SI,SI ;блок 4 j - регистр SI
BL5:
Mov DI,BX;блок 5
SAL DI,1
Mov CX,A[DI]
CMP CX,2
JG BL6 ; если A[i] >2, то на блок 6
JMP BL7 ; Ёиначе на блок 7
BL6: ;блок 5
Add AX,CX
JMP BL10 ; переход на блок 10
BL7: Cmp CX,0 ;блок 7
JL BL8 ; Если А[i]<0, то на блок 8
JMP BL10 ; иначе на блок 10
BL8: NEG CX ; изменили знак A[i]
Mov DI,SI
SAL DI,1
Mov B[DI],CX ; B[j]:=-A[i]
INC SI ; блок 9
BL10: INC BX ; блок 10
CMP BX,N ; блок 11
JL BL5 ;если i<N, то на * блок 5
LEA DX,TextMB ;блок 9
CALL PRT ;* напечатать 'Массив В:'
LEA BP,B
Mov CX,SI ;перепишем в CX SI = j
CALL PRINTMAS ;Печать массива B
LEA DX,NL
CALL PRT ; перевод строки
Lea DX,TextSUM ; печать текста "сумма ="
CALL PRT
CALL PRN ; Печать полученной суммы
; Индивидуальная часть программы конец
Mov AH,4CH
Int 21h
Main Endp
;*************************************************************************"
Это пример программы, задание которой вот такое (Задан массив А из N чисел. Найти сумму чисел, больших 2, и образовать массив B из отрицательных чисел массива A, взяв их по модулю).
Помогите, пожалуйста!!!
Заранее благодарю!!