Автор Тема: Массивы в FASM  (Прочитано 5046 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Ruslan11

  • Коллежский регистратор
  • *
  • Сообщений: 14
  • Репутация: 0
Массивы в FASM
« : јРЩ 26, 2009, 09:06:55 pm »
 Кто нибудь, подскажите, как узнать значение элемента одномерного массива?
пробовал
Код: (asm) [Выделить]
mov [mas+1],'2$'а потом:
Код: (asm) [Выделить]
lea dx, [mas+1] int 21hи в результате вывело значение всех элементов массива :suicide:
« Последнее редактирование: јРЩ 26, 2009, 09:27:20 pm от Ruslan11 »

Оффлайн Veliant

  • Надворный советник
  • *****
  • Сообщений: 331
  • Репутация: 7
  • Пол: Мужской
Re: Массивы в FASM
« Ответ #1 : јРЩ 26, 2009, 09:36:27 pm »
как понимаю ты хочешь чтоб он вывел первый символ массива а затем 2$ ?
'2$' преобразуется в число с обратным порядком байт, поэтому если хочешь записать 2$ пиши $2
Помощь в программировани и различные статьи
http://libcoder.blogspot.com/

Оффлайн Ruslan11

  • Коллежский регистратор
  • *
  • Сообщений: 14
  • Репутация: 0
Re: Массивы в FASM
« Ответ #2 : јРЩ 26, 2009, 09:45:43 pm »
как понимаю ты хочешь чтоб он вывел первый символ массива а затем 2$ ?
'2$' преобразуется в число с обратным порядком байт, поэтому если хочешь записать 2$ пиши $2

нет, я просто хочу получить значение второго элемента, а оно выводит весь массив.
Код: (asm) [Выделить]
mov [mas+1],'2$'
mov [mas+2],'3$'
mov ah,9       
               
lea dx,[mas+1] 
int 21h
         

в результате 23, хотя я хочу только 2.
« Последнее редактирование: јРЩ 26, 2009, 09:50:36 pm от Ruslan11 »

Оффлайн Veliant

  • Надворный советник
  • *****
  • Сообщений: 331
  • Репутация: 7
  • Пол: Мужской
Re: Массивы в FASM
« Ответ #3 : јРЩ 26, 2009, 10:32:19 pm »
если массив из печатных символов то проще
Код: (asm) [Выделить]
mov al,byte[mas+2]
mov ah,0x0e
int 0x10
Помощь в программировани и различные статьи
http://libcoder.blogspot.com/

Оффлайн Ruslan11

  • Коллежский регистратор
  • *
  • Сообщений: 14
  • Репутация: 0
Re: Массивы в FASM
« Ответ #4 : јРЩ 26, 2009, 10:52:31 pm »
Ладно, тогда вопрос, где в этом коде ошибка:
Код: (asm) [Выделить]
        org 100h
        use16

mov  AX,12h
int  10h

mov [ex+0],23
mov [ey+0],15
mov [ex2+0],625
mov [ey2+0],20
mov ah,[gray]
mov [elc+0],ah
mov [index],0
mov [indexc],0
call viz
mov ah,0
int 16h
int 20h

viz:
mov ah, 0ch
movsx si,[indexc]
mov al, [elc+si]
mov si,[index]
lea di, [ex2+si]
lea DX, [ey+si]
lea CX, [ex+si]
lea si, [ey2+si]
call rect
ret

        rect:

        inc CX

        push si
        push DX

        call hline
        pop DX
        pop si

        dec di
        cmp di,0
        jne rect
        ret
        hline:
        inc DX
        int 10h

        dec si
        cmp si,0
        jne hline

        ret

ex dw 20 dup(0)
ey  dw 20 dup(0)
ex2 dw 20 dup(0)
ey2 dw 20 dup(0)
index  dw 1
indexc  db 1
elc  db 20 dup(0)

blue2 db 1
green db 2
blue db 3
red db 4
pink db 5
broun db 6
gray db 7
Функция rect риисует сама по себе, а так не рисует, насколько я понял проблема в массиве?
« Последнее редактирование: јРЩ 27, 2009, 12:07:45 am от Ruslan11 »

Оффлайн Veliant

  • Надворный советник
  • *****
  • Сообщений: 331
  • Репутация: 7
  • Пол: Мужской
Re: Массивы в FASM
« Ответ #5 : јРЩ 27, 2009, 08:13:41 am »
Ты передаешь адреса начала массива а не сами значения, поэтому переделай так
Код: (asm) [Выделить]
mov di, word[ex2+si]
mov DX, word[ey+si]
mov CX, word[ex+si]
mov si, word[ey2+si]
Помощь в программировани и различные статьи
http://libcoder.blogspot.com/

Оффлайн Ruslan11

  • Коллежский регистратор
  • *
  • Сообщений: 14
  • Репутация: 0
Re: Массивы в FASM
« Ответ #6 : јРЩ 27, 2009, 12:00:05 pm »
теперь рисует, только не на тех координатах что я задаю :sad:

Оффлайн Ruslan11

  • Коллежский регистратор
  • *
  • Сообщений: 14
  • Репутация: 0
Re: Массивы в FASM
« Ответ #7 : °ТУгбв 01, 2009, 01:04:40 pm »
всё, разобрался.