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

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

Вернуться   Форум программистов > Низкоуровневое программирование > Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 10.09.2014, 21:48   #1
Valush
 
Регистрация: 10.09.2014
Сообщений: 5
По умолчанию В место min показывает значение max

Помогите)
В место min показывает значение max)
как исправить)
Код:
.286
.model  small
.386
.data
dos_inp macro   lbl, sz
_ib_    struc  
max db  sz      ; наибольшая длина строки
len db  ?               ; сюда вернется настоящая длина
bf  db  sz dup(?)   ; тут будет то, что ввели
_ib_    ends            
lbl _ib_ <>
endm
 
 
req db  13,10,'Please enter you string: $'
cmax    db  13,10,'The Maximum is: " "'
pmax    =   $ - 2
cmin    db 13,10,'The Minimum is: " "$'
pmin    =   $ - 3
dos_inp buf, 200
 
.stack  100h
.code
start:
    mov ax, @data
    mov ds, ax
;.686
 
        ;------------------------------------
        ;-----------------Приглашение к вводу
    mov ah, 09h
    lea dx, req
    int 21h
        ;-----------------Вводим строку
    mov ah, 0ah
    lea dx, buf
    int 21h
        ;-----------------Готовимся к обработке
    movzx   cx, byte ptr buf.len
    lea si, buf.bf
    mov bx, 0ffh    ; bx- min
    xor dx, dx     ; dx - max
    xor ax, ax
 
@loop:  lodsb
cmp ax, bx
    db 0fh, 42h, 0DAh
    cmp ax, dx
    db  0fh, 47h, 0D0h
    loop    @loop
    mov byte ptr pmax, dl
    mov byte ptr pmin, bl
    lea dx, cmax
    mov ah, 9
    int 21h
    xor ax,ax
    int 16h
        ;------------Выход
    mov ax, 4c00h
    mov al, 0
    int 21h
 
    end start
Valush вне форума Ответить с цитированием
Старый 13.09.2014, 16:43   #2
Valush
 
Регистрация: 10.09.2014
Сообщений: 5
По умолчанию

да помогите кто нибудь(((
Valush вне форума Ответить с цитированием
Старый 13.09.2014, 16:55   #3
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Вау! А эту программу ты сам написал?
Э-э-эм... задача какая? Определить максимум и минимум среди введенных чисел?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 13.09.2014, 17:02   #4
Valush
 
Регистрация: 10.09.2014
Сообщений: 5
По умолчанию

Ввести с клавиатуры строку символов. На новой строке вывести два символа: с максимальным и минимальным ASCII кодом.

Нашел ее) она не работала подправил)начало паказывать но одинаковое значение что в min что в max( и дальше не знаю что делать((

Последний раз редактировалось Stilet; 13.09.2014 в 17:25.
Valush вне форума Ответить с цитированием
Старый 13.09.2014, 17:20   #5
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

небольшая ремарка... про себя.
я лично дошёл до этого участка кода:
Цитата:
Код:
cmp ax, bx
    db 0fh, 42h, 0DAh
    cmp ax, dx
    db  0fh, 47h, 0D0h
и передумал помогать.
Потому как, если автор темы сам такое написал, то его уровень НАМНОГО выше, чем мной, и помочь ему я не смогу,
а если он (что скорее всего) просто где-то нашёл подходящий код,
то он в таком коде не разберётся. К тому же текста задания нет. (на тот момент не было, сейчас появилось).
Serge_Bliznykov вне форума Ответить с цитированием
Старый 13.09.2014, 17:26   #6
Valush
 
Регистрация: 10.09.2014
Сообщений: 5
По умолчанию

cmovb bx,dx это db 0fh, 42h, 0DAh , a cmova dx, ax это db 0Fh, 47h, 0D0h
ТАСМ не знает инструкций условной пересылки(CMOVxxx)
поэтому записал опкодами
Valush вне форума Ответить с цитированием
Старый 13.09.2014, 17:37   #7
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
его уровень НАМНОГО выше, чем мной
Та да. Я потому и спросил что за задача, ибо такое написать и мне бы в голову не пришло.
Я бы решал задачу примерно так:
Код:
 
xor bl,bl                ;Тут будем хранить максимум
a:
 mov     ah, 1        ;Вводим символ
 int     21h             
 cmp     al,0Dh       ;Сравниваем с Энтером
 je b                     ;Если Энтер - выходим
 cmp     al,bl          ;иначе сравниваем с максимумом
 jng a                   ;Если меньше - переходим на следующую итерацию
 mov     bl,al          ;Иначе запоминаем
 jmp a                   ;И принимаем следующий символ
b:
 mov     ah, 4Ch
 int     21h
 ret
P.S. Это только подсказка, тот код полностью твою задачу не решает.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Массивы. Поменять местами все min и max (даже если будет 4 -min и 1-max). Виталик124 Паскаль, Turbo Pascal, PascalABC.NET 6 19.02.2014 22:44
n - массивов, разной размерности, нужно найти min и max в этих массивах. Из полученных min найти наименьший элемент, из max наибол dmks Помощь студентам 5 09.10.2013 20:48
списке целых чисел все элементы между max и min заменить полусуммой max и min Roman one C/C++ Базы данных 0 20.12.2012 12:14
Матрица Min-Max и Max-Min boog Помощь студентам 3 23.12.2010 13:19
min max Alpha_Dog Фриланс 10 15.03.2010 19:27