关于ASM 8086 ADD的问题

Tal*_*Tal 6 x86 assembly add

我正在高中学习ASM 8086.(这意味着我在笔记本上学习ASM 8086,而不是通过计算机运行它).

我不明白 - 如果我这样做将会发生什么:

MOV AL, F2h
ADD AL, 20h
Run Code Online (Sandbox Code Playgroud)

电脑会做什么?(AL,AX,CF,ZF的价值是多少?)

如果我这样做会发生什么:

MOV AH,F2h
ADD AH,20h
Run Code Online (Sandbox Code Playgroud)

谢谢 !!

Mac*_*ade 5

MOV AL, F2h
Run Code Online (Sandbox Code Playgroud)

将值0xF2放在AL(累加器)寄存器中.

ADD AL, 20h
Run Code Online (Sandbox Code Playgroud)

将值0x20添加到AL寄存器中包含的值.

AL将为0xF2 + 0x20.但AL是一个8位寄存器,因此该值将为0x12,而不是0x112.

AH也是一样,因为它也是一个8位寄存器.
要获得完整值,您需要使用AX寄存器,即16位.
AX由AH(高)和AL(低)组成,因此您可以单独访问高低部分.

----------------EAX ----------------
                 ------- AX --------
|----------------|--------|--------|
|                |   AH   |   AL   |
|----------------|--------|--------|
     16 bits       8 bits   8 bits
Run Code Online (Sandbox Code Playgroud)