Está en la página 1de 13

INFOGRAFÍA

CÓDIGO QUE PERMITA LEER UN NÚMERO DE UN DIGITO POR TECLADO Y


DETERMINAR SI EL NÚMERO ES PAR, IMPAR O CERO

;ARQUITECTURA DE COMPUTADORES
;MARIA ANGELICA LEYVA GONZALEZ

.model small ; define el tipo de memoria que se utilizara


.stack 64 ; es para darle el grandor a la pila
.data

msn1 db 13,10, "Por favor ingrese un numero: ", '$'


msn2 db 13,10, "El numero ingresado es par ", '$'
msn3 db 13,10, "El numero ingresado es impar ", '$'
msn4 db 13,10, "El numero ingresado es cero ", '$'

var1 db 0 ; definimos variables

.code

inicio proc far ; iniciamos procedimiento

mov ax, @data ; direccionamiento de segmentos


mov ds, ax

; limpiar pantalla

mov ah, 00
mov al, 03h
int 10h
mov ah, 09h
lea dx, msn1
int 21h

;leer y convertir el numero para verlo en pantalla

mov ah,01h
int 21h
sub al, 30h ; para convertir en ascii y visualizarlo

mov var1, al
int 21h
sub al, 30h
mov ah, var1
mov bl, var1
cmp bl,1

JP PAR ; si es par
JNP IMPAR ; si es impar
Jz CERO ; es cero

;cuando es par que muestre en el msn2


PAR:
mov ah,09h
lea dx, msn2
int 21h
jmp salir
;cuando es impar mostrar el msn3

IMPAR:
mov ah,09h
lea dx, msn3
int 21h
jmp salir
;cuando es cero mostrar el msn4
CERO:
mov ah,09h
lea dx, msn4
int 21h
jmp salir
; salir del programa
salir:
mov ax, 4c00h
int 21h
inicio endp
end inicio

ret
CÓDIGO QUE PERMITA REALIZAR UNA MULTIPLICACIÓN DE DOS
NÚMEROS A TRAVÉS DE SUMAS SUCESIVAS Y UNA POTENCIA A TRAVÉS
DE MULTIPLICACIONES SUCESIVAS (PARA ELLO DEBE UTILIZAR
INSTRUCCIONES TIPO BUCLE).

;MARIA ANGELICA LEYVA GONZALEZ


;ARQUITECTURA DE COMPUTADORES
.model small ;Modelo de memoria pequeño
.stack 64 ;Tamaño de la pila
.data ;Declaración de datos

msg1 db "Por favor ingrese el primer numero: " , '$'


num1 db 0

msg2 db "Por favor ingrese el segundo numero: " , '$'


num2 db 0

msg3 db "La multiplicacion es: ",'$'


res1 db 00
msg4 db "La potencia es: ",'$'
res2 db 00

salto db "",13,10,'$'

.code ;Declaracion de codigo

inicioproceso: ;Inico de procedimiento

mov ax, @data ;Movimiento de direccion del segmento de datos a imprimir el registro
ax
mov ds, ax ;Movimiento del contenido de ax a ds para poder visualizarse

mov ax, 00 ;Establece modo de video


mov al, 03h ;Modo de video
int 10h ;Interrumpir

;Mostrar mensaje msg1

mov ah, 09 ;Se visualiza pantalla


lea dx, msg1 ;Mensaje que se visualiza
int 21h ;Interrumpir

;Leer y guardar número 1 en la variable

mov ah, 01h ;Funcion de entrada de caracter


int 21h ;Interrumpir
sub al, 30h ;Se resta el contenido de al a la variable num1
mov num1, al ;Movimiento de contenido de al a la variable num1

;salto
mov ah, 09 ;Funcion para visualizar en pantalla
lea dx, salto ;Nueva linea
int 21h ;Interrumpir

;Mostrar mensaje msg2

mov ax, @data ; Movimiento de direccion de segmento datos a imprimir al registro ax


mov ds, ax ; Movimiento de contenido de ax a ds
mov ah, 09 ; Código a visualizarse
lea dx, msg2 ; Dato que se visualiza
int 21h ; Interrumpir

;Leer y guardar num2 en la variable

mov ah, 01h ; Función para leer caracter por teclado


int 21h ; Interrumpir
sub al, 30h ; Resta 30 hexadecimal al caracter para convertir el número de ascit
mov num2, al ; Movimiento del contenido al a la variable num2

;salto
mov ah, 09 ; Función para visualizar en pantalla
lea dx, salto ; Nueva linea
int 21h ; Interrumpir

;loop mult
mov cl, num2 ; Movimiento del valor num2 al registro contador cl para el bucle
mov al, 0 ; Inicia al con valor = 0
mov bl, num1 ; Movimiento del contenido num1 al registro bl para la operación
mult: ; Inicio biucle mult
add al, bl ; Unir el valor del registro dl a al, inicia en 0
loop mult ; Decrementa cl en cada ciclo hasta cl = 0
mov res1, al ; Movimiento del resultado de al a res1

;loop pot
mov cl, num2 ; Movimiento de valor num2 al registro contador cl para controlar el
bucle
mov al, 1 ; Inicia al con valor = 1
mov bl, num1 ; Carga bl con valor que contiene num1
pot: ; Inicio bucle pot
mul bl ; Intrucción que multiplica bl con al = 1 y se guarda en al el resultado
loop pot ; Decrementa cl en cada ciclo hasta cl = 0
mov res2, al ; Movimiento del resultado de al a rest 2

; Mostrar mensaje msg3


mov ax, @data ; Movimiento de dirección de segmento de datos a imprimir el al
registro ax
mov ds, ax ; Movimiento de contenido de ax a ds para visualizarse
mov ah, 09 ; Código para mostrar por pantalla
lea dx, msg3 ; Dato que se visualiza
int 21h ; Interrumpir

;Imprimir res1
mov dl, res1 ; Movimiento dl al res1
add dl, 30h ; Movimiento a dl 30 hexadecimal para convertir a ascit
mov ah, 02h ; Función para visualizar por pantalla
int 21h ; Interrumpir

;salto
mov ah, 09 ; Función para visualizar en pantalla
lea dx, salto ; Nueva linea
int 21h ; Interrumpir

; Mostrar mensaje msg4


mov ax, @data ; Movimiento de dirección de segmento de datos a imprimir al registro
ax
mov ds, ax ; Movimiento de contenido de ax a ds para poder visualizarse
mov ah, 09 ; Código para visualizar en pantalla
lea dx, msg4 ; Dato que se visualiza
int 21h ; Interrumpir

; Imprimir res2
mov dl, res2 ; Movimiento de dl a res2
add dl, 30h ; Movimiento de dl 30 hexadecimal para convertir ascit
mov ah, 02h ; Función para visualizar por pantalla
int 21h ; Interrumpir

fin:
int 21h ; Interrumpir
mov ax, 4c00h

endp
END

También podría gustarte