# Assembler, suma y mostrar en pantalla



## martin0310 (Sep 14, 2015)

Hola. Bueno, como dice le título.
Quiero ver si me pueden ayudar con ensamblador, soy nuevo en esto y tengo unas dudas.
Primero empecé con el depurador y ahora probando en ensamblador, me empecé a confundir.
Lo que quiero hacer, es realizar alguna cuenta, y después mostrarla en pantalla.

¿En el caso de querer mostrar en pantalla una cadena, lo puedo hacer así?


```
.MODEL SMALL
.CODE
Inicio:
 mov ax,@data
 mov ds,ax
 mov dx,offset cadena

mov ah,09
int 21h
mov ah,4ch
int 21h

.Data
 cadena db 'mensaje del programa.$'
.Stack
End inicio
```
Ahora, en depuración cuando hacía algunas operaciones, directamente ponía; add, sub, mul, div.
¿En ensamblador puedo hacerlo así?
Porque leyendo vi sobre los procedimientos.

Por ejemplo:

```
Suma Proc near
                mov bx,0
                mov bl,ah
                mov ah,0
                add bx,ax
                ret
Suma ENDP
```

Lo único que se hizo fue sumar AH y AL.

En sí, lo que quiero hacer, es realizar alguna cuenta y mostrarlo.

Acá mi pregunta:
¿Puedo usar lo que hice al principio, de mostrar una cadena y hacerlo como lo hacía directamente en el depurador (add, sub, etc.) o tengo que declarar si  o si un procedimiento como hice en la segunda parte?

 ¿Y si tengo que declararlo si o si, cómo quedaría?


----------



## Miembro eliminado 356005 (Sep 15, 2015)

Antes hay que decir de qué procesador estamos hablando y en qué sistema operativo estamos, ya que el trabajo de sacar algo por pantalla suele hacerlo él.


----------



## martin0310 (Sep 15, 2015)

Si, no aclaré, es el 8086.
La cosa es así, cuando empecé a estudiar, empezamos por el depurador, después vimos muy poco de ensamblador y hay cosas que no sé si se pueden hacer en ensamblador de las que hacía en el depurador.

Lo que quiero es realizar alguna cuenta y mostrarlo en pantalla. (Hacerlo en ensamblador)


----------



## Miembro eliminado 356005 (Sep 16, 2015)

Tienes, básicamente, dos opciones:

La primera es saber la dirección de E/S de la tarjeta de vídeo, y mandarle los bytes con los códigos ASCII (o la codificación que se maneje) resultado de la operación.

La otra opción es convertir el resultado de la cuenta en una cadena de caracteres, y usar una llamada al sistema o BIOS para que se encargue él de hacer la presentación. Es decir: como lo muestras en tu código de ejemplo. En ese caso debes aprender *esas llamadas*.


----------

