Preciso fazer um programa em assembly para achar o complemento a dois de um número de 2 bytes.
Escrevi o seguinte código:
Os números ficam armazenados no endereço 41H (mais significativo) e 40H
MOV A, 40H ;move o valor do end. 40 para o acumulador A
CPL A ;inverte os bits do valor em A
ADD A, #1B ;soma 1 ao valor em A
MOV 30H, A ;move o valor de A para o end. 30
MOV A, 41H ; move o valor do end. 41 para o acumulador A
CPL A ; inverte os bit do valor em A
JC CARRY
CARRY: ADD A, #1B
MOV 31H, A ;move o valor de A para o end. 31
O problema é a instrução JC CARRY, ela deveria somar 1 ao acumulador A somente se o carry fosse 1, porém está somando 1 sempre. Onde estou errando?
Escrevi o seguinte código:
Os números ficam armazenados no endereço 41H (mais significativo) e 40H
MOV A, 40H ;move o valor do end. 40 para o acumulador A
CPL A ;inverte os bits do valor em A
ADD A, #1B ;soma 1 ao valor em A
MOV 30H, A ;move o valor de A para o end. 30
MOV A, 41H ; move o valor do end. 41 para o acumulador A
CPL A ; inverte os bit do valor em A
JC CARRY
CARRY: ADD A, #1B
MOV 31H, A ;move o valor de A para o end. 31
O problema é a instrução JC CARRY, ela deveria somar 1 ao acumulador A somente se o carry fosse 1, porém está somando 1 sempre. Onde estou errando?