Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > Asm для начинающих > Помогите с задачкой |
Автор: Vat63 9.12.2013, 18:21 |
вопрос в следующем: Составить программу производящую подсчет суммы элементов числового массива из 20 чисел, лежащих в диапазоне -10...+10. Всем кто откликнулся большое спасибо! |
Автор: ФедосеевПавел 9.12.2013, 18:30 |
Давай своё спасибо! Ну а серьёзно, покажи наработки. Прога-то не сложная, а у тебя уже что-то есть. |
Автор: Vat63 9.12.2013, 18:37 | ||
наработки убогие, что довольно прискорбно, с ассемблером особо не знаком, д и преподают у нас его на уровне отредактируй методичку с кодом под свой вариант |
Автор: ФедосеевПавел 9.12.2013, 18:42 |
Ну и чудесно. Покажи хоть какие. Но только с попыткой решения, а не шаблон DOS EXE или DOS COM. |
Автор: Vat63 9.12.2013, 18:52 |
до попытки решения тут далекоооо Data SEGMENT MAS DB -10,-9,-8,-7,-6,-5,-4,-3,-2,-1,0,1,2,3,4,5,6,7,8,9,10 Data ENDS Ourstack Segment Stack DB 100h DUP (?) Ourstack ENDS ASSUME CS:Code, DS:Data, SS:Ourstack Code SEGMENT Start: mov AX, Data mov DS, AX mov SI, offset MAS add mas, mas ;.... mov AX, 4C00h int 21h Code ENDS END Start |
Автор: ФедосеевПавел 9.12.2013, 19:13 | ||
Шаблон DOS EXE есть. Далее, как в бейсике, паскале или с, перебираешь все элементы массива. Можно организовать перемещение так:
обращение к элементу массива mas[si] А ещё глянь уроки калашникова http://www.kalashnikoff.ru/Assembler/issues/004.htm |
Автор: Vat63 9.12.2013, 19:17 |
мы не пользуемся бэйсиком паскалем или ещё чем либо чисто блокнот.asm и компановщики tasm td tlink, спасибо |
Автор: Vat63 10.12.2013, 00:22 |
ФедосеевПавел, помоги пожалуйста с той же программой, не получается правильно вывести сумму массива ;Составить программу производящую подсчет суммы элементов числового массива из 20 чисел, лежащих в диапазоне -10...+10 Data SEGMENT MAS DB -10,-9,-8,-7,-6,-5,-4,-3,-2,-1,0,1,2,3,4,5,6,7,8,9,10 SUM DB 0 m db 'results:', 13, 10, '$' Y_ASCII DB 7 DUP(?) sign DB ? Data ENDS Ourstack Segment Stack DB 100h DUP (?) Ourstack ENDS ASSUME CS:Code, DS:Data, SS:Ourstack Code SEGMENT PREOBR PROC ;начало процедуры MOV AL, SUM ;в АХ исходное число MOV SIGN, ' ' ;пробел (знак +) в переменную знака CMP AX, 0 ;сравнить число с нулем JNS M_1 ;если больше или равно 0, перейти на метку М_1 MOV SIGN, '-' ;иначе знак "-" в переменную знака NEG AL ;преобразовать в прямой код M_1: XOR CX, CX MOV BX, 10 M_2: XOR DX, DX DIV BX PUSH DX INC CX; CMP AX, 0 JNE M_2 XOR SI, SI MOV AL, SIGN MOV Y_ASCII[SI], AL INC SI M_3: POP AX ADD AL, 30h MOV Y_ASCII[SI], AL INC SI LOOP M_3 MOV Y_ASCII[SI], '$' MOV DX, offset Y_ASCII MOV AH, 09h INT 21h RET PREOBR ENDP Start: mov AX, Data mov DS, AX mov SI, offset MAS mov CX, 20 mov AX, 0 L1: add AL, [SI] add SI, 1 loop L1 mov SUM, AL call PREOBR mov AX, 4C00h int 21h Code ENDS END Start Добавлено через 13 минут и 1 секунду все косяк найден тема закрыта!) Спасибо откликнувшемуся! |