Assembly 汇编语言语句的含义

Assembly 汇编语言语句的含义,assembly,Assembly,有一个汇编语言命令: 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作为输出。这句话到底在干什么?很简单。它将48(十进制)添加到8位寄存器DL这非常简单。它将48(十进制)添加到8位寄存器DL看起来像x86汇编程序。此命

有一个汇编语言命令:

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
作为输出。这句话到底在干什么?

很简单。它将48(十进制)添加到8位寄存器
DL

这非常简单。它将48(十进制)添加到8位寄存器
DL

看起来像x86汇编程序。此命令向(E)DX寄存器下8位的内容添加48(48十进制)。请参阅,但要了解真正的解释,请参阅

在x86上,您可以访问部分寄存器。历史上,这样做是为了使8086(16位寄存器)尽可能与8080(8位寄存器)兼容。该方案随后在80286/80386上用32位寄存器扩展,然后在AMDx64模式下再次扩展到64位

因此,您可以将整个32位寄存器作为EDX(在保护模式下)访问,将较低的16位寄存器作为DX访问。现在这个16位部分(DX)进一步分为两部分:上8位作为DH访问,下8位作为DL访问

编辑问题后编辑:

让我们从后到前解释引用的代码:最后,调用中断21hex,这在IBM PC兼容系统上负责。将8位寄存器AH设置为2将导致执行字符输出。要输出的字符位于8位寄存器DL中

因此,在第一个示例中,02是打印的,但这是一个控制字符,因此输出不应该是
b
,正如您所说,它只是不可见的东西(02是文本的开头)。第二个例子取2,然后加48,得到50(十进制)。这是字符
2
的ASCII码


天哪,我现在真的觉得自己老了。。。我20年前就做过这件事。

看起来像x86汇编程序。此命令向(E)DX寄存器下8位的内容添加48(48十进制)。请参阅,但要了解真正的解释,请参阅

在x86上,您可以访问部分寄存器。历史上,这样做是为了使8086(16位寄存器)尽可能与8080(8位寄存器)兼容。该方案随后在80286/80386上用32位寄存器扩展,然后在AMDx64模式下再次扩展到64位

因此,您可以将整个32位寄存器作为EDX(在保护模式下)访问,将较低的16位寄存器作为DX访问。现在这个16位部分(DX)进一步分为两部分:上8位作为DH访问,下8位作为DL访问

编辑问题后编辑:

让我们从后到前解释引用的代码:最后,调用中断21hex,这在IBM PC兼容系统上负责。将8位寄存器AH设置为2将导致执行字符输出。要输出的字符位于8位寄存器DL中

因此,在第一个示例中,02是打印的,但这是一个控制字符,因此输出不应该是
b
,正如您所说,它只是不可见的东西(02是文本的开头)。第二个例子取2,然后加48,得到50(十进制)。这是字符
2
的ASCII码


天哪,我现在真的觉得自己老了。。。我在20年前就做过这件事。

你到底不了解什么?我想知道我们在哪里使用这个语句,它的输出是什么,或者它对输出的影响是什么?你到底不了解什么?我想知道我们在哪里使用这个语句,它的输出是什么,或者它对输出的影响是什么?