因此,我正在创建一个简单的8086程序,该程序计算两个两位数字的和:
.model small
.data
first db 0
second db 0
sum db 0
.stack
.code
mov ax, data
mov ds, ax
mov es, ax
mov ah, 1
int 21h
sub al, 48d
mov bl, 10
mul bl
mov first, al
mov ah, 1
int 21h
sub al, 48d
add first, al
mov ah, 1
int 21h
sub al, 48d
mov bl, 10
mul bl
mov second, al
mov ah, 1
int 21h
sub al, 48d
add second, al
mov al, first
add al, second
mov sum, al
但是,当我特别检查数字的值时,总和给了我一个负数,因为它是有符号值。例如,如果第一个数字为99,第二个数字为98,则总和为-59。
有人能解决这个问题吗?
答案 0 :(得分:0)
由于每个数字都使用一个字节,因此每个数字可以具有2 ^ 8 = 256个不同的值。因此,有符号数必须在-128到127之间。当加法结果大于127时,它将表示为相应的负数。您应该使用16位或更多的word来解决此问题。