Vous êtes sur la page 1sur 3

.

model small
.stack 100h
.data
numero db "Introduce un numero de una cifra: $" ;Mensaje que solicita ingresar u
n numero
numeromuestra db "Numero: $" ;Mensaje de numero
numeroresultado db "Resultado: $" ;Mensaje de resultado
v1 db 0 ;Variable para almacenar el numero
salto db " ",10,13,'$' ;Salto de linea
Array db 18 dup(' '), '$' ;Arreglo usado para los -
Array1 db 9 dup(' '), '$' ;Arreglo utilizado para los +
.code
mov ax,@data
mov ds,ax
;Imprimir mensaje
mov ah,09h ;servicio para imprimir mensajes
lea dx,numero
int 21h
;Leer el digito
mov ah,01h ;servicio para leer el numero ingresado
int 21h
sub al,30h ;Convertimos de ASCII para poder utilizar el numero
mov v1,al ;Almacenamos el numero ya convertido en una variable

;salto
mov ah,09h
lea dx,salto
int 21h
;Imprimir mensaje numero
mov ah,9
lea dx,numeromuestra
int 21h
;imprimir
mov dl,v1 ;Movemos nuestro numero a un registro
add dl,30h ;Convertimos nuevamente a ASCII para poder imprimirl
o
mov ah,02h ;servicio para imprimir el numero
int 21h
;salto
mov ah,09
lea dx,salto
int 21h
;Imprimir mensaje resultado
mov ah,9
lea dx,numeroresultado
int 21h
;-----------------------------------------------
;Comenzamos a realizar los arreglos para + y -
;Llenado del arreglo con -
mov al,v1 ;Almacenamos nuestro numero en un registro
mov bh,'-' ;Seleccionamos el signo con el que sera llenado
el arreglo
mov ah,2 ;Numero por el cual mutiplicaremos
mul ah ;Multiplicacion alxah
mov cl,al ;Almacenamos el resultado en una variable
mov ch,18 ;Almacenamos el numero 18 en un registro
;ya que es el tamano maximo del arreglo
sub ch,cl ;Restamos del tamano maximo del arreglo el numer
o ingresado por 2
mov dl,ch ;Movemos el resultado de la resta a un registro
de 8 bits
mov si,dx ;Utilizamos el numero que movimos para marcar el
punto
;inicial en el arreglo
llenarconmenos:
dec al ;Usamos el valor del numero ingresado como conta
dor
mov Array[si],bh ;Movemos el signo escogido dentro del arreglo
inc si ;Vamos recorriendo por el arreglo
cmp al,0 ;Comparamos si el contador es 0
je imprimirr ;Cumplida la comparacion salimos del ciclo
loop llenarconmenos
;Imprimir el arreglo
imprimirr:
lea dx, Array
mov ah,9
int 21h
;----------------------------------------------------
;Llenado del arreglo con +
mov al,v1 ;Movemos nuestro numero a un registro
mov bl,'+' ;Colocamos el signo con el cual el arreglo sera
llenado
mov si,0 ;Marcamos el inicio del arreglo en 0
llenarconmas:
lazo:
dec al ;Comenzamos a decrecer el contador
mov Array1[si],bl ;Movemos el signo elegido dentro del arreclo
inc si ;Incrementamos la posicion en el arreglo
cmp al,0 ;Comparamos el contador con 0
je imprimir ;Salimos una vez cumplida la comparacion
loop lazo
loop llenarconmas
;Imprimir el arreglo
imprimir:

lea dx, Array1


mov ah,9
int 21h

Vous aimerez peut-être aussi