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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 23.04.2013, 07:52   #1
neomax38
Пользователь
 
Регистрация: 17.09.2010
Сообщений: 72
По умолчанию Assembler FASM

Задание в коде)
Проблема с первым заданием...
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
neomax38 вне форума Ответить с цитированием
Старый 30.04.2013, 19:17   #2
neomax38
Пользователь
 
Регистрация: 17.09.2010
Сообщений: 72
По умолчанию

Никто не может помочь?
neomax38 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Синхронизация каталогов (Assembler, FASM) rolex123 Помощь студентам 1 22.04.2012 18:21
Чем отличаеться fasm от fasm editor&? TotKtoNado Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 5 07.11.2011 17:00
создание ОС на FASM vova65 Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 1 29.09.2011 22:57
FASM + RegCreateKeyEx WebbMan Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 6 01.08.2011 15:27
FASM (assembler). Удалить пробелы в начале и в конце строки Zart Помощь студентам 4 23.04.2011 21:18