将0x10添加到0x7FF0不会导致0x8000,而是获得0x7F00

Tho*_*hor -1 x86 assembly masm

我目前正在学习x86汇编语言.

我有以下代码

.386
.MODEL FLAT, STDCALL
.STACK 4096
ExitProcess PROTO, dwExitCode: DWORD

.CODE
    main PROC 
    MOV AX, 7FF0h
    ADD AL, 10h

invoke ExitProcess, 0
main ENDP
END main
Run Code Online (Sandbox Code Playgroud)

之前,我感动10hAL,AX包含值0x7FF0

在此输入图像描述

移动后10h进入AL,我期待的AX是价值0x8000,而是在价值AX0x7F00.

在此输入图像描述

怎么会加入0x100xF0在最右边的字节(最低显著字节)并没有延续1到第二个最右边的字节?换句话说,怎么就加入0x100x7FF0没有造成0x8000

我的猜测是,因为当我加入0x10,我加入0x10AL(AL在另外的时间包含0xF0),因此加入0x100xF0导致0x100,但结转1不保留.

我的假设是否正确?

rcg*_*ldr 7

代码将0x10添加到AL,而不是AX,导致AL = 0xF0 + 0x10 = 0x00.更改代码以将0x10添加到AX(而不是AL).你也可以使用| 添加AL,010H | ADC AH,000H | .