我需要的
我被要求编写的程序的一部分是附加的。问题是我们被要求定义字节并将它们转换为单词(有符号扩展名),然后才添加它们。
问题
添加有时不会提供所需的输出。例如,我正在使用以下内容:
data segment
    first     DB    183
    second    DB    94
data ends
code segment
start:
    mov ax,data
    mov ds,ax
    mov AX, 0
    mov AL, first
    cbw
    mov BX, AX
    mov AX, 0
    mov AL, second
    cbw
    add AX, BX
    mov ax, 4c00h
    int 21h
code ends
end start
94(十六进制的 5E)+ 183(十六进制的 B7)= 277(十六进制的 115),但由于第一个cbw,AX = FFB7而不是B7。但是,第二个数字仍如预期的那样AX = 5E ,因此将两个结果相加为AX = 15和CF = 1。
我找到了这个关于 CBW 的页面,其中指出“如果设置了 AL 的符号位(第 7 位),此指令会将 AH 设置为 0FFh”,这是我的情况,因为B7是二进制的1011 0111。
我错过了什么吗?我应该以某种方式解释进位标志吗?为什么我没有获得115 (hex)?
提前致谢。