elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Únete al Grupo Steam elhacker.NET


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  ASM (Moderador: Eternal Idol)
| | | |-+  DUDA CON XOR Y TECLADO
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: DUDA CON XOR Y TECLADO  (Leído 2,710 veces)
D4P50N

Desconectado Desconectado

Mensajes: 4


Ver Perfil
DUDA CON XOR Y TECLADO
« en: 23 Febrero 2013, 16:37 pm »

Hola gente, buenos dias, tengo una duda con un código que es muy básico sin embargo quisiera entender porque actua como actua.

En C, cuando ingresabas un caracter al programa c tomaba ese caracter del buffer y dejaba el caracter nulo de terminación osea \0 eso en ciertas ocasiones ocasionaba que c pensara que en el buffer ya estaba ingresado una caracter y lo tomaba, obviamente para ello tenia que limpiarse con anticipación.

Bueno yo estoy aprendiendo ensamblador y sucede que cuando voy a dividir un numero que ha sido entrado desde el teclado, siempre ocurre que en el resultado hay 5 unidades más. Luego investigue en internet y encontre un código similar al mio pero que funcionaba de maravilla lo estuve estudiando y la diferencia que encontre es que tenia la linea para limpiexa del registro de ax:

xor ax,ax

Se me vino a la mente la posibilidad de que ocurriera algo similar en ensamblador, estuve investigando pero no encuentro nada que haga referencia al teclado, entradas, buffer o algo parecido a lo que imagino. Alguien podría explicarme que sucede realmente?, les dejo una copia de mi código y una copia del código que encontre en internet.


Código que encontre en internet:

Código:
.model small
.stack 100
.data
msj1 db 'Numero 1: ','$'
msj2 db 13,10,'Numero 2: ','$'
msj6 db 13,10,'Division: ','$'
var1 db ?
var2 db ?
.code
.startup
mov ah,09h
lea dx, msj1 ;desplegar numero 1:
int 21h

mov ah,01h;leer caracter desde el teclado
int 21h;lee primer caracter
sub al,30h ;restar 30h para obtener el numero
mov var1,al ;lo guardo en var1
mov ah,09h
lea dx, msj2 ;desplegar numero 2:
int 21h

mov ah,01h;leer caracter desde el teclado
int 21h;lee primer caracter
mov bl, al ;mover a bl
;*****************DIVISION
xor ax,ax ;limpiamos el registro ax.
mov al,var1
div bl ; divide AX/BX el resultado lo almacena en AX, el residuo queda en DX
mov dl, al
add dl,30h
mov ah,02h
int 21h
.exit
end

Mi código:


Código:
.model small
stack 100h
.data
num1 db 13,10,'Numero 1: $'
num2 db 13,10,'Numero 2: $'
resultado db 13,10,"Resultado:","$"
divisor db 0
dividendo db 0
.code
.startup
mov ah,09h
lea dx, num1 ;desplegar numero 1:
int 21h
mov ah, 01h
int 21h
mov dividendo, al
mov ah,09h
lea dx, num2
int 21h
mov ah, 01h
int 21h
mov divisor, al
mov bl, al
div bl
add al, 48
mov dl, al
mov ah, 02h
int 21h
mov ah,4ch
int 21h
end


En línea

limbertx

Desconectado Desconectado

Mensajes: 2


Ver Perfil
Re: DUDA CON XOR Y TECLADO
« Respuesta #1 en: 24 Febrero 2013, 18:21 pm »

holas somos 2 aprendiendo xD
soy nuevo en esto
pero si no estoy mal
antes de dividir tienes que limpiar ax ya que el resultado estara ahi.
asi que al hacer xor ax, ax  lo que hace es
colocar ax=0
asi me dijeron que es mejor hacer xor ax, ax
que usar mov ax, 0x0

ademas por lo general yo hago el xor eax, eax
y cuando dices que hay 5 numeros demas , "debe de ser basura que no haz limpiado antes de hacer la operacion DIV"
espero no estar mal.  xD


En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
duda con pulsasiones en el teclado
Programación Visual Basic
vivachapas 2 1,350 Último mensaje 4 Noviembre 2007, 04:24 am
por vivachapas
Duda conexion teclado externo PS2 a portatil
Hardware
Zurki 3 3,729 Último mensaje 8 Agosto 2012, 15:51 pm
por Zurki
Duda con el teclado
Hardware
Javi Metal 4 3,428 Último mensaje 15 Junio 2020, 11:09 am
por Javi Metal
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines