Поиск:

Ответ в темуСоздание новой темы Создание опроса
> вопрос по двумерному массиву 
:(
    Опции темы
NECsoft
Дата 6.4.2008, 21:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 18
Регистрация: 24.6.2007

Репутация: нет
Всего: нет



здравствуйте немогу понять почему затираються значения в двухмерном массиве, упростил прогу до максимума, а в проблеме так и не разобрался =(

помогите пожалуйста
когда вывожу значения массива на экран то вижу вместо 123456, 145456 =(
вот код...

Код


data segment para 'data'
     lw db 150 dup(12 dup(?))
data ends

code segment para 'code'
assume cs:code,ds:data
main proc
mov ax,data
mov ds,ax

mov bx,0
        ;представление bx*12
        mov ax,bx
        mov dx,12
        mul dx
        mov bx,ax

        mov ah,31h;
        mov lw[bx][0],ah
        mov ah,32h;
        mov lw[bx][1],ah
        mov ah,33h;
        mov lw[bx][2],ah

inc bx
        mov ah,34h;    
        mov lw[bx][0],ah
        mov ah,35h;    
        mov lw[bx][1],ah
        mov ah,36h;    
        mov lw[bx][2],ah

    mov ah,02h
    mov dl,10
    int 21h

mov ah,02h
mov dl,lw[0][0]
int 21h
mov dl,lw[0][1]
int 21h
mov dl,lw[0][2]
int 21h
mov dl,lw[1][0]
int 21h
mov dl,lw[1][1]
int 21h
mov dl,lw[1][2]
int 21h


mov ah,10h
int 16h

mov ah,4ch
int 21h
main endp
code ends
end main
    


PM MAIL   Вверх
dumb
Дата 6.4.2008, 21:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


sceloglauxalbifacies
****


Профиль
Группа: Экс. модератор
Сообщений: 2929
Регистрация: 16.6.2006

Репутация: 7
Всего: 158



Цитата(NECsoft @  6.4.2008,  22:19 Найти цитируемый пост)
inc bx
smile

http://forum.vingrad.ru/index.php?showtopi...t&p=1449476
PM MAIL   Вверх
NECsoft
Дата 6.4.2008, 21:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 18
Регистрация: 24.6.2007

Репутация: нет
Всего: нет



незнаю, inc bx роли не сыграет, даже если представить код в таком виде, всеравно записывает какую то муть...  smile 

Код

        mov ah,31h;
        mov lw[0][0],ah
        mov ah,32h;
        mov lw[0][1],ah
        mov ah,33h;
        mov lw[0][2],ah

        mov ah,34h;    
        mov lw[1][0],ah
        mov ah,35h;    
        mov lw[1][1],ah
        mov ah,36h;    
        mov lw[1][2],ah


Добавлено через 9 минут и 59 секунд
блин, пытался представить bx в виде bx*12 чтобы перейти на следующую "строчку", а надо было просто тупо прибавить - bx+12...

тупо... вопрос снят  smile 

PM MAIL   Вверх
dumb
Дата 6.4.2008, 22:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


sceloglauxalbifacies
****


Профиль
Группа: Экс. модератор
Сообщений: 2929
Регистрация: 16.6.2006

Репутация: 7
Всего: 158



если бы ты внимательно прочитал то, что написано в вышеуказанной ссылке, то понял бы свою ошибку.

ассемблер, в отличие от языков высокого уровня, не имеет "умной" операции индексации по массивам. смещения в массивах задаются в байтах. точка.
даже если ты напишешь A[2][3][4], то это будет просто A[2+3+4], т.е. A[9]. причем это будет не 9-ый элемент массива, а элемент, находящийся в массиве со смещением 9 байт от его начала.

именно поэтому в "твоем" коде присутствует такой кусок:
Цитата(NECsoft @  6.4.2008,  22:19 Найти цитируемый пост)

        mov dx,12
        mul dx
        mov bx,ax


чтобы перейти к следующей строке массива, нужно прибавить к "опорному" индексу, отвечающему за начало строки, размер одной строки массива в байтах. в твоем случае - 12.

ps. пока писал, ты уже сам все понял. smile но таки оставлю пост.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Asm для начинающих"
MAKCim
  • Проставьте несколько ключевых слов темы, чтобы её можно было легче найти.
  • Не забывайте пользоваться кнопкой КОД.
  • Телепатов на форуме нет! Задавайте чёткий, конкретный и полный вопрос. Указывайте полностью ошибки компилятора и компоновщика.
  • Новое сообщение должно иметь прямое отношение к разделу форума. Флуд, флейм, оффтопик запрещены.
  • Категорически запрещается обсуждение вареза, "кряков", взлома программ и т.д.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, MAKCim.

 
 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Asm для начинающих | Следующая тема »


 




[ Время генерации скрипта: 0.0691 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.