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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 15.05.2008, 21:25   #1
Almost_Famous
Пользователь
 
Регистрация: 28.02.2008
Сообщений: 13
По умолчанию Вопросик по циклу

Помогите пожалуйста с задачей, а то что вобще голова не варит после вчерашнего футбола,а сдавать завтра!)
Найти и сохранить номер минимальной цифры в числе, считая, что младшая цифра имеет номер 1, и номера увеличиваются в сторону старших цифр.
Вот кое-что попробывал, но что то не очень получилось:
Код:
.MODEL SMALL

;----------Сегмент стека------------
STACKSG SEGMENT PARA STACK 'stack'
        DB      256  DUP(?)  
STACKSG ENDS
;-----------------------------------

;----------Сегмент данных-----------
DATASG  SEGMENT PARA  'data'
KOL     DW    69
REZ     DB     ?
DATASG ENDS
;----------------------------------

;----------Сегмент кода------------
CODESG  SEGMENT PARA 'Code'
        ASSUME  CS:CODESG, DS:DATASG, SS:STACKSG 
MAIN    PROC   FAR

	PUSH    DS          ; Подготовка к
	SUB     AX,AX	    ; возврату в
	PUSH    AX	    ; ОС

	MOV    AX, DATASG  ; Настраиваем DS на
	MOV    DS,AX	    ; сегмент данных

mov ax, kol ; наше число     
     
mov bl, 10  ; делитель     
     
div     bl     
               ; al - частное      
               ; ah - остаток     
       cmp     al,ah     
   
jb      below  ; условный оператор прыжка (X<Y)  
     
 MOV rez, 1   ; если al>ah  (вторая цифра числа больше первой)
jmp     exit        
below:       
     
mov rez, 2   ; если al<ah  (вторая цифра числа меньше первой)
exit:  
	
 
	RET             ; Завершение работы
MAIN    ENDP
CODESG  ENDS
        END    MAIN
Заранее спасибо!!!
Almost_Famous вне форума Ответить с цитированием
Старый 15.05.2008, 21:45   #2
alexBlack
Участник клуба
 
Регистрация: 12.10.2007
Сообщений: 1,204
По умолчанию

Чисел м.б. больше двух. Нужно использовать цикл.

Код:
DATASG  SEGMENT PARA  'data'  
KOL     DW    35169  
REZ     DB     ?   
MIN     DB     255
DATASG ENDS   

...

    xor cx, cx
    mov ax, kol ; наше число        
    xor dx, dx

  @@loop:
    inc cl      ; счетчик разрядок
    mov bx, 10  ; делитель        
    div bx        
                ; ax - частное         
                ; dx - остаток        
    cmp dl, min
    jae abowe
    mov min, dl ; новый минимум
    mov rez, cl ; номер разряда
  abowe:          
    xor dx, dx
    cmp ax, 0
    jnz @@loop
alexBlack вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вопросик про ООП!!! R@mec Общие вопросы C/C++ 2 22.08.2008 13:38
Вопрос по циклу Crivel Общие вопросы Delphi 1 13.08.2008 15:11
вопросик по оформлению shmelvs Microsoft Office Excel 3 24.07.2008 11:10