Значение выражения на ассемблере - PullRequest
0 голосов
/ 15 мая 2011

Существует команда на языке ассемблера:

add dl, 48d

Какова точная цель и значение этого выражения на языке ассемблера?Когда я пишу код

mov al, 02
mov dl, al
mov ah, 02
int 21h

, это дает вывод как b.Но когда я пишу,

mov al, 02
mov dl, al
add dl, 48d
mov ah, 02
int 21h

, это дает 2 в качестве вывода.Что именно делает это утверждение?

Ответы [ 2 ]

4 голосов
/ 15 мая 2011

Похоже на х86 ассемблер.Эта команда добавляет 48 (48 десятичных) к содержанию младшего 8 бита (E) регистра DX.См. x86 регистры общего назначения , но реальные объяснения см. На странице x86 Википедии, раздел «Регистры x86» .

На x86 вы можете получить доступ к частям регистра,Исторически это было сделано для того, чтобы 8086 (16-битные регистры) были максимально совместимы с 8080 (8-битными регистрами).Затем эта схема была расширена на 80286/80386 с помощью 32-разрядных регистров, а затем снова до 64-разрядных в режиме AMD x64.

Таким образом, вы можете получить доступ ко всему 32-разрядному регистру как EDX (в защищенном режиме) инижний 16-битный регистр как DX.Теперь эта 16-битная часть (DX) дополнительно разделена на две части: к старшему 8-битному относятся как DH, а к младшему 8-битному - как DL.

Редактировать после редактирования вопроса:

Давайте объясним процитированный код задом наперед: в конце вызывается прерывание 21hex, которое в IBM PC-совместимых системах отвечает за различные вызовы API DOS .Установка 8-разрядного регистра AH на 2 приводит к выполнению символьного вывода .Выводимый символ находится в 8-битном регистре DL.

Итак, в вашем первом примере напечатан символ ASCII 02, но это управляющий символ, поэтому на выходе не должно быть b как вы говорите, это что-то невидимое (02 означает начало текста ).Второй пример берет 2, затем добавляет 48, что дает 50 (десятичное число).Это код ASCII для персонажа 2.

Боже мой, я действительно чувствую себя старым ... Я сделал это 20 лет назад.

0 голосов
/ 15 мая 2011

Это довольно просто. Это добавляет 48 (в десятичном виде) к 8-битному регистру DL.

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