2013-12-08 2 views
1

Как и в названии, моя процедура печати выводит мусор по какой-то причине. Вот определение прок:Мусор в выводе инструкции печати на экран

print proc near 
mov ah, 09h 
int 21h 
ret 
print endp 

А вот где он вызывается в моем коде:

emptyTail: 
mov dl, offset standardError 
call print 
jmp quit 

Вот StandardError:

standardError db "Sorry we ran into an error. Try again", 13,10, "$" 

Остальные части кода работают нормально, но как только это определенная ветвь называется, она выплевывает кучу странных символов. Любая идея почему?

+0

'dh', вероятно, имеет неправильное значение, и поэтому выход - это то, чего вы не ожидали. Это должно быть «mov dx, offset standardError». – nrz

+0

thanks @nrz. Это все еще дает мне странную кучу персонажей, только на этот раз это похоже на: 4878rygu3ilht83hu43ry783494948u704 Простите, что мы столкнулись с ошибкой. Повторите попытку – JonAmen

+0

Возможно, у вас неправильное значение 'ds'. Строковый адрес указан в 'ds: dx'. – nrz

ответ

1

Вам необходимо поместить DX со смещением вашей строки. Вероятно, DS указывает на данные вашего сегмента, не так ли? Это COM или EXE-файл, что вы делаете? Если это COM, DS уже установлен.

emptyTail: 
mov dx, offset standardError ;DX, not DL or DH. 
call print 
jmp quit 
Смежные вопросы