#assembly #nasm #x86-16
Вопрос:
Я пытался :-
[org 0x100]
data segment
fn db 'Atul
но это дает мне такую ошибку, как
данные, исключенные из инструкции, переопределены
Пожалуйста, скажите мне желаемый ответ, а также что не так в моем коде
Комментарии:
1. Вы пытаетесь создать
.COM
файл с двумя сегментами. Но (древний).COM
формат файла допускает только один сегмент. Но это только одна ошибка. В какой строке возникает ошибка?2.
data ends
- это синтаксис MASM. NASM не нужна строка для объявления конца раздела или сегмента: эта строка будет проанализирована так же , какdata: ends
, например, при попытке определить вызываемый символdata
. Тот же символ уже был определен строкойdata segment
, которая анализировалась какdata: segment
, потому что в NASMsegment
есть директива, поэтомуsegment .data
вы обычно переключаетесь на раздел/сегмент .data. (Но, как сказал @zx485,. com-это плоский двоичный файл, поэтому просто поместите свои данные в конец, а не вверху, где они будут выполняться в виде инструкций.)3. Вы получаете эту ошибку, связанную с конфликтом символов, еще до того, как NASM начнет жаловаться на то, что
segment
иends
не являются допустимыми мнемоническими инструкциями или макросами, которые вы определили.4. "Пожалуйста, скажите мне желаемый ответ"?
5. Можете ли вы уточнить, что вы подразумеваете под "объединением строк"? Является ли желаемый вывод для ввода двух указателей на ('$' завершен?) строки и скопировать их оба в третий буфер памяти (также завершенный"$")? Или записать обе строки последовательно в консоль? Или что-то еще?
ln db 'Dagurно это дает мне такую ошибку, как
данные, исключенные из инструкции, переопределены
Пожалуйста, скажите мне желаемый ответ, а также что не так в моем коде
Комментарии:
1. Вы пытаетесь создать
.COM
файл с двумя сегментами. Но (древний).COM
формат файла допускает только один сегмент. Но это только одна ошибка. В какой строке возникает ошибка?2.
data ends
- это синтаксис MASM. NASM не нужна строка для объявления конца раздела или сегмента: эта строка будет проанализирована так же , какdata: ends
, например, при попытке определить вызываемый символdata
. Тот же символ уже был определен строкойdata segment
, которая анализировалась какdata: segment
, потому что в NASMsegment
есть директива, поэтомуsegment .data
вы обычно переключаетесь на раздел/сегмент .data. (Но, как сказал @zx485,. com-это плоский двоичный файл, поэтому просто поместите свои данные в конец, а не вверху, где они будут выполняться в виде инструкций.)3. Вы получаете эту ошибку, связанную с конфликтом символов, еще до того, как NASM начнет жаловаться на то, что
segment
иends
не являются допустимыми мнемоническими инструкциями или макросами, которые вы определили.4. "Пожалуйста, скажите мне желаемый ответ"?
5. Можете ли вы уточнить, что вы подразумеваете под "объединением строк"? Является ли желаемый вывод для ввода двух указателей на ('$' завершен?) строки и скопировать их оба в третий буфер памяти (также завершенный"$")? Или записать обе строки последовательно в консоль? Или что-то еще?
data ends
code segment
mov ax,@data
mov ds,ax
mov ah,
mov bh, ln
add ah,bh
add ah, 'но это дает мне такую ошибку, как
данные, исключенные из инструкции, переопределены
Пожалуйста, скажите мне желаемый ответ, а также что не так в моем коде
Комментарии:
1. Вы пытаетесь создать
.COM
файл с двумя сегментами. Но (древний).COM
формат файла допускает только один сегмент. Но это только одна ошибка. В какой строке возникает ошибка?2.
data ends
- это синтаксис MASM. NASM не нужна строка для объявления конца раздела или сегмента: эта строка будет проанализирована так же , какdata: ends
, например, при попытке определить вызываемый символdata
. Тот же символ уже был определен строкойdata segment
, которая анализировалась какdata: segment
, потому что в NASMsegment
есть директива, поэтомуsegment .data
вы обычно переключаетесь на раздел/сегмент .data. (Но, как сказал @zx485,. com-это плоский двоичный файл, поэтому просто поместите свои данные в конец, а не вверху, где они будут выполняться в виде инструкций.)3. Вы получаете эту ошибку, связанную с конфликтом символов, еще до того, как NASM начнет жаловаться на то, что
segment
иends
не являются допустимыми мнемоническими инструкциями или макросами, которые вы определили.4. "Пожалуйста, скажите мне желаемый ответ"?
5. Можете ли вы уточнить, что вы подразумеваете под "объединением строк"? Является ли желаемый вывод для ввода двух указателей на ('$' завершен?) строки и скопировать их оба в третий буфер памяти (также завершенный"$")? Или записать обе строки последовательно в консоль? Или что-то еще?
lea dh,ah
;output the string
;loaded in dx
mov AH,0x09
int 0x21
code ends
mov ax,0x4c00
int 0x21
но это дает мне такую ошибку, как
данные, исключенные из инструкции, переопределены
Пожалуйста, скажите мне желаемый ответ, а также что не так в моем коде
Комментарии:
1. Вы пытаетесь создать
.COM
файл с двумя сегментами. Но (древний).COM
формат файла допускает только один сегмент. Но это только одна ошибка. В какой строке возникает ошибка?2.
data ends
— это синтаксис MASM. NASM не нужна строка для объявления конца раздела или сегмента: эта строка будет проанализирована так же , какdata: ends
, например, при попытке определить вызываемый символdata
. Тот же символ уже был определен строкойdata segment
, которая анализировалась какdata: segment
, потому что в NASMsegment
есть директива, поэтомуsegment .data
вы обычно переключаетесь на раздел/сегмент .data. (Но, как сказал @zx485,. com-это плоский двоичный файл, поэтому просто поместите свои данные в конец, а не вверху, где они будут выполняться в виде инструкций.)3. Вы получаете эту ошибку, связанную с конфликтом символов, еще до того, как NASM начнет жаловаться на то, что
segment
иends
не являются допустимыми мнемоническими инструкциями или макросами, которые вы определили.4. «Пожалуйста, скажите мне желаемый ответ»?
5. Можете ли вы уточнить, что вы подразумеваете под «объединением строк»? Является ли желаемый вывод для ввода двух указателей на (‘$’ завершен?) строки и скопировать их оба в третий буфер памяти (также завершенный»$»)? Или записать обе строки последовательно в консоль? Или что-то еще?