|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
17.09.2009, 18:47 | #1 |
Участник клуба
Регистрация: 15.05.2009
Сообщений: 1,222
|
Поиск минимума в массиве.
Написала программу нахождения минимума. Главное условие, должен использоваться способ адресация по базе со смещением. Посмотрите пожалуйста то ли я делаю. И как вывести полученный результат? Зарание спасибо
.model tiny .code org 100h main: xor ax,ax xor bx,bx mov bx,offset arr mov ax,word ptr arr[bx] ;занесли первый элеменент, на регистр, ax=min mov cx,4 ;так как первый элемент уже обработан количество повторений=n-1 cyc: mov bx,[bx+2] ;переходим на следующий эелемент cmp word ptr arr[bx],ax ;сравниваем текущее значение с min, word ptr используется так как нам нужен не 1 байт а 2 jl min ;если bx<min переходим на min min: mov ax,bx loop cyc int 21h ret arr dw 2,4,5,1,6 end main
Единственное, что ограничивает полет мысли программиста-компилятор
|
17.09.2009, 18:55 | #2 |
Форумчанин
Регистрация: 05.12.2007
Сообщений: 236
|
Код:
jl min loop cyc min: mov ax,bx loop cyc |
17.09.2009, 19:01 | #3 |
Участник клуба
Регистрация: 15.05.2009
Сообщений: 1,222
|
да поняла косяк. ну как вывести значение?
Единственное, что ограничивает полет мысли программиста-компилятор
Последний раз редактировалось Sparky; 17.09.2009 в 19:06. |
17.09.2009, 19:06 | #4 |
equ asm
Участник клуба
Регистрация: 02.05.2009
Сообщений: 1,605
|
Может так.
Код:
Какой вопрос - такой ответ. Не забываем пользоваться поиском, гуглом.
Помощь в выполнении работ по ассемблеру ICQ:2725322O4 Последний раз редактировалось Goodwin98; 17.09.2009 в 19:09. |
17.09.2009, 19:08 | #5 |
Участник клуба
Регистрация: 15.05.2009
Сообщений: 1,222
|
а через bx нельзя? а ваш код подойдет под условия? и почему mov cx,4 ;так как первый элемент уже обработан количество повторений=n-1, там разве не +2 будет?
Вот так можно? .model tiny .code org 100h main: xor ax,ax xor bx,bx mov bx,offset arr mov ax,word ptr arr[bx] ;занесли первый элеменент, на регистр, ax=min mov cx,4 ;так как первый элемент уже обработан количество повторений=n-1 cyc: mov bx,[bx+2] ;переходим на следующий элемент cmp word ptr arr[bx],ax ;сравниваем текущее значение с min, word ptr используется так как нам нужен не 1 байт а 2 jng no ;если bx>=min переходим на no mov ax,word ptr arr[bx] loop cyc int 21h ret no: loop cyc arr dw 2,4,5,1,6 end main
Единственное, что ограничивает полет мысли программиста-компилятор
Последний раз редактировалось Sparky; 17.09.2009 в 19:15. |
17.09.2009, 19:18 | #6 | ||
equ asm
Участник клуба
Регистрация: 02.05.2009
Сообщений: 1,605
|
Цитата:
В bx - база, а в si - смещение. Цитата:
|
||
17.09.2009, 19:18 | #7 |
Участник клуба
Регистрация: 15.05.2009
Сообщений: 1,222
|
Прости ступила, не туда посмотрела Спасибо, но вот как вывести это значение?
Единственное, что ограничивает полет мысли программиста-компилятор
|
17.09.2009, 19:27 | #8 |
equ asm
Участник клуба
Регистрация: 02.05.2009
Сообщений: 1,605
|
Покуда числа меньше 10, то можно обойтись.
Код:
Код:
|
17.09.2009, 19:28 | #9 |
Участник клуба
Регистрация: 15.05.2009
Сообщений: 1,222
|
org 100h
main: xor ax,ax xor si,si mov bx,offset arr mov ax,word ptr [bx] ;занесли первый элеменент, на регистр, ax=min mov cx,4 ;так как первый элемент уже обработан количество повторений=n-1 cyc: add si,2 ;переходим на следующий эелемент cmp word ptr [bx+si],ax ;сравниваем текущее значение с min, word ptr используется так как нам нужен не 1 байт а 2 jnl skeep ;если элемент >= min переходим на skeep mov ax,[bx+si] skeep: loop cyc cmp ax,0 je mes jnl mes2 ;int 20h ;ret mes: mov ah,9 mov dx,offset yes int 21h ret mes2: mov ah,9 mov dx,offset no int 21h ret no: db 'no',0ah,0dh,'$' yes: db 'yes',0ah,0dh,'$' arr dw 2,4,5,1,6 end main вот так я ее оттестила, работает верно, но вот второй вопрос остался открытым
Единственное, что ограничивает полет мысли программиста-компилятор
|
17.09.2009, 19:29 | #10 |
Участник клуба
Регистрация: 15.05.2009
Сообщений: 1,222
|
а что значат @?
add al,30h ; делаем из числа символ mov dl,al mov ah,2 int 21h ; выводим его на экран вот этот вариант я видела, пробовала даже но пишет ошибку приведения типов Хотя теперь работает
Единственное, что ограничивает полет мысли программиста-компилятор
Последний раз редактировалось Sparky; 17.09.2009 в 19:32. |
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Поиск в массиве | ADSoft | PHP | 1 | 07.08.2009 11:17 |
Програма на Pascal: нахождение минимума с помощью процедуры в 2мерном массиве. Нужна помощь. | Lopirion | Помощь студентам | 2 | 28.12.2008 21:23 |
Нахождение минимума и максимума в трехмерном массиве | 1234 | Помощь студентам | 11 | 26.05.2008 16:23 |
Поиск минимума | Иринкаа | Помощь студентам | 1 | 19.11.2007 22:00 |
Задача на поиск минимума | Stan | Паскаль, Turbo Pascal, PascalABC.NET | 3 | 25.06.2007 19:23 |