diff --git a/src/plugins/debugger/debuggeragents.cpp b/src/plugins/debugger/debuggeragents.cpp
index cd089d803c9eb4b3451058bf12eec917633a42f8..35bf8c70fd953b8a8bca661995c98454da124b36 100644
--- a/src/plugins/debugger/debuggeragents.cpp
+++ b/src/plugins/debugger/debuggeragents.cpp
@@ -37,12 +37,15 @@
 #include <coreplugin/coreconstants.h>
 #include <coreplugin/editormanager/editormanager.h>
 #include <coreplugin/editormanager/ieditor.h>
+#include <coreplugin/mimedatabase.h>
 #include <coreplugin/icore.h>
 
 #include <texteditor/basetexteditor.h>
+#include <texteditor/plaintexteditor.h>
 #include <texteditor/basetextmark.h>
 #include <texteditor/itexteditor.h>
 #include <texteditor/texteditorconstants.h>
+#include <texteditor/basetextdocument.h>
 
 #include <utils/qtcassert.h>
 
@@ -51,7 +54,6 @@
 #include <QtGui/QMessageBox>
 #include <QtGui/QPlainTextEdit>
 #include <QtGui/QTextCursor>
-#include <QtGui/QSyntaxHighlighter>
 
 #include <limits.h>
 
@@ -161,7 +163,8 @@ public:
 
 struct DisassemblerViewAgentPrivate
 {
-    DisassemblerViewAgentPrivate() { tryMixed = true; }
+    DisassemblerViewAgentPrivate();
+    void configureMimeType();
 
     QPointer<TextEditor::ITextEditor> editor;
     StackFrame frame;
@@ -169,31 +172,16 @@ struct DisassemblerViewAgentPrivate
     QPointer<DebuggerEngine> engine;
     LocationMark2 *locationMark;
     QHash<QString, QString> cache;
+    QString mimeType;
 };
 
-/*!
-    \class DisassemblerSyntaxHighlighter
-
-     Simple syntax highlighter to make the disassembler text less prominent.
-*/
-
-class DisassemblerHighlighter : public QSyntaxHighlighter
+DisassemblerViewAgentPrivate::DisassemblerViewAgentPrivate() :
+    editor(0),
+    tryMixed(true),
+    locationMark(new LocationMark2),
+    mimeType(_("text/x-qtcreator-generic-asm"))
 {
-public:
-    DisassemblerHighlighter(QPlainTextEdit *parent)
-        : QSyntaxHighlighter(parent->document())
-    {}
-
-private:
-    void highlightBlock(const QString &text)
-    {
-        if (!text.isEmpty() && text.at(0) != ' ') {
-            QTextCharFormat format;
-            format.setForeground(QColor(128, 128, 128));
-            setFormat(0, text.size(), format);
-        }
-    }
-};
+}
 
 /*!
     \class DisassemblerViewAgent
@@ -206,8 +194,6 @@ private:
 DisassemblerViewAgent::DisassemblerViewAgent(DebuggerEngine *engine)
     : QObject(0), d(new DisassemblerViewAgentPrivate)
 {
-    d->editor = 0;
-    d->locationMark = new LocationMark2();
     d->engine = engine;
 }
 
@@ -271,6 +257,38 @@ void DisassemblerViewAgent::setFrame(const StackFrame &frame, bool tryMixed)
     d->engine->fetchDisassembler(this);
 }
 
+void DisassemblerViewAgentPrivate::configureMimeType()
+{
+    QTC_ASSERT(editor, return);
+
+    TextEditor::BaseTextDocument *doc = qobject_cast<TextEditor::BaseTextDocument *>(editor->file());
+    QTC_ASSERT(doc, return);
+    doc->setMimeType(mimeType);
+
+    TextEditor::PlainTextEditor *pe = qobject_cast<TextEditor::PlainTextEditor *>(editor->widget());
+    QTC_ASSERT(pe, return);
+
+    if (const Core::MimeType mtype = Core::ICore::instance()->mimeDatabase()->findByType(mimeType)) {
+        pe->configure(mtype);
+    } else {
+        qWarning("Assembler mimetype '%s' not found.", qPrintable(mimeType));
+    }
+}
+
+QString DisassemblerViewAgent::mimeType() const
+{
+    return d->mimeType;
+}
+
+void DisassemblerViewAgent::setMimeType(const QString &mt)
+{
+    if (mt == d->mimeType)
+        return;
+    d->mimeType = mt;
+    if (d->editor)
+       d->configureMimeType();
+}
+
 void DisassemblerViewAgent::setContents(const QString &contents)
 {
     QTC_ASSERT(d, return);
@@ -286,18 +304,19 @@ void DisassemblerViewAgent::setContents(const QString &contents)
             editorManager->openEditorWithContents(
                 Core::Constants::K_DEFAULT_TEXT_EDITOR_ID,
                 &titlePattern));
+        QTC_ASSERT(d->editor, return);
         d->editor->setProperty("OpenedByDebugger", true);
         d->editor->setProperty("DisassemblerView", true);
-        QTC_ASSERT(d->editor, return);
-        if ((plainTextEdit = qobject_cast<QPlainTextEdit *>(d->editor->widget())))
-            (void) new DisassemblerHighlighter(plainTextEdit);
+        d->configureMimeType();
     }
 
     editorManager->activateEditor(d->editor);
 
     plainTextEdit = qobject_cast<QPlainTextEdit *>(d->editor->widget());
-    if (plainTextEdit)
+    if (plainTextEdit) {
         plainTextEdit->setPlainText(contents);
+        plainTextEdit->setReadOnly(true);
+    }
 
     d->editor->markableInterface()->removeMark(d->locationMark);
     d->editor->setDisplayName(_("Disassembler (%1)").arg(d->frame.function));
diff --git a/src/plugins/debugger/debuggeragents.h b/src/plugins/debugger/debuggeragents.h
index 664d7a26776097e237f0b037d8d79bfd0028acee..d58068756fd3db1d0adf860e7b34e293e15239fe 100644
--- a/src/plugins/debugger/debuggeragents.h
+++ b/src/plugins/debugger/debuggeragents.h
@@ -73,7 +73,7 @@ struct DisassemblerViewAgentPrivate;
 class DisassemblerViewAgent : public QObject
 {
     Q_OBJECT
-
+    Q_PROPERTY(QString mimeType READ mimeType WRITE setMimeType)
 public:
     // Called from Gui
     explicit DisassemblerViewAgent(DebuggerEngine *engine);
@@ -83,6 +83,11 @@ public:
     const StackFrame &frame() const;
     void resetLocation();
     Q_SLOT void setContents(const QString &contents);
+
+    // Mimetype: "text/a-asm" or some specialized architecture
+    QString mimeType() const;
+    Q_SLOT void setMimeType(const QString &mt);
+
     QString address() const;
     bool contentsCoversAddress(const QString &contents) const;
     void cleanup();
diff --git a/src/plugins/texteditor/TextEditor.mimetypes.xml b/src/plugins/texteditor/TextEditor.mimetypes.xml
index c2b7765b31695c8d876bca9e233ed6ea705b1d4a..e8e8aaa11c3cf2bb8d0808f20a92507cb318b939 100644
--- a/src/plugins/texteditor/TextEditor.mimetypes.xml
+++ b/src/plugins/texteditor/TextEditor.mimetypes.xml
@@ -15,4 +15,15 @@
         <glob pattern="*.xbl"/>
         <alias type="text/xml"/>
     </mime-type>
+    <mime-type type="text/x-asm">
+        <sub-class-of type="text/plain"/>
+        <comment>Assembler</comment>
+        <glob pattern="*.asm"/>
+    </mime-type>
+    <!-- Catch-all for assemblers -->
+    <mime-type type="text/x-qtcreator-generic-asm">
+        <sub-class-of type="text/x-asm"/>
+        <comment>Qt Creator Generic Assembler</comment>
+        <glob pattern="*.asm"/>
+    </mime-type>
 </mime-info>