Myself*
Power Member
Boa noite...
Ao executar o programa em assembly, da me o erro divide overflow. Não é problema de divisão por 0 nem o resultado excede os 8 bits. Abaixo, segue o codigo onde está o erro.
Nota: o valor de ax é 7 e o erro aparece na linha onde está idiv.
Ajudem-me, por favor!
Ao executar o programa em assembly, da me o erro divide overflow. Não é problema de divisão por 0 nem o resultado excede os 8 bits. Abaixo, segue o codigo onde está o erro.
Código:
imprime:
mov di, c_a ; di = endereço alvo
mov cl, 0x30 ; cl = '0'
mov ax, [copia_anterior] ; ax = valor a se conv
converte:
mov bl, 10
idiv bl ; divide por 10 -> AL = ax/10 || AH = ax%10
add ah, cl ; ah = ax%10 + '0'
mov byte[di], ah ; guarda o 1o caracter
mov ah, 0 ; força ah a 0 pra aproveitar o valor de al usando assim ax
inc di ; di ++
cmp al, 0
jg converte
mov byte[di], 0 ; termina a String (guarda '\0')
; Agora vamos colocar a String pela ordem correcta
mov si, c_a ; si = inicio da String || di já esta no fim da String
reverse:
cmp si, di
jae endReverse
mov bl, byte[si] ; aux = [si]
mov bh, byte[di]
mov byte[di], bl
mov byte[si], bh
inc si ; si ++
dec di ; di --
jmp reverse
endReverse:
Nota: o valor de ax é 7 e o erro aparece na linha onde está idiv.
Ajudem-me, por favor!