По этой команде к содержимому регистра АХ прибавляется содержимое регистра ВХ, результат сложения записывается в регистр АХ.
AX
10H
00010000B
BX
04H
00000100B
AX
14H
00010100B
Вычитание чисел выполняется командой SUB:
SUB AX,BX
По этой команде из содержимого регистра AX вычитается содержимое регистра BX, результат вычитания записывается в регистр AX.
00000100B
AX
10H
11111011B
00010000B
BX
04H
1B
11111100B
AX
0СH
11111100B
00001100B
Двоичные числа могут кодироваться в беззнаковом формате и в знаковом формате. В беззнаковом формате в прямом двоичном коде представляются положительные числа, отрицательные числа кодируются в дополнительном двоичном коде.
В знаковом формате старший седьмой бит в байте является не числовым, а знаковым. Если знаковый бит имеет значение 0, то число считается положительным. Если знаковый бит имеет значение 1, то число считается отрицательным. Остальные 7 младших бит в байте являются числовыми и представляют либо положительное число в прямом двоичном коде, либо отрицательное число в дополнительном двоичном коде.
Беззнаковый формат
Знаковый формат
Десятичное
Двоичное
Десятичное
Двоичное
+1
0000 0001
+1
0.000 0001
+2
0000 0010
+2
0.000 0010
+5
0000 0101
+5
0.000 0101
+11
0000 1011
+11
0.000 1011
+121
0111 1001
+121
0.111 1001
+127
0111 1111
+127
0.111 1111
+137
1000 1001
-119
1.000 1001
+246
1111 0110
-10
1.111 0110
+249
1111 1001
-7
1.111 1001
+252
1111 1100
-4
1.111 1100
Если при сложении знаковых чисел полученный результат выходит за пределы диапазона -128 --- +127, то возникает ошибка сложения.
Двоичное
Десятичное
+121
+11
-124
Ситуация, при которой в результате сложения двоичных чисел в полученной сумме появляется единица в старшем седьмом бите называется - переполнение. При возникновении переполнения результат сложения знаковых чисел будет неправильным.
Двоичное
Десятичное
-10
-119
+127
Ситуация, при которой в результате сложения двоичных чисел в полученной сумме единица вытесняется за пределы байта, т.е. образуется 9-битовое число, называется – перенос. При возникновении переноса результат сложения знаковых чисел будет неправильным.
Двоичное
Десятичное
-4
+5
+1
Если при сложении знаковых чисел происходит и переполнение и перенос, то результат сложения получается правильным.
Двоичное
Десятичное
+121
+11
+132
Если при сложении беззнаковых чисел происходит переполнение, то результат получается правильным.
Двоичное
Десятичное
+246
+137
+127
Если при сложении беззнаковых чисел, происходит перенос, то результат получается неправильным.
Двоичное
Десятичное
+252
+5
+1
Если при сложении беззнаковых чисел происходит и переполнение и перенос, то результат получается неправильным.
В тех примерах, где получается неправильный результат, необходимо исключить ситуацию переноса или переполнения. Для этого увеличивают разрядность двоичных чисел, делая числа двухбайтовыми.
Для умножения беззнаковых чисел используется команда MUL.
Для умножения знаковых чисел используется команда IMUL.
Для деления беззнаковых чисел используется команда DIV.
Для деления знаковых чисел используется команда IDIV.