Вопрос поведения кода сборки Intel x86 - PullRequest
1 голос
/ 20 июня 2011

У меня есть сборочный код Intel x86 (16-битная версия), как показано ниже, который печатает сообщение нормально. Использование плоского ассемблера для сборки на Win-7 32 бит.

ORG 100h
USE16

        mov ah, 09
        mov dx, message
        jmp  Displayit  ;unconditional jump

        mov ah,01
        int 21h

        mov ah,4ch
        int 21h

Displayit:
        int 21h

message db 'Testing assembly jump instruction', 0Ah, '$'
  1. Если я переместу определение строки сообщения (в приведенном ниже коде), в начале не будет напечатана эта строка? В чем причина?

  2. Кроме того, хотя у меня есть инструкция mov ah, 01, int 21h, чтобы предотвратить закрытие командной строки / консоли, она не работает. Консоль просто закрывается, прежде чем я вижу сообщение напечатано или нет?

.

ORG 100h
USE16
message db 'Testing assembly jump instruction', 0Ah, '$'

mov ah, 09
mov dx, message
jmp  Displayit  ;unconditional jump

mov ah,01
int 21h
mov ah,4ch
int 21h

Displayit:
    int 21h

1 Ответ

6 голосов
/ 20 июня 2011
  1. Если вы определите строку в начале, она будет выполнена как код.Это приводит к сбою или другим видам неопределенного поведения.

  2. Последовательность инструкций, начинающаяся с mov ah,1, никогда не выполняется, вы перепрыгиваете через нее.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...