Не получается передать адрес строки в 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.