IPB
ЛогинПароль:

> ПРАВИЛА РАЗДЕЛА!!!

1. Заголовок или название темы должно быть информативным
2. Все тексты программ должны помещаться в теги [CODE=asm] [/CODE]
3. Прежде чем задавать вопрос, см. "FAQ",если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно, такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Ассемблера. Исключение только с согласия модератора.
5. НЕ используйте форум для личного общения! Все, что не относиться к обсуждению темы - на PM!
6. Проверяйте программы перед тем, как выложить их на форум!!

> 2 не очень сложных задачи
сообщение
Сообщение #1


Гость






Помогите пожалуйста с двумя задачками:

1) Дан массив из 10 элементов. Вычислить разность между максимальным и
минимальным элементами (используйте адресацию по базе).

2) Дан массив P[0..k]. Определить сколько элементов удовлетворяют
неравенству A<P[i]<B (используйте косвенную регистровую адресацию).
Я ее частчно сделал:
stac segment stack 'stack'
db 128 dup ('st')
stac ends

dan segment
mass db 24,41,27,38,64,65,7,21,47,3
nmass db 10 dup(?)
A db 8,42
dan ends

cd segment
assume cs: cd, ds: dan, ss: stac

  start proc far
push ds
sub ax,ax
push ax
mov ax, dan
mov ds,ax
mov ah, 0
      mov cx, 10
      mov bx, offset mass
      mov di, offset nmass
      mov si, offset a

begin: mov al, [bx]
       cmp al, [si]
       jg cxz
       jl s
cxz:    cmp al, [si+1]
       jl  xz
       jmp s
xz: inc ah
    s:  inc bx
loop begin
mov [di],ah
ret
start endp
cd ends
end start
осталось самое сложное:
Ввода с клавиатуры исходных данных и вывода на экран исходных и конечных данных.
Очистить экран и вывести результат в рамке красного цвета Поменять цвет рамки через 5 сек.
Помогите, пожалуйста...
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
сообщение
Сообщение #2


Гость






Вообщем такое дело, я привел решение только второй задачи, возможно там
есть что то лишнее smile.gif.
По поводу вопроса:
такое дело: лекции нам по ассемблеру не читали, дали только методички и
поставили лабы, типа на практике все и поймете...
Отвечаю на вопрос (я буду цитировать из методы):

push ds - При запуске exe-программы регистр DS указывает на ее
заголовок, считанной в память. Поэтому если тело программы описывается как
процедура, то первой командой программы должна быть PUSH DS, которая
сохраняет в стеке начальное значение DS.

ret - Выход из программы, описанной как дальняя процедура, осуществляется
с помощью команды RETN или RET (типа конец процедуры).

push ax - поместить в стек нулевое смещение адреса возврата.

sub ax,ax - возможно - это то же лишнее.
 К началу страницы 
+ Ответить 

Сообщений в этой теме


 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 10.05.2024 17:48
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name