Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Низкоуровневое программирование > Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 21.12.2015, 23:18   #11
R71MT
Участник клуба
 
Аватар для R71MT
 
Регистрация: 16.06.2011
Сообщений: 1,428
По умолчанию

...она и так EXE.
Скачай FASM (FlatAssembler), скопируй код Stilet'а и вставь в окно FASM'a...
...так что больше -5 или -1 ?!
Нашедшего выход - затаптывают первым..
R71MT вне форума Ответить с цитированием
Старый 22.12.2015, 22:15   #12
Екатерина57
Пользователь
 
Регистрация: 11.10.2015
Сообщений: 63
По умолчанию

спасибо,аха -1 конечно
Екатерина57 вне форума Ответить с цитированием
Старый 22.12.2015, 22:19   #13
Екатерина57
Пользователь
 
Регистрация: 11.10.2015
Сообщений: 63
По умолчанию

Мне надо код открыть в Dos Box,как это сделать?
Екатерина57 вне форума Ответить с цитированием
Старый 22.12.2015, 22:48   #14
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Он не рассчитан на ДОС. Я писал пример под Виндовс.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 24.12.2015, 07:11   #15
R71MT
Участник клуба
 
Аватар для R71MT
 
Регистрация: 16.06.2011
Сообщений: 1,428
По умолчанию

Екатерина57. Вот тебе код на FASM..
- макс.отрицательное число равно слову, т.е. - 32767;
- положительные числа игнорируются;
- проверка осуществляется на "Меньше", т.к. после NEG условие становится "Больше"..
Изображения
Тип файла: gif 8971.gif (8.3 Кб, 46 просмотров)
Нашедшего выход - затаптывают первым..

Последний раз редактировалось R71MT; 24.12.2015 в 07:17.
R71MT вне форума Ответить с цитированием
Старый 24.12.2015, 07:13   #16
R71MT
Участник клуба
 
Аватар для R71MT
 
Регистрация: 16.06.2011
Сообщений: 1,428
По умолчанию

Код:
USE16
ORG 100h
JMP start

mess0  DB  13,10,' FIND MAX NEGATIVE DIGIT (R)'
       DB  13,10,' Example: 1 205 -909 37 -13 -32000 25'
       DB  13,10,' ----------------------------------------------------'
       DB  13,10,' Input digital array ..: $'
mess1  DB  13,10,' Max negative digit ...: -$'
mess2  DB  7,'<--- INPUT ERROR!!!$'
max    DW  0                    ; буфер отрицательного числа (для сравнения)

start:
   MOV   AH,9
   MOV   DX,mess0               ; запрос на ввод чисел..
   INT   21h

   XOR   CX,CX                  ; счётчик отриц.элементов сбрасываем в нуль
inArray:                        ; заполняем массив..
   MOV   AH,1                   ; ввод с эхо средствами DOS
   INT   21h
   CMP   AL,13                  ; это ENTER ?!
   JE    findMax                ; если да - начинаем поиск максимального
   CMP   AL,'-'                 ; это знак минус ?!
   JE    negative               ; да - сохраняем введённое число в стеке
   JMP   inArray                ; читаем следующий символ..

negative:                       ; попался знак минус..
   CALL  SaveNEG                ; переводим символы юзера в число (fn возвращает в DI)
   CMP   DI,32767               ; макс.знаковое слово = 32767 dec
   JA    error                  ; юзер ввёл не больше этого числа ?! Да - ошибка!
   NEG   DI                     ; сделаем из числа - отрицательное.
   PUSH  DI                     ; сохраним его в стеке..
   INC   CX                     ; ^^.. и увеличим счётчик отриц.чисел (для LOOP)
   JMP   inArray                ; читаем следующий символ..

error:                          ; если юзверь ввёл число больше чем 32767..
   MOV   AH,9                   ; покажем сообщение об ошибке
   MOV   DX,mess2
   INT   21h
   JMP   exit                   ; выходим из программы!

findMax:                        ; юзер нажал ENTER. Начинаем поиск наибольшего.
   MOV   AH,9                   ; покажем мессагу
   MOV   DX,mess1
   INT   21h
@1:                             ; в СХ у нас кол-во PUSHей (отриц.чисел)
   POP   AX                     ; снимаем со-стека число..
   CMP   AX,[max]               ; ^^.. и сравниваем его с переменной
   JGE   next                   ; если больше/равно - пропускаем число
   MOV   [max],AX               ; значит меньше. Записываем его в переменную
next:
   LOOP  @1                     ; мотаем цикл CX-раз

   MOV   AX,[max]               ; все числа сравнили! Возьмём наименьшее в АХ
   NEG   AX                     ; команда NEG сделает из него наибольшее..
   MOV   BX,10                  ; выводить на экран будем в 10-тичной СС
   CALL  HEX2ASC                ; покажем число!

exit:
   XOR   AX,AX                  ; ждём клавишу и на выход
   INT   16h
   INT   20h

;нннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннн
;//==========; Процедура переводит число в символы и выводит их на экран ==========|
;//==========; на входе принимает: АХ = число, BX = система счисления =============| 
HEX2ASC:
   PUSHA                   
   XOR   CX,CX
isDiv:
   XOR   DX,DX
   DIV   BX
   PUSH  DX
   INC   CX
   OR    AX,AX
   JNZ   isDiv
isOut:
   POP   AX
   CMP   AL,9
   JLE   noHex
   ADD   AL,7
noHex:
   ADD   AL,30h
   INT   29h
   LOOP  isOut
   POPA
RET

;//==========; Процедура сохраняет юзерский ввод в DEC ===========================|
SaveNEG:
   XOR   DI,DI             ; в регистре DI будет число
NextNumber:
   MOV   AH,1              ; ввод без эхо...
   INT   21h
   CMP   AL,13             ; это ENTER?
   JE    EnterStop         ; да - выходим!
   CMP   AL,' '
   JE    EnterStop
   AND   AX,0Fh            ; переводим символ в цифру
   XCHG  AX,DI             ; меняем последнее и ранее/введёное число
   MOV   BX,10             ; умножаем ранее введеное число на 10
   XOR   DX,DX             ; взводим флаги нуля и чётности
   MUL   BX                ; делим AX на BX. Результат в АХ
   ADD   DI,AX             ; прибавляем его к DI. Теперь в DI введёное число
   JMP   NextNumber        ; следующий символ..
EnterStop:
RET
Нашедшего выход - затаптывают первым..
R71MT вне форума Ответить с цитированием
Старый 24.12.2015, 17:52   #17
Екатерина57
Пользователь
 
Регистрация: 11.10.2015
Сообщений: 63
По умолчанию

Спасибо огромное,я вам очень благодарна

блин,а код подходит только к Fasm,пыталась в Dos Box открыть выдает 55 ошибок??

Последний раз редактировалось Stilet; 24.12.2015 в 21:57.
Екатерина57 вне форума Ответить с цитированием
Старый 24.12.2015, 20:50   #18
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Код и поста №16 вроде жеж под ДОС заточен? :confised:
а какие ошибки, и что у тебя за компилятор? Турбоассемблер?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 24.12.2015, 21:33   #19
Екатерина57
Пользователь
 
Регистрация: 11.10.2015
Сообщений: 63
По умолчанию

Вот,что выдает
k.jpg
Екатерина57 вне форума Ответить с цитированием
Старый 24.12.2015, 21:49   #20
R71MT
Участник клуба
 
Аватар для R71MT
 
Регистрация: 16.06.2011
Сообщений: 1,428
По умолчанию

Екатерина57, ты чем собираеш исходник? Компилятор какой? MASM, TASM, NASM, FASM и т.д.? Вот тебе исполняемый файл.. Запусти под DOS-BOX..
Вложения
Тип файла: zip NEGATIVE.ZIP (405 байт, 9 просмотров)
Нашедшего выход - затаптывают первым..

Последний раз редактировалось R71MT; 24.12.2015 в 21:51.
R71MT вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
составить программу для нахождения наибольшего общего и наименьшего общего кратного двух натуральных чисел НОК(A,B)=A*B/НОД(A,B) sisaw Помощь студентам 0 06.05.2014 20:36
Дан массив из n целых чисел. Нужно написать программу определяющую каких элементов больше положительных или отрицательных koshakk Паскаль, Turbo Pascal, PascalABC.NET 1 17.12.2013 20:55
Написать функцию для нахождения наибольшего числа(Dev C++) scafandr Помощь студентам 6 22.05.2013 13:01
вставить процедуру нахождения наибольшего из двух чисел в программу kristja)) Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 0 17.12.2010 12:18
Помогите написать программу нахождения углов треугольника на Delphi _Andruha_ Помощь студентам 3 10.11.2010 09:17