Друзья! Мы с другом пытаемся решить детскую задачу. Смысл ее: Haйти сколько в массиве чисел больше 12h и меньше 0Afh. Массив байт. мы пытались написать так: Код (Text): data segment count dw 0 mass db 151,200,3,48,250,6,170,81,9,10 data ends code segment assume cs: code, ds: data laba3: mov ax, data mov ds, ax ; Загрузить сегментный адрес данных lea bx, mass ; Загрузить адрес смещения массива mov cx, 10 ; Установить счетчик повторений цикла mov ax,18 mov dx,175 cycl: cmp [bx],ax jg exx jmp exx3 exx: cmp [bx],dx jl exx1 jmp exx3 exx1: inc count exx3: inc bx Loop cycl mov ax,count quit: mov ax,4C00h ; Код завершения 0 int 21h ; Выход в DOS code ends end laba3 Но почемуто он не считает в count и всегда выдает 0. Где наша ошибка? Компилятор Tasm/Tlink
Переделали вот так и все равно в АХ-0000 -??. Вот так (: Код (Text): data segment count dw 0 mass db 151,200,3,48,250,6,170,81,9,10 data ends code segment assume cs: code, ds: data laba3: mov ax, data mov ds, ax ; Загрузить сегментный адрес данных lea bx, mass ; Загрузить адрес смещения массива mov cx, 10 ; Установить счетчик повторений цикла mov al,18 mov dl,175 cycl: cmp [bx],al jg exx jle exx3 exx: cmp [bx],dl jl exx1 jbe exx3 exx1: inc count exx3: inc bx Loop cycl mov ax,count quit: mov ax,4C00h ; Код завершения 0 int 21h ; Выход в DOS code ends end laba3 ;Haйти сколько в массиве чисел больше 12h и меньше 0Afh. Массив байт.
Код (Text): org 100h start: mov si, mass ; в SI указатель на адрес массива mov cx, MASS_LEN+1 ; в CX длина массива плюс один (что бы обработался весь массив, в том числе и последний его элемент) gogogo: dec cx ; уменьшаем счетчик test cx, cx ; если ноль, то значит обработали весь массив jz finish ; и на выход lodsb ; в al текущий элемент массива cmp al, 12h ; 18d ja @f jmp gogogo @@: ; тут всякие сравнения и прыжки :) cmp al, 0AFh ; 175d jna @f jmp gogogo @@: inc bx ; если элемент удовлетворяет требованиям, то увеличиваем BX jmp gogogo finish: ; итого - в BX число элементов, удовлетворяющих условиям int 20h mass db 151d,200d,3d,48d,250d,6d,170d,81d,9d,10d MASS_LEN = $ - mass Вроде должно работать - Olly походу *.com файлы не отлаживает - поэтому толком проверить не могу.
_qwerty_ Болььшое тебе спасибо но вот одна загвоздка если вот такой вот код увидет ПРЕПОД которому ЭТО сдавать то он меня грохнет а так собствеенно еще раз спасибо!!!
что бы такое сказать.. кроме банального "пацтулом"? по теме: замени jg -> ja jl -> jb jle и jbe(котрый там не к месту) на jmp что-то я срау не заметил
Nouzui ну хоть "пацтулом" хоть под чем угодно но дали методичку и сказали вот вам енто манускрипт и должны вы все сделать вообщем проблемы индейцев препода не волнууууют вот так так что как могем так и сражаемся БААЛЬЬШОЕ СПАСИБО Nouzui вроде заработало а в чем ошибка была? объясни не разумному???