Модераторы: Poseidon
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> [ASM] Матрицы 
:(
    Опции темы
Metalex
Дата 31.10.2010, 17:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 635
Регистрация: 22.10.2008
Где: Украина-ZPсity

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



Здравствуйте.

Задание таково:

1) Зарезервировать место в памяти в сегменте данных Dseg_1 для массива байт в 10 элементов MasB.
2) Зарезервировать место в другом сегменте данных Dseg_2 для массива слов в 30 элементов с именем MasW.
3) Зарезервировать место в дополнетельном сегменте Eseg для таблицы, состоящей из 10 записей по 4 элемента TablB.
4) Зарезервировать место в дополнительном сегменте Eseg для таблицы двойных слов с именем TablAdr 40 элементов.
5) Используя прямую адресацию с индексированием заполнить массив MasB.
6) Используя базовую адресацию со смещением заполнить MasW.
7) Используя базовую адресацию с индексированием заполнить TablB следующим образом:
в качестве первого элемента каждой записи берется элемент MasB с тем же номером, что и номер записи. В качестве остальных полей берется первый байт элементов MasW по порядку их следования в массиве.
8) Используя попеременно, если это возможно, или команду загрузки абсолютного адреса или OFFSET заполнить таблицу TablAdr так, чтоб каждый элемент представлял собой адрес соотвествующего элемента таблицы TablB.
9) Используя операции со стеком сначала оставляем в TablB порядок элементов таким, как он есть, изменяем в обратном порядке расположение записей, а потом, не изменяя расположения записей, изменить на обратный порядок элементов.

Но 8 и 9е задание делал отдельно, все работало, а когда стулил все вместе где-то выбивает из дебагера (пользуюсь стандартным тасмовским), гляньте код, может я где-то с регистрами или еще чего напорол:

Код

title lab2.9
sseg segment para stack 'stack'
db 256 dup (?)
sseg ends
Eseg segment para public 'ext'
TablB db 10 dup (4 dup ('G'))
Eseg ends
cseg segment para public 'code'
assume cs:cseg, ss:sseg, es:Eseg, ds:Dseg_1
start proc far
;задание 7
assume ds:Dseg_1
mov bx, Dseg_1
mov ds, bx
mov si, 0
mov di, 0
mov cl, 10
loop28:
mov dl, MasB[si]
mov TablB[di], dl
inc si
add di, 4
loop loop28
assume ds:Dseg_2  
mov bx,Dseg_2  
mov ds,bx  
mov cx,30  
mov ax,0  
mov di,1  
mov si,0
loop29:  
mov dl,BYTE PTR MasW[si]  
mov TablB[di],dl  
add si,1*2 
inc di  
inc ax  
cmp ax,3  
jne loop210  
inc di  
sub ax,ax
loop210:  
loop loop29
;замена местами записей (10 шт)
mov bx,Eseg
mov es,bx
mov si, 0
mov ax, 0
mov di, 4
mov cx, 10
loop1:
mov dx, 0
mov dl, TablB[si]
push dx
inc si
inc ax
cmp ax, 4
je loop2
jmp loop1
loop2:
mov ax, 0
loop3:
pop dx
mov TablB[di], dl
dec di
inc ax
cmp ax, 4
je loop4
jmp loop3
loop4:
mov ax,0
loop loop1
;замена местами элементов (4 шт 10 раз)
mov si, 0
mov ax, 0
mov di, 0
mov cx, 10
loop9:
mov dx, 0
mov dl, TablB[si]
push dx
inc si
inc ax
cmp ax, 4
je loop10
jmp loop9
loop10:
mov ax, 0
loop11:
pop dx
mov TablB[di], dl
inc di
inc ax
cmp ax, 4
je loop12
jmp loop11
loop12:
mov ax, 0
loop loop9
ret
start endp
cseg ends
end start


Подскажите, пожалуйста, что не так. Спасибо. 


--------------------
Don't let the system get you down.
PM WWW ICQ Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Центр помощи"

ВНИМАНИЕ! Прежде чем создавать темы, или писать сообщения в данный раздел, ознакомьтесь, пожалуйста, с Правилами форума и конкретно этого раздела.
Несоблюдение правил может повлечь за собой самые строгие меры от закрытия/удаления темы до бана пользователя!


  • Название темы должно отражать её суть! (Не следует добавлять туда слова "помогите", "срочно" и т.п.)
  • При создании темы, первым делом в квадратных скобках укажите область, из которой исходит вопрос (язык, дисциплина, диплом). Пример: [C++].
  • В названии темы не нужно указывать происхождение задачи (например "школьная задача", "задача из учебника" и т.п.), не нужно указывать ее сложность ("простая задача", "легкий вопрос" и т.п.). Все это можно писать в тексте самой задачи.
  • Если Вы ошиблись при вводе названия темы, отправьте письмо любому из модераторов раздела (через личные сообщения или report).
  • Для подсветки кода пользуйтесь тегами [code][/code] (выделяйте код и нажимаете на кнопку "Код"). Не забывайте выбирать при этом соответствующий язык.
  • Помните: один топик - один вопрос!
  • В данном разделе запрещено поднимать темы, т.е. при отсутствии ответов на Ваш вопрос добавлять новые ответы к теме, тем самым поднимая тему на верх списка.
  • Если вы хотите, чтобы вашу проблему решили при помощи определенного алгоритма, то не забудьте описать его!
  • Если вопрос решён, то воспользуйтесь ссылкой "Пометить как решённый", которая находится под кнопками создания темы или специальным флажком при ответе.

Более подробно с правилами данного раздела Вы можете ознакомится в этой теме.

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

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


 




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


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

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