;Conversión de octal a binario
;La ventaja principal del sistema de numeración octal es la facilidad con que se
;puede realizar la conversión entre números binarios y octales. La conversión de octal a binario
;se lleva a cabo conviniendo cada dígito octal en su equivalente binario dc 3 bits.
;Por medio de estas conversiones, cualquier número octal se conviene a binario,
;convirtiéndolo dc manera individual. Por ejemplo, podemos convertir 516, a binario de la siguiente manera:
; 5 1 6
; 101 001 110
;entonces:
;516(8) = 101 001 110(2)
;Conversi6n de binario a octal.-
;La conversión de enteros binarios a octales es simplemente la operación inversa del proceso anterior. Los bits del número binario se agrupan en conjuntos de tres comenzando por el LSB. Luego, cada grupo se convierte a su equivalente octal. Por ejemplo:
;111 001 101 110
; 7 1 5 6
;entonces:
;111001101110(2) = 7156(8)
.model small
.data
mens db 'Introduce el numero octal',0dh,0ah,'$'
merr db 'Numero no valido',0dh,0ah,'$'
row db 00
octal1 db ?
octal2 db ?
octal3 db ?
bin1 db ?
bin2 db ?
bin3 db ?
.code
inicio:
mov ax,@data
mov ds,ax
push ds
pop es
call clear
call q20curs
mov ah,09h
lea dx,mens
int 21h
mov ah,07h
int 21h
cmp al,37h
ja erros
mov ah,02h
mov dl,al
int 21h
sub al,30h
mov octal1,al
mov ah,07h
int 21h
cmp al,37h
ja erros
mov ah,02h
mov dl,al
int 21h
sub al,30h
mov octal2,al
mov ah,07h
int 21h
cmp al,37h
ja erros
mov ah,02h
mov dl,al
int 21h
sub al,30h
mov octal3,al
jmp binario
erros:
mov ah,09h
lea dx,merr
int 21h
jmp salir
binario:
mov ah,02h
mov dl,0dh
int 21h
mov ah,02h
mov dl,0ah
int 21h
sub bx,bx
sub ax,ax
mov al,octal1
call convertir
sub bx,bx
sub ax,ax
mov al,octal2
call convertir
sub bx,bx
sub ax,ax
mov al,octal3
call convertir
salir:
mov ax,4c00h
int 21h
;....Limpia pantalla...................
clear proc near
mov ax,0600h ;limpia pantalla
mov bh,07h ;atributo: fondo negro -letra blanca
mov cx,0000h ;esquina superior izquierda: renglon-columna
mov dx,314fh ;esquina inferior derecha: renglon-columna
int 10h ;interrupcion del BIOS
clear endp
;....Coloca el cursor...................
q20curs proc near
mov ah,02h ;petición
mov bh,00 ;para colocar el cursor
mov dh,row ;renglon
mov dl,00 ;columna
int 10h
ret
q20curs endp
convertir proc near
mov bx,0002
div bl
or ah,30h
mov bin1,ah
mov ah,00h
div bl
or ax,3030h
mov bin2,ah
mov bin3,al
xor ax,ax
mov dl,bin3
mov ah,02h
int 21h
mov dl,bin2
mov ah,02h
int 21h
mov dl,bin1
mov ah,02h
int 21h
ret
convertir endp
end inicio