Упражнение - взять слово с клавиатуры, искать среду DOS, и если это слово есть, отобразите строку с этим словом из среды DOS.fasm, поиск слова в среде dos
Вот мой код:
format binary
org 100h
start:
mov es,[ds:02ch]
xor si,si
;*****************************
;*****************************
mov ah,9
mov dx,string
int 21h
mov ah,10
mov dx,word
int 21h
mov ah,0
int 16h
;*****************************
;*****************************
xor di,di
xor bx,bx
start_while:
mov di,$-word
jge equal
mov dl,[es:si]
mov bl,dl
mov dl,[bx+di]
cmp dl,[string+di]
jne next_line
add di,1
jmp start_while
next_line:
inc si
cmp dl,0
jnz notexist
equal:
mov ah,2
int 21h
jmp end
notexist:
mov ah,9
mov dx,d_exist
int 21h
jmp end
end:
mov ah,08h
int 21h
ret
;**************************************
;**************************************
string db 'THE WORD:',10,13,"$"
word db 6
db 0
times 22 db "$"
d_exist db 'variable does not exist',10,13,"$'
Компилятор говорит: мов дл, [дл + ди] ошибка. Я начинаю, как исправить код? Понятия не имею.
Что такое точное, полное сообщение об ошибке? – Alejandro
зарезервированное слово используется как символ. –
Вы не можете индексировать данные 'dl' или' dx' в качестве базы. Вы можете индексировать «bp» или «bx» (обозначенные базовые регистры), поэтому вместо этого попробуйте «xor bx, bx',» mov bl, dl', 'mov dl, [bx + di]'. Для получения дополнительной информации, «Режимы адресации x86» в Google. – lurker