Ensamblador - emu8086

   
Vista:

emu8086

Publicado por Mimia (1 intervención) el 23/01/2011 20:12:40
Hola! Necesito ayuda en este codigo de emu8086, se supone que deberia sumar dor numeros de un digito pero no se por que al sumar dos numeros que el resultado de en dos digitos me muestra un caracter no valido o coherente con la tabla ascii y su respectivo valor.
Este es el codigo:


.model small
.stack
.data
var1 db ?
.code
.startup
mov ah,01h ;leer caracter desde el teclado
int 21h ;lee primer caracter

sub al,30h ;resto 30H (48Dec) para obtener el numero
mov var1,al ;lo guardo en variable var1

mov ah,01h ;leer caracter desde el teclado
int 21h ;leo el segundo caracter
sub al,30h ;resto 30H (48Dec) para obtener segundo valor
add al,var1 ;realizo la suma de los dos valores

mov dl,al ;pongo en dl el numero a imprimir
add dl,30h ; agrego 30 (48Dec) para obtener el caracter
mov ah,02h ;funcion para imprimir un caracter en pantalla
int 21h
.exit
end

Gracias =)
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:emu8086

Publicado por José Antonio López Cano (5 intervenciones) el 05/02/2011 19:05:59
El siguiente código compila con masm. Te servirá para imprimir enteros de 2 cifras. Espero que te sea de ayuda:

.model small
.stack
.data
var1 db ?
.code
.startup
mov ah,01h ;leer caracter desde el teclado
int 21h ;lee primer caracter

sub al,30h ;resto 30H (48Dec) para obtener el numero
mov var1,al ;lo guardo en variable var1

mov ah,01h ;leer caracter desde el teclado
int 21h ;leo el segundo caracter
sub al,30h ;resto 30H (48Dec) para obtener segundo valor
add al,var1 ;realizo la suma de los dos valores

;AQUI EMPIEZO YO:
xor ah, ah ;Pongo el byte de mayor peso a cero.
mov bh, 10 ;Voy a dividir entre 10.
div bh
mov bh, ah ;Guardo el resto de la division.



cmp al, 0 ;Si el resultado es cero, estamos ante un numero de una sola cifra.
je segund ;Por lo tanto, no imprimo la primera ya que es un cero.

mov dl,al ;pongo en dl el numero a imprimir
add dl,30h ; agrego 30 (48Dec) para obtener el caracter
mov ah,02h ;funcion para imprimir un caracter en pantalla
int 21h

;Imprimo el resto de la division:
segund:
mov dl, bh
add dl, 30h
mov ah, 02h
int 21h


.exit
end
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:emu8086

Publicado por Ferofichas ffandress@hotmail.com (3 intervenciones) el 08/11/2011 17:16:17
favor necesito que alguien me ayude con un programa en emu 8086.
que revisiva un numero de 3 digitos por teclado y me diga si es par o impar...??
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:emu8086

Publicado por Oscar Eduardo (5 intervenciones) el 04/07/2013 22:42:53
hola si no has buscado como hacerle para 3 numeros te lo anexo


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
CICLO2: CMP AL, 99 ;compara AL con 99
JG SIGUE2                ;si es mayor que 99 se va a la etiqueta SIGUE2
 
        AAM
        MOV U, AL
        MOV D, AH
        MOV AH, 02H
        MOV DL, D
        ADD DL, 30H
        INT 21H
        MOV DL, D
        ADD DL, 30H
        INT 21H
        JMP ALLA
 
SIGUE2: AAM
        MOV U, AL
        MOV AL, AH
        AAM
        MOV C,AH
        MOV D,AL
        MOV AH, 02h
        MOV DL , C
        ADD DL, 30H
        INT 21H
        MOV DL, D
        ADD DL, 30H
        INT 21H
        MOV DL, U
        ADD DL, 30H
        INT 21H
 
ALLA: MOV AH,07H
      INT 21H
      RET




hice la condicion del ciclo para que no pasara a mas :D jejeje asi cuando metas numeros mayores que 2 digitos no haga esa parte y se pase a la de 3 digitos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:emu8086

Publicado por carlos (1 intervención) el 17/09/2013 16:02:23
pero a que falto declarar las variables U;D;C para uqe funcione
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar