Поиск:

Ответ в темуСоздание новой темы Создание опроса
> помогите понять где ошибка, где ошибка ? 
:(
    Опции темы
Dreamuchiy
Дата 4.11.2008, 21:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



TASM выдает ошибку : Operand types do not match в строке 10 и 11 вот прога:[code=asm]
Код

.386
.modell small
stack 100h
.DATA
buffer1 DB 255 DUP (255)
buffer2 DB 255 DUP (32)
.CODE
main PROC
CLD
MOV SI,buffer1
MOV DI,buffer2
MOV CX,255
REP MOVSB
MOV AX,4C00h
INT 21h
main ENDP
END main


Собственно я хотел посмотреть как работает команда MOVESB, впринципе ошибок на мой взгляв нет но вот TASM не принимает. Помогите разобраться  что там у меня с SI и DI не в порядке

Это сообщение отредактировал(а) Dreamuchiy - 4.11.2008, 22:00
--------------------
Мечтаю написать в карман Биллу Гейтсу... Или как минимум посмотреть крах Майкрософт...
PM MAIL   Вверх
Akina
Дата 4.11.2008, 22:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

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



Код

MOV SI, offset buffer1


Добавлено через 1 минуту и 9 секунд
Цитата(Dreamuchiy @  4.11.2008,  22:54 Найти цитируемый пост)
хотел посмотреть как работает команда MOVESB

Не посмотришь. DS/ES у тебя показывают отнюдь не на сегмент данных


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
Dreamuchiy
Дата 5.11.2008, 00:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



А я писал OFFSET Мне он тоже ошибку выдавал, хотя может у меня там тогда тоже что то не правильно было. Если не сложно напишите как правильно указать на сегменты. ОТ создания блока данных до присваивания адреса регистрам
--------------------
Мечтаю написать в карман Биллу Гейтсу... Или как минимум посмотреть крах Майкрософт...
PM MAIL   Вверх
Mikl_
Дата 5.11.2008, 05:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Dreamuchiy, movsb копирование ds:[si] в es:[di] с инкрементом si и di. для модели small необходимо es спозиционировать на сегмент .data проще разобраться с movs используя такой код
Код
.286
.model tiny
org 100h
.CODE
start: CLD
MOV SI,offset buffer1
MOV DI,offset buffer2
MOV CX,255
REP MOVSB
retn
buffer1 DB 255 DUP (255)
buffer2 DB 255 DUP (32)
end start
 smile 

Это сообщение отредактировал(а) Mikl_ - 5.11.2008, 05:18
PM MAIL   Вверх
Akina
Дата 5.11.2008, 09:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

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



Цитата(Dreamuchiy @  5.11.2008,  01:39 Найти цитируемый пост)
как правильно указать на сегменты

Код

.8086
.modell small
stack 100h
.DATA
buffer1 DB 255 DUP (255)
buffer2 DB 255 DUP (32)
.CODE
main PROC
mov ax,data
mov ds,ax
mov es,ax
CLD
MOV SI,offset buffer1
MOV DI,offset buffer2
MOV CX,255
int 3
REP MOVSB
int 3
MOV AX,4C00h
INT 21h
main ENDP
END main

Добавлен код присвоения необходимых значений сегментным регистрам и отладочные прерывания, необходимые для того, чтобы увидеть результат.
Также заменена инструкция набора команд - всегда используйте самую младшую из возможных.


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
Mikl_
Дата 5.11.2008, 10:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Akina, в случае masm/tasm должно быть либо LEA ESI,BUFFER1 либо MOV SI,OFFSET BUFFER1 
если у нас fasm, nasm, yasm: тогда MOV SI,BUFFER1 но BUFFER1: TIMES 255 DB 255 smile 

Это сообщение отредактировал(а) Mikl_ - 7.11.2008, 06:59
PM MAIL   Вверх
Akina
Дата 5.11.2008, 11:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

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



Цитата(Mikl_ @  5.11.2008,  11:12 Найти цитируемый пост)
 в случае mas/tasm должно быть либо lea esi,buffer1 либо MOV SI,offset buffer1 

Да, поправил... 




--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

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

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

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


 




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


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

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