![]() |
1. Заголовок или название темы должно быть информативным
2. Все тексты программ должны помещаться в теги [CODE=asm] [/CODE]
3. Прежде чем задавать вопрос, см. "FAQ",если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно, такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Ассемблера. Исключение только с согласия модератора.
5. НЕ используйте форум для личного общения! Все, что не относиться к обсуждению темы - на PM!
6. Проверяйте программы перед тем, как выложить их на форум!!
![]() |
brut_ |
![]() ![]()
Сообщение
#1
|
Гость ![]() |
Помогите пожалуйста с двумя задачками:
1) Дан массив из 10 элементов. Вычислить разность между максимальным и минимальным элементами (используйте адресацию по базе). 2) Дан массив P[0..k]. Определить сколько элементов удовлетворяют неравенству A<P[i]<B (используйте косвенную регистровую адресацию). Я ее частчно сделал: stac segment stack 'stack'осталось самое сложное: Ввода с клавиатуры исходных данных и вывода на экран исходных и конечных данных. Очистить экран и вывести результат в рамке красного цвета Поменять цвет рамки через 5 сек. Помогите, пожалуйста... |
![]() ![]() |
Dark |
![]()
Сообщение
#2
|
![]() Знаток ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 408 Пол: Мужской Репутация: ![]() ![]() ![]() |
Итак, решенная [без наворотов типа рамки] задача
Код Мне пришлось сделать кое какое преобразование, для вводимых строк =) так как нам нужны числа [байт!], то 1. Читаем до нажатия Enter в буфер 2. Если счетчик символов в буфере больше трех - неправильный ввод 3. Если какой из символов не от 0 до 9 - неправильный ввод 4. Переводим в число, в байт. Возможный баг - ввод числа непомещающегося в байт. Эту проверку я писать не буду =) 1. Читаем до нажатия Enter в буфер - буфер на 3 символа [Этим решается проблема 2] - используется функция MSDOS 0A Формат буфера: 1й байт - сколько максимум символов читать [с учетом Enter] 2й байт - сколько символов введено [Без учета Enter] от 3го байта - строка символов не больше 254 байт, с завершающим 0D [Enter] buf struc lenbuf db 4 len db 0 buf_in db 4 dup(?) ends В Data объявляем: simv bufs <> В программе считываем символ: lea dx,simv mov ah,0Ah int 21h Все =) 2. Проблема решена на стадии планирования 1. 3. Если какой из символов не от 0 до 9 - неправильный ввод lea si,simv+2 xor cx,cx mov cl,[bx-1] Check: cmp byte ptr [si],30h jl @break cmp byte ptr [si],39h jq @break inc si loop Check 4. Переводим в число, в байт. lea si,simv+2 xor cx,cx mov cl,[si-1] mov ax,[si] ;домножаем на 100 shl ax,1 ;ax=ax*4 mov [bx],ax shl ax,4 ;ax=ax*16 add [bx],ax shl ax,1 ;ax=ax*2 add [bx],ax inc si mov ax,[si] ;домножаем на 10 shl ax,1 ;ax=ax*2 add [bx],ax shl ax,2 ;ax=ax*8 add [bx],ax mov ax,[si+1] ;прибавляем остаток add [bx],ax -------------------- - Где я?
- Во тьме. - В какой тьме? - Во тьме твоего мозга. |
![]() ![]() |
![]() |
Текстовая версия | 28.07.2025 8:21 |