Не получается передать адрес строки в asm вставке - C (СИ)
Формулировка задачи:
Доброе время суток.
При выполнении данного кода возникает две ошибки:
1 не получается передать адрес строки в регистр dx
2 компилятор не видит метку show
Пожалуйста, помогите решить проблему.
код:
int main(){ char dta[0x2e]; char allfiles[3]="*.*"; asm{ //dta mov ah,1ah mov dx, dta int 21h //find first mov ah, 4eh mov cx,0 mov dx, allfiles int 21h //show show: mov ah, 9 mov dx, dta+1eh int 21h //find next mov ah,4fh mov dx, dta mov dword[dta+1eh],0 int 21h jnc show } return 0; }
Решение задачи: «Не получается передать адрес строки в asm вставке»
textual
Листинг программы
mov dx, offset dta add dx, 1eh mov [dx], 0
Объяснение кода листинга программы
- Переменная
dta
содержит адрес строки в asm вставке. - Код перемещает значение регистра dx вперед на 1eh (единицу).
- Значение регистра dx используется как смещение для адреса строки в asm вставке.
- Результат вычисления записывается в память по адресу, соответствующему значению регистра dx.
- Значение 0 записывается в память по адресу, соответствующему значению регистра dx.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д