Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Изменяющееся слово при заданном кол-ве, FASM 
:(
    Опции темы
neomax38
Дата 28.4.2013, 09:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 27
Регистрация: 15.12.2010

Репутация: нет
Всего: нет



Задание в коде) 
Проблема с первым заданием...
1-диск
2-4-диска
5-20-дисков
21 и так далее уже повторяется. Не знаю как сделать Помогите=) 

Код

include 'minilib.inc'

.data
minilib_data

select_task db 'Выберите задание:', 0xA, \
  '1. Для целого 1<=K<=99 напечатать фразу: "У меня есть К дисков." (с возможными ', 0xA, \
  'изменениями последнего слова', 0xA, \
  '2. В векторе А[10] определить количество элементов, значения которых кратны', 0xA, \
  'заданной положительной величине С.', 0xA, \
  'Ваш выбор [1/2]: ', 0

bad_value db '[!!] Неверное значение.', 0xA, 0
input_k db 'Введите значение K: ', 0
input_c db 'Введите значение C: ', 0
input_element db 'Введите элемент ', 0

result db 'У меня есть ' , 0 
result2 db ' диск' , 0
result3 db ' диска' , 0
result4 db ' дисков' , 0
 
result_p db 'Кол-во элементов кратных C: ', 0
k dd ?
c dd ?
m rd 10
result1 dd ?
.code
startup
main:
select_task_loop:
print_string select_task
scan_uint
    cmp   eax, 1
    je    task1
    cmp   eax, 2
    je    task2
print_string bad_value
    jmp   select_task_loop

task1:
print_string input_k
scan_int
    mov   [k], eax
    cmp   eax, 1
    jle   output1
    cmp   eax, 2
    cmp   eax, 4
    jle   output2
    cmp   eax, 5
    cmp   eax, 99
    jle   output3
    
    jle   output1
    print_string bad_value
    jmp   select_task_loop
output1:
    mov   [result1], eax
print_string result
print_int [result1]
print_string result2
print_nl
    jmp   finish
    
output2:
    mov   [result1], eax
print_string result
print_int [result1]
print_string result3
print_nl
    jmp   finish
    
output3:
    mov   [result1], eax
print_string result
print_int [result1]
print_string result4
print_nl
    jmp   finish
    

task2:
    xor   ebx, ebx
    xor   edi, edi
    ;Ввод C    
    print_string input_c
    scan_uint 
    mov [c], eax
    
input_loop:
print_string input_element
print_int ebx
print_char ' '
scan_int
    
    mov   [m+ebx*4], eax
    inc   ebx
    cmp   ebx, 10
    jl    input_loop

    xor   esi, esi
    mov   ecx, 9
    ;Ввод элементов массива
scan_loop:
    xor   edx, edx
    mov   eax, [m+ecx*4]
    cdq 
    idiv [c]
    test edx, edx
;    cmp edx, 0
    je    ok
    jmp   scan_loop_end

ok:
;счетчик элементов, удовлетворющих условию
    inc   edi
scan_loop_end:
    dec   ecx
    jge   scan_loop
print_string result_p
print_int edi
print_nl
finish:
exit


.end start

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Asm для начинающих"
MAKCim
  • Проставьте несколько ключевых слов темы, чтобы её можно было легче найти.
  • Не забывайте пользоваться кнопкой КОД.
  • Телепатов на форуме нет! Задавайте чёткий, конкретный и полный вопрос. Указывайте полностью ошибки компилятора и компоновщика.
  • Новое сообщение должно иметь прямое отношение к разделу форума. Флуд, флейм, оффтопик запрещены.
  • Категорически запрещается обсуждение вареза, "кряков", взлома программ и т.д.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, MAKCim.

 
 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Asm для начинающих | Следующая тема »


 




[ Время генерации скрипта: 0.0593 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.