| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Asm: Общие вопросы > помогите понять где ошибка |
| Автор: Dreamuchiy 4.11.2008, 21:54 | ||
TASM выдает ошибку : Operand types do not match в строке 10 и 11 вот прога:[code=asm]
Собственно я хотел посмотреть как работает команда MOVESB, впринципе ошибок на мой взгляв нет но вот TASM не принимает. Помогите разобраться что там у меня с SI и DI не в порядке |
| Автор: Akina 4.11.2008, 22:40 | ||
Добавлено через 1 минуту и 9 секунд Не посмотришь. DS/ES у тебя показывают отнюдь не на сегмент данных |
| Автор: Dreamuchiy 5.11.2008, 00:39 |
| А я писал OFFSET Мне он тоже ошибку выдавал, хотя может у меня там тогда тоже что то не правильно было. Если не сложно напишите как правильно указать на сегменты. ОТ создания блока данных до присваивания адреса регистрам |
| Автор: Mikl_ 5.11.2008, 05:17 | ||
Dreamuchiy, movsb копирование ds:[si] в es:[di] с инкрементом si и di. для модели small необходимо es спозиционировать на сегмент .data проще разобраться с movs используя такой код
|
| Автор: Akina 5.11.2008, 09:07 | ||
Добавлен код присвоения необходимых значений сегментным регистрам и отладочные прерывания, необходимые для того, чтобы увидеть результат. Также заменена инструкция набора команд - всегда используйте самую младшую из возможных. |
| Автор: Mikl_ 5.11.2008, 10:12 |
| Akina, в случае masm/tasm должно быть либо LEA ESI,BUFFER1 либо MOV SI,OFFSET BUFFER1 если у нас fasm, nasm, yasm: тогда MOV SI,BUFFER1 но BUFFER1: TIMES 255 DB 255 |
| Автор: Akina 5.11.2008, 11:04 | ||
Да, поправил... |