Или он или мы:(

Тема в разделе "WASM.BEGINNERS", создана пользователем Red_byte, 24 фев 2007.

  1. Red_byte

    Red_byte New Member

    Публикаций:
    0
    Регистрация:
    22 сен 2006
    Сообщения:
    10
    Друзья! Мы с другом пытаемся решить детскую задачу. Смысл ее:
    Haйти сколько в массиве чисел больше 12h и меньше 0Afh. Массив байт.
    мы пытались написать так:
    Код (Text):
    1. data segment
    2.      count dw 0
    3.      mass db 151,200,3,48,250,6,170,81,9,10
    4. data ends
    5.  
    6. code segment
    7.            assume cs: code, ds: data
    8.            laba3:
    9.                 mov ax, data
    10.                 mov ds, ax      ; Загрузить сегментный адрес данных
    11.                 lea bx, mass        ; Загрузить адрес смещения массива
    12.         mov cx, 10      ; Установить счетчик повторений цикла
    13.         mov ax,18
    14.         mov dx,175
    15.  
    16. cycl:
    17.         cmp [bx],ax
    18.         jg  exx
    19.         jmp exx3
    20. exx:
    21.         cmp [bx],dx
    22.         jl  exx1
    23.         jmp exx3
    24. exx1:
    25.         inc count
    26.  
    27. exx3:
    28.     inc bx 
    29. Loop    cycl   
    30.  
    31. mov ax,count
    32.            quit:    mov ax,4C00h    ; Код завершения 0
    33.        int 21h      ; Выход в DOS
    34. code ends
    35.            end laba3
    Но почемуто он не считает в count и всегда выдает 0. Где наша ошибка? Компилятор Tasm/Tlink
     
  2. rain

    rain New Member

    Публикаций:
    0
    Регистрация:
    22 апр 2006
    Сообщения:
    976
    вопросы о лабораторных в отдельном трэде
     
  3. RamMerLabs

    RamMerLabs Well-Known Member

    Публикаций:
    0
    Регистрация:
    11 сен 2006
    Сообщения:
    1.426
    При чём это?
     
  4. Nouzui

    Nouzui New Member

    Публикаций:
    0
    Регистрация:
    17 ноя 2006
    Сообщения:
    856
    Код (Text):
    1. cmp [bx],ax
     
  5. Red_byte

    Red_byte New Member

    Публикаций:
    0
    Регистрация:
    22 сен 2006
    Сообщения:
    10
    При том что или asm нас или мы asm. 4-е сутки над задачей бъемся (((!!!
     
  6. Red_byte

    Red_byte New Member

    Публикаций:
    0
    Регистрация:
    22 сен 2006
    Сообщения:
    10
    Nouzui
    что этим хочешь сказать ???
     
  7. Nouzui

    Nouzui New Member

    Публикаций:
    0
    Регистрация:
    17 ноя 2006
    Сообщения:
    856
    cmp [bx],al
    и с dx то же самое
     
  8. Red_byte

    Red_byte New Member

    Публикаций:
    0
    Регистрация:
    22 сен 2006
    Сообщения:
    10
    Переделали вот так и все равно в АХ-0000 -??. Вот так (:
    Код (Text):
    1. data segment
    2.      count dw 0
    3.      mass db 151,200,3,48,250,6,170,81,9,10
    4. data ends
    5.  
    6. code segment
    7.            assume cs: code, ds: data
    8.            laba3:
    9.                 mov ax, data
    10.                 mov ds, ax      ; Загрузить сегментный адрес данных
    11.                 lea bx, mass        ; Загрузить адрес смещения массива
    12.         mov cx, 10      ; Установить счетчик повторений цикла
    13.         mov al,18
    14.         mov dl,175
    15.  
    16. cycl:
    17.         cmp [bx],al
    18.         jg  exx
    19.         jle exx3
    20. exx:
    21.         cmp [bx],dl
    22.         jl  exx1
    23.         jbe exx3
    24. exx1:
    25.         inc count
    26.  
    27. exx3:
    28.     inc bx 
    29. Loop    cycl   
    30.  
    31. mov ax,count
    32.            quit:    mov ax,4C00h    ; Код завершения 0
    33.        int 21h      ; Выход в DOS
    34. code ends
    35.            end laba3
    36. ;Haйти сколько в массиве чисел больше 12h и меньше 0Afh. Массив байт.
     
  9. _qwerty_

    _qwerty_ New Member

    Публикаций:
    0
    Регистрация:
    24 фев 2007
    Сообщения:
    17
    Код (Text):
    1. org 100h
    2. start:
    3.     mov     si, mass        ; в SI указатель на адрес массива
    4.     mov     cx, MASS_LEN+1  ; в CX длина массива плюс один (что бы обработался весь массив, в том числе и последний его элемент)
    5. gogogo:
    6.     dec     cx          ; уменьшаем счетчик
    7.     test        cx, cx      ; если ноль, то значит обработали весь массив
    8.     jz      finish      ; и на выход
    9.     lodsb               ; в al текущий элемент массива
    10.     cmp     al, 12h ; 18d
    11.     ja      @f
    12.     jmp     gogogo
    13. @@:                             ; тут всякие сравнения и прыжки :)
    14.     cmp     al, 0AFh    ; 175d
    15.     jna     @f
    16.     jmp     gogogo
    17. @@:
    18.     inc     bx              ; если элемент удовлетворяет требованиям, то увеличиваем BX
    19.     jmp     gogogo
    20. finish:
    21.  
    22.     ; итого - в BX число элементов, удовлетворяющих условиям
    23.  
    24.     int     20h
    25.  
    26. mass        db  151d,200d,3d,48d,250d,6d,170d,81d,9d,10d
    27. MASS_LEN    =   $ - mass
    Вроде должно работать - Olly походу *.com файлы не отлаживает - поэтому толком проверить не могу.
     
  10. Red_byte

    Red_byte New Member

    Публикаций:
    0
    Регистрация:
    22 сен 2006
    Сообщения:
    10
    _qwerty_
    Болььшое тебе спасибо но вот одна загвоздка если вот такой вот код увидет ПРЕПОД которому ЭТО сдавать то он меня грохнет ;) а так собствеенно еще раз спасибо!!!
     
  11. wasm_test

    wasm_test wasm test user

    Публикаций:
    0
    Регистрация:
    24 ноя 2006
    Сообщения:
    5.582
    offtop
    Red_byte
    это ты?
     
  12. Red_byte

    Red_byte New Member

    Публикаций:
    0
    Регистрация:
    22 сен 2006
    Сообщения:
    10
    Great
    а ты кто?
     
  13. asmfan

    asmfan New Member

    Публикаций:
    0
    Регистрация:
    10 июл 2006
    Сообщения:
    1.004
    Адрес:
    Abaddon
    так встретились студент и преподаватель...
     
  14. Nouzui

    Nouzui New Member

    Публикаций:
    0
    Регистрация:
    17 ноя 2006
    Сообщения:
    856
    что бы такое сказать.. кроме банального "пацтулом"?

    по теме:
    замени jg -> ja
    jl -> jb
    jle и jbe(котрый там не к месту) на jmp
    что-то я срау не заметил
     
  15. Red_byte

    Red_byte New Member

    Публикаций:
    0
    Регистрация:
    22 сен 2006
    Сообщения:
    10
    Nouzui
    ну хоть "пацтулом" хоть под чем угодно но дали методичку и сказали вот вам енто манускрипт и должны вы все сделать вообщем проблемы индейцев препода не волнууууют вот так так что как могем так и сражаемся

    БААЛЬЬШОЕ СПАСИБО Nouzui
    вроде заработало а в чем ошибка была? объясни не разумному???