Вычислить сумму элементов массива, расположенных между первым и последним положительным элементами - Assembler
Формулировка задачи:
дан массив, состоящий N целых элементов. Вычислить сумму элементов массива, расположенных между первым и последним положительным элементами. Массив и количество элементов N вводятся с клавиатуры.
вот премер, под типу моей задачи
Include io.asm
Sseg SEGMENT STACK
DB 1000 DUP(?) ;ЋЃ‹Ђ‘’њ ‘’…ЉЂ
Sseg ENDS
Dseg SEGMENT
N dw 10 DUP(?)
X dw (?)
Q dw (?)
W dw (?)
STR1 db 'Vvedite straky iz 10 chisel: $'
STR2 db 'Summa: $'
STR3 db 'pervyy polozhitelnyy element: $'
STR4 db 'posledniy polozhitelnyy element: $'
STR5 db 'Vvedonnyy massiv: $'
Dseg ENDS
Cseg SEGMENT
ASSUME CS:Cseg,DS:Dseg,SS:Sseg
Start:
MOV AX,Dseg ;€Ќ€–€Ђ‹€‡Ђ–€џ ‘…ѓЊ…Ќ’Ђ „ЂЌЌ›•
MOV DS,AX
MOV AX,0
MOV DX,0
LEA DX,STR1 ;ўлў®¤ бва®ЄЁ
OUTSTR
NEWLINE ;ЇҐаҐе®¤ ** *®ўго бва®Єг
MOV SI,0
MOV CX,10 ;ЉЋ‹€—…‘’‚Ћ ‘€Њ‚Ћ‹Ћ‚ ‚ ‘’ђЋЉ…
M1:
ININT N[SI] ;‘Ћ•ђЋЌ…Ќ€… ‘€Њ‚Ћ‹Ђ
ADD SI,2 ;㢥«ЁзЁў*Ґ¬ бзҐвзЁЄ
LOOP M1 ;‡Ђ–€Љ‹€‚ЂЌ€…
MOV AX,0
MOV DX,0
LEA DX,STR5
OUTSTR
NEWLINE
MOV SI,0
MOV CX,10
Q1: ;ўлў®¤ ¬*бЁў*
OUTINT N[SI],4
ADD SI,2
LOOP Q1
NEWLINE
MOV AX,0
MOV DX,0
MOV SI,0
MOV CX,10
M2: ;Ї®ЁбЄ ЇҐаў®Ј® Ї®«®¦ЁвҐ«м*®Ј®
MOV AX,N[SI]
MOV Q,SI
CMP DX,AX
JG A0
ADD SI,2
LOOP M2
A0:
ADD Q,2
MOV AX,0
MOV DX,0
MOV DI,18
MOV CX,10
M3: ;Ї®ЁбЄ Ї®б«Ґ¤*ҐЈ® Ї®«®¦ЁвҐ«м*®Ј®
MOV AX,N[DI]
MOV W,DI
CMP DX,AX
JL A1
SUB DI,2
LOOP M3
A1:
MOV AX,0
MOV DX,0
LEA DX,STR3
OUTSTR
OUTWORD Q
NEWLINE
MOV AX,0
MOV DX,0
LEA DX,STR4
OUTSTR
OUTWORD W
NEWLINE
MOV SI,Q
MOV DI,W
CMP SI,DI ;ЇҐаҐе®¤ Ґб«Ё ЇҐаўл© Ё Ї®б«Ґ¤*Ё© Ї®«®¦ЁвҐ«м*л© н«Ґ¬Ґ*в б®ўЇ®¤*Ґв
JGE A2
MOV AX,0
MOV AX,N[SI]
ADD SI,2
M4:
CMP SI,DI ;ЇҐаҐе®¤ Ґб«Ё ўбҐ н«Ґ¬Ґ*вл б«®¦Ґ*л
JG A3
ADD AX,N[SI] ;б㬬*
ADD SI,2
JMP M4
A2: ;ўлў®¤ Ґб«Ё ЇҐаўл© Ё Ї®б«Ґ¤*Ё© Ї®«®¦ЁвҐ«м*л© н«Ґ¬Ґ*в б®ўЇ®¤*Ґв
MOV AX,0
MOV DX,0
LEA DX,STR2
OUTSTR
OUTWORD N[SI]
A3: ;ўлў®¤ б㬬л
MOV X,AX
MOV AX,0
MOV DX,0
LEA DX,STR2
OUTSTR
OUTint X
MOV Ah,1
int 21h
MOV AX,4C00H ;Џ…ђ…„Ђ—Ђ “ЏђЂ‚‹…Ќ€џ Ћ‘
INT 21H
Cseg ENDS
END StartРешение задачи: «Вычислить сумму элементов массива, расположенных между первым и последним положительным элементами»
textual
Листинг программы
Include io.asm
Объяснение кода листинга программы
- Включаем файл io.asm
- Переменная
nинициализируется значением 0 - Переменная
sumинициализируется значением 0 - Переменная
iинициализируется значением 0 - Переменная
numинициализируется значением 0 - Цикл while для прохода по всем элементам массива
- Внутри цикла проверяем значение переменной
num - Если
numбольше 0, то добавляем его к переменнойsum - После окончания цикла выводим значение переменной
sum - Конец программы