|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
07.10.2022, 23:15 | #1 |
Новичок
Джуниор
Регистрация: 07.10.2022
Сообщений: 2
|
emu8086 ругается, помогите
В общем, пишу программку на ассемблере, которая должна найти сумму абсолютных величин в массиве байтов. В ассемблере новенький, поэтому не понимаю - то ли я дурачок, то ли лыжи не едут. Сам код выглядит следующим образом:
Код:
При попытке компиляции, emu8086 выдаёт следующие вещи: (4) illegal instruction: codeseg or wrong parameters; (8) illegal instruction: startupcode or wrong parameters; (9) illegal instruction: dataseg or wrong parameters; (21) illegal instruction: exitcode 0 or wrong parameters На что он ругается, почему, и, главное, как это исправить? Помогите, пожалуйста) |
07.10.2022, 23:54 | #2 |
Участник клуба
Регистрация: 17.04.2022
Сообщений: 1,833
|
А вы точно это написали для ассемблера Emu8086?
Судя по перечисленным вами ошибкам Enu8086 не понял ни одну из директив Вы же сумму ищите. Причем тут тогда вычитание? Последний раз редактировалось macomics; 08.10.2022 в 00:24. |
08.10.2022, 09:19 | #3 | |
Новичок
Джуниор
Регистрация: 07.10.2022
Сообщений: 2
|
Цитата:
Так я же ставлю строкой выше neg[bx], и знак числа меняется, по идее. |
|
08.10.2022, 09:57 | #4 |
Участник клуба
Регистрация: 17.04.2022
Сообщений: 1,833
|
А надо писать для Enu8086 или взять TASM. Хотя я не знаю что у вас за курс, но лучше возьмите что-то по новее. Например FASM, NASM и в конце концов MASM. TASM - это уже такая древность, которую забросили.
Только двумя строками выше вы осуществляете переход (если не меньше, т.е. больше или равно), а тремя строками выше вы сравниваете [bx] с нулем. Значит на sub ax, [bx] вы попадаете в двух случаях. [bx] больше или равен 0 (переход на метку POS происходит) и отрицательное число изменяет знак т.е. становится положительным (переход на метку POS не происходит). Получается вы отнимаете от ax положительные целые числа размером слово по указателю [ds:bx]. Еще замечания: в командах cmp [bx], 0 и neg [bx] не указан размер операндов. Они точно вызовут ошибку. Либо используйте cmp mass[bx], 0 и в bx сохраняйте индекс либо укажите размер явно neg byte ptr [bx] Последний раз редактировалось macomics; 08.10.2022 в 10:02. |
08.10.2022, 10:14 | #5 |
Участник клуба
Регистрация: 17.04.2022
Сообщений: 1,833
|
Я могу ошибаться, но мне помнится, что TASM не поддерживал даже всех инструкций SSE2. А вот вышеперечисленные ассемблеры дополнялись современными инструкциями. Также при использовании 64-битного ассемблера активно используются инструкции SSE3 т.к. в этих процессорах такая технология присутствует однозначно. SSE3 появилось до того как появились первые 64-битные процессоры. Поэтому, если вы пишите 64-битную программу нет необходимости проверять доступность SSE3 - она точно присутствует. А вот поддержку инструкций поновее придется проверять.
TASM же забросили еще во времена Pentium IV и не дополнили его всеми инструкциями для этого процессора. Теперь новых версий не выходит, а вот в новых процессорах появляются новые команды. И другие ассемблеры поддерживают в актуальном состоянии набор поддерживаемых инструкций x86 и x86_64. Может эти инструкции вам не понадобятся, но хотя бы сразу привыкните к директивам и особенностям того инструмента, который еще актуален. Последний раз редактировалось macomics; 08.10.2022 в 10:24. |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
emu8086 | Qawar | Помощь студентам | 3 | 05.07.2022 12:40 |
Emu8086 | Qawar | Помощь студентам | 0 | 05.07.2022 12:17 |
Ругается, помогите исправить ошибку | ChiefAccent | Помощь студентам | 8 | 17.04.2016 10:25 |
Emu8086 | Firgat13 | Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM | 3 | 28.10.2014 11:53 |
emu8086 | JOhn_k | Помощь студентам | 7 | 07.12.2010 12:23 |