Programación de una máquina de cálculo

Computación. Desarrollo de aplicaciones informáticas. Lenguaje ensamblador. Diseño modular. Algoritmos. Operaciones aritméticas

  • Enviado por: Sigmar
  • Idioma: castellano
  • País: Bolivia Bolivia
  • 30 páginas
publicidad
publicidad

LENGUAJE EMSAMBLADOR

MODULO I

SIGEDY - 2004

Potosí - Bolivia

S U M A R I O

1.- INTRODUCCION Pag.2

2.- DEFINICION DEL PROBLEMA Pag.3

3.- OBJETIVO Pag.6

4.- ANALISIS Y DISEÑO Pag.7

4.1.- DISEÑO MODULAR Pag.7

4.1.- DISEÑO DETALLADO Pag.18

5.- PASOS DE CORRIDO Pag.20

6.- CONCLUSIONES Pag.24

7.- BIBLIOGRAFIA Pag.25

1.- INTRODUCCION.

El presente documento contiene las especificaciones del primer Modulo de la maquina de calcular a realizar en la asignatura de TALLER DE PROGRAMACION EN BAJO NIVEL cuya docencia se imparte durante el quinto semestre de la carrera de Informática.

El programa realizado en el modulo I tiene la finalidad de la simulación de una maquina de Calcular sencilla que tiene las operaciones más básicas que son:

  • Suma

  • Resta

  • Producto

  • División

  • Raíz cuadrada

Para este fin se hace uso del las interrupciones int 16h, int 10h, int 21h

En el programa se esta queriendo resolver mediante llamadas a funciones de suma, resta, multiplicación, división y raíz cuadrada, las mismas que trabajan juntamente con la computadora en sistema de numeración hexadecimal, cuyos resultados seran obtenidos en este sistema y convertidos a decimal para su visualización. El cual fue motivo del estudio de la conversión del sistema hexadecimal al sistema decimal.

En el programa se quiere resolver mediante la introducción de datos introducidos por teclado para luego realizar la operación requerida y visualizar la respuesta

2.- DEFINICION DEL PROBLEMA

  • SELECCIÓN DEL TEMA

AREA DE INTERES.- se llego a tomar el tema de una simulación de una maquina calculadora para conocer el funcionamiento interno de una maquina de calcular, que operaciones, conversiones realiza y como lo realiza.

NECESIDAD.- Es necesario tener una maquina de calcular, por lo menos una sencilla que nos ayude a realizar operaciones, la cual nos ayude a trabajos en operaciones matemáticas y también otros requieren de maquinas científicas las cuales permitan cumplir sus necesidades de su trabajo, sabiendo que una necesidad actual es la utilización de la PC, es que utilizamos esta maquina para la codificación y construcción de la computadora.

¿Como desarrollar la simulación de una maquina de calcular, haciendo uso de las instrucciones del Lenguaje Ensamblador?

R.- El desarrollo de una maquina de calcular se lo realiza mediante uso de instrucciones de un lenguaje ensamblador, tales la suma, resta, etc, haciendo uso de las diferentes interrupciones, como: INT 10h, INT 16h, INT 21h

- OBJETO DE ESTUDIO

Nos referimos al objeto de estudio de una a maquina de calcular con el hecho de tenerla a mano para realizar diferentes funciones matemáticas.

NOVEDOSO. Lo novedoso para el proyecto sigedy es la forma como realizar operaciones con punto decimal ya que solo aprendimos en materia INF -351 solo funciones enteras.

ANTECEDENTES. Todos conocemos una maquina de calcular ya sea una normal o una científica a la cual la utilizamos para diferentes operaciones y/o necesidades en el trabajo, pero no nos conformamos en utilizar la calculadora ya que tenemos que saber como se realizan las operaciones y funciones internas.

PLANIFICACIÓN DEL TRABAJO DEL PROYECTO

TALLER DE PROGRAMACIÓN I N F - 5 3 5

CARRERA DE INFORMATICA

SIGMAR

EDWIN

Nota el programa se realizo los primeros ocho días por separado el cual se investigo de diferentes formas por cada uno.

1

7 de Abril

Planificación de para el proyecto

2

SIGMAR 8 , 9 , 10 Abril

EDWIN 12 , 13 , 14 Abril

Estudio de libros sobre el tema

3

SIGMAR 11 , 12 , 13 , 14 Abril

EDWIN 9 , 10 , 11 Abril

Investigación en Internet

4

15 de Abril

Inicio de actividades grupal y revisión del material de cada uno con la información recabada de cada persona que obtuvo en todos los días que pasaron.

5

16 de Abril

Implementación de los algoritmos para realizar el programa del proyecto.

6

17 de Abril

Realización del programa

7

Solución a los problemas (en el programa)

8

Corrección de los errores en el programa

3.- OBJETIVO.

El objetivo de este proyecto SIGEDY (Simulación de una maquina de Calcular) es realizar las operaciones básicas de una calculadora en lenguaje de bajo nivel, teniendo como reto la introducción de valores por teclado y la obtención de resultados, con la dura tarea de realizar conversiones en el transcurso del programa de un sistema a otro, ya sea hexadecimal, binario y decimal y viceversa.

4.- ANALISIS Y DISEÑO.

4.1.- DISEÑO MODULAR.

PSP mov ah,06

call borrador mov al,00

CS: call caratula Borrador mov bh,09h

call digito mov cx,00

ret mov dx,184fh

int 10h

ret

call cuadro

mov dx,1400h

call cursor

lea dx,mensaje0

call desplegar

mov dx,1500h

call cursor

lea dx,mensaje1

call desplegar

mov dx,1600h

call cursor

lea dx,mensaje2

call desplegar

mov dx,1700h

call cursor

lea dx,mensaje3

call desplegar

mov dx,1427h

call cursor

lea dx,mensaje4

call desplegar

Carátula mov dx,1527h

call cursor

lea dx,mensaje5

call desplegar

mov dx,1627h

call cursor

lea dx,mensaje6

call desplegar

mov dx,1727h

call cursor

lea dx,mensaje7

call desplegar

mov dx,1815h

call cursor

lea dx,mensaje8

call desplegar

mov dx,1838h

call cursor

lea dx,mensaje9

call desplegar

ret

mov cx,00 . mov dx,esa

mov esa,0117h

mov dx,esa

mov fila,17

mov columna,26

call cursor

mov al,223

mov cl,columna

call escribir

call vertical

call cuadro2

cuadro2 mov al,220

mov cl,columna

call escribir

mov dx,esa

add dl,columna

call cursor

call vertical

ret

mov cx,1

mov dx,esa

call cursor

Cuadro mov al,219

call escribir

add dh,fila

call cursor

mov al,219

call escribir

call esquinas

Esquinas

add dl,columna

call cursor

mov al,219

call escribir

sub dh,fila

call cursor

mov al,219

call escribir

ret

mov cx,00

mov dx,esa

mov esa,0318h

mov dx,esa

mov fila,02

mov columna,24

call cuadro2

call esquinas ret

mov ah,02 mov al,fila

Cursor: mov bh,0 push ax

int 10h add fila,dh

ret mov al,219

mov cx,01

siga1:

call escribir

Vertical: inc dh

call cursor

mov ah,0ah cmp fila,dh

Escribir: mov bh,00 jne siga1

int 10h pop ax

ret mov fila,al

ret

mov ah,09

Desplegar: int 21h

ret

mov dx,041eh mov ah,02

call cursor Cursor: mov bh,0

mov bl,74h int 10h

call teclado ret

otro:

call leer2

cmp al,'S'

jz aqui

cmp al,'E' mov ah,07

Digito: jz aquí Leer2: int 21h

jnz otro ret

aqui:

mov bl,14h

call teclado

call tiempo4

mov bl,74h mas:

call teclado mov bx,50

call tiempo4 otri:

call principal dec bx

ret cmp bx,00

jnz otri

mov bx,50

Tiempo4: otri1:

dec bx

cmp bx,00

jnz otri1

dec ax

cmp ax,00

jnz mas

ret

mov contador,00000011b mov ah,02

mov dx,0f22h mov bh,00

call cursor Cursor: int 10h

lea si,digr ret

call cadena

mov contador,00000011b

mov dx,0927h

call cursor

lea si,dig9

call cadena

mov contador,00000011b

mov dx,0b27h

call cursor

lea si,dig10

call cadena

mov contador,00000011b

mov dx,0d27h

call cursor

lea si,dig11

call cadena

mov contador,00000011b

mov dx,092ch

call cursor

lea si,dig12

call cadena

mov contador,00000011b

mov dx,0b2ch

Teclado: call cursor

lea si,dig13

call cadena

mov contador,00000011b

mov dx,0d2ch

call cursor

lea si,dig14

call cadena

mov contador,0fh

mov dx,021ah

call cursor

lea si,dig15

call cadena zoo1:

mov contador,00000011b call cursor

mov dx,0f27h mov al,[si]

call cursor Call solos

lea si,dig16 Inc dl

call cadena Cadena: inc si

mov contador,00000011b dec contador

mov dx,0f2ch cmp contador,00

call cursor jnz zoo1

lea si,dig17 ret

call cadena

mov contador,00000011b

call cursor

ret

seguir:

mov dx,041eh

mov ah,02

call cursor Cursor: mov bh,00

int 10h lea dx,valor1 ret

mov ah,0ah

call leer Leer: int 21h

cmp long_act1,00 ret

mov cl,long_act1

sub ch,ch

lea si,s_e1

add si,cx

mov contador,0000

mov auxiliar1,cx

siga:

mov al,[si-1]

cmp al,'.'

je fin

add contador,0001

dec si

call condecimal Condecimal: loop siga

mov cx,auxiliar1

cmp auxiliar1,cx

jnz fin

mov contador,00

sub cx,cx

fin:

ret

Principal: mov ax,contador

mov contador1,ax

sub ax,ax

mov dx,041eh

call cursor

mov ah,07h

int 21h

call sin_eco Sin_eco: mov dx,041eh

call cursor

ret

sub ah,ah

push ax

mov dx,041eh

call cursor

lea dx,resultado

call mostrar mov ah,09h

Mostrar: int 21h

ret

pop ax

seguir1:

cmp al,'+'

je sumar

cmp al,'-'

je restar

cmp al,'*'

je producto

cmp al,'/'

je division

cmp al,'r'

je raiz

jmp seguir

ret


call introd2

call adicion

mov cx,auxiliar3

Sumar: mov auxiliar,cx

call con_asc

call visualiza

ret

endp

call introd2

Restar: call resta

ret

call introd2

call multiplicar

mov cx,decimal

Producto: mov auxiliar,cx

call con_asc

call visualiza

ret

call introd2

call dividir

Division: call visualiza

ret

call raizcuadrada

Raiz: call visualiza

ret

mov ax,p_binario1

Adicion: add ax,p_binario2

ret

call sustraer

mov cx,auxiliar3

mov auxiliar,cx

js otro4

call con_asc

jmp otro5

otro4:

Resta: neg ax

call con_asc

dec si

mov al,2dh

mov [si],al

otro5:

call visualiza

ret

mov ax,p_binario1

Sustraer: sub ax,p_binario2

ret

mov ax,p_binario1

Multiplicar: mul p_binario2

ret

mov ax,00

mov bx,p_binario1

ultiop0:

sub bx,p_binario2

js ultiop1

mov auxiliar2,bx

add ax,01

jmp ultiop0

ultiop1:

cmp ax,00

jne ultiop2

lea si,resultado+4

mov byteptr[si],'.'

mov ax,p_binario1

Dividir: inc si

mov cx,c_tres

jmp ultiop3

ultiop2:

lea si,resultado+4

sub dx,dx

call con_ascd

inc si

mov cx,c_tres

mov ax,auxiliar2

ultiop3:

mul camdec1

div p_binario2

or al,30h

mov [si],al

inc si

xchg dx,ax

sub dx,dx

loop ultiop3

ret

mov cx,1

mov dx,1

mov ax,valor1

vuelve:

sub ax,cx

cmp ax,0

Raiz jbe vuelve1

Cuadrada inc dx

add cx,2

jmp vuelve

vuelve1:

mov valbin,dx

call con_asc

ret

mov dx,041eh

call cursor

lea dx,valor2

call leer

mov cl,long_act2

sub ch,ch

lea si,s_e2

Introd2: add si,cx

call condecimal

mov ax,contador

mov contador2,ax

call perfecto

call opera1

call opera2

ret

lea si,resultado+6

mov byte ptr[si],'.'

add si,auxiliar

salt0:

cmp byte ptr[si],'.'

jne salt5

dec si

salt5:

cmp dx,00

jnz salt0

Con_asc: cmp ax,0010

jb s50

sal0:

div camdec

or dl,30h

mov [si],dl

dec si

sub dx,dx

jmp salt0

s50:

or al,30h

mov [si],al

ret

mov cx,01

a3:

cmp dx,00

jnz a1

cmp ax,0010

jb a2

a1:

div camdec

or dl,30h

mov [si],dl

Con_ascd: dec si

add cx,01

sub dx,dx

jmp a3

a2:

or al,30h

mov [si],al

i2:

inc si

loop i2

mov byteptr[si],'.'

ret

mov cx,0ah

lea si,resultado+3

mov ax,valbin

otro2:

cmp ax,0ah

jb fin1

xor dx,dx

Con_asc2: div cx

or dl,30h

mov [si],dl

dec si

jmp otro2

fin1:

or al,30h

mov [si],al

ret

mov bl,long_act1

sub bh,bh

lea si,s_e1

add si,bx

mov dl,long_act2

Perfecto: sub dh,dh

lea di,s_e2

add di,dx

call per

ret

mov ax,contador1

cmp ax,contador2

je final

ja sig1

mov ax,contador2

sub ax,contador1

mov cx,ax

sub ch,ch

add long_act1,cl

sig3:

mov ch,30h

mov [si],ch

sub ch,ch

inc si

loop sig3

mov ax,contador2

mov auxiliar3,ax

sub ah,ah

mul c_dos

mov decimal,ax

ret

sig1:

sub ax,contador2

Per: mov cx,ax

sub ch,ch

add long_act2,cl

sig2:

mov ch,30h

mov [di],ch

sub ch,ch

inc di

loop sig2

mov ax,contador1

mov auxiliar3,ax

sub ah,ah

mul c_dos

mov decimal,ax

ret

final:

mov ax,contador2

mov auxiliar3,ax

sub ah,ah

mul c_dos

mov decimal,ax

ret

mov cl,long_act1

sub ch,ch

lea si,s_e1

add si,cx

Opera1: call asc_bin

mov ax,valor

mov p_binario1,ax

ret

mov cl,long_act2

sub ch,ch

lea si,s_e2

add si,cx

Opera2: call asc_bin

mov ax,valor

mov p_binario2,ax

ret

mov p_mul,0001

mov valor,00

sub bx,bx

asbin2:

mov al,[si-1]

cmp al,'.'

jne asbin1

jmp asbin3

asbin1:

Asc_bin: and ax,000fh

mul p_mul

add valor,ax

mov ax,p_mul

mul camdec

mov p_mul,ax

asbin3:

dec si

loop asbin2

ret

mov dx,0425h

call cursor

Visualiza: call mostrar

mov dx,041eh

call cursor

ret

lea dx,resultado

mov ah,09h

Mostrar: int 21h

ret

mov ah,0ah

Leer: int 21h

ret

mov ah,02

mov bh,0

Cursor: int 10h

ret

mov ah,0ah

mov bh,00

Escribir: int 10h

ret

mov ah,09

Desplegar: int 21h

ret

zoo1:

call cursor

mov al,[si]

call solos

inc dl

Cadena: inc si

dec contador

cmp contador,00

jnz zoo1

ret

mov cx,01h

mov ah,09h

Solos: mov bh,00

int 10h

ret

mov ah,07

leer2: int 21h

ret

mas:

mov bx,50

otri:

dec bx

cmp bx,00

jnz otri

mov bx,50

otri1:

Tiempo4: dec bx

cmp bx,00

jnz otri1

dec ax

cmp ax,00

jnz mas

ret


mov contador,00000011b mov ah,02

mov dx,0f22h mov bh,00

call cursor Cursor: int 10h

lea si,digr ret

call cadena

mov contador,00000011b

mov dx,0927h

call cursor

lea si,dig9

call cadena

mov contador,00000011b

mov dx,0b27h

call cursor

lea si,dig10

call cadena

mov contador,00000011b

mov dx,0d27h

call cursor

lea si,dig11

call cadena

mov contador,00000011b

mov dx,092ch

call cursor

lea si,dig12

call cadena

mov contador,00000011b

mov dx,0b2ch

Teclado: call cursor

lea si,dig13

call cadena

mov contador,00000011b

mov dx,0d2ch

call cursor

lea si,dig14

call cadena

mov contador,0fh

mov dx,021ah

call cursor

lea si,dig15

call cadena zoo1:

mov contador,00000011b call cursor

mov dx,0f27h mov al,[si]

call cursor Call solos

lea si,dig16 Inc dl

call cadena Cadena: inc si

mov contador,00000011b dec contador

mov dx,0f2ch cmp contador,00

call cursor jnz zoo1

lea si,dig17 ret

call cadena

mov contador,00000011b

call cursor

ret

seguir:

mov dx,041eh

mov ah,02

call cursor Cursor: mov bh,00

int 10h lea dx,valor1 ret

mov ah,0ah

call leer Leer: int 21h

cmp long_act1,00 ret

mov cl,long_act1

sub ch,ch

lea si,s_e1

add si,cx

mov contador,0000

mov auxiliar1,cx

siga:

mov al,[si-1]

cmp al,'.'

je fin

add contador,0001

dec si

call condecimal Condecimal: loop siga

mov cx,auxiliar1

cmp auxiliar1,cx

jnz fin

mov contador,00

sub cx,cx

fin:

ret

Principal: mov ax,contador

mov contador1,ax

sub ax,ax

mov dx,041eh

call cursor

mov ah,07h

int 21h

call sin_eco Sin_eco: mov dx,041eh

call cursor

ret

sub ah,ah

push ax

mov dx,041eh

call cursor

lea dx,resultado

call mostrar mov ah,09h

Mostrar: int 21h

ret

pop ax

seguir1:

cmp al,'+'

je sumar

cmp al,'-'

je restar

cmp al,'*'

je producto

cmp al,'/'

je division

cmp al,'r'

je raiz

jmp seguir

ret


call introd2

call adicion

mov cx,auxiliar3

Sumar: mov auxiliar,cx

call con_asc

call visualiza

ret

endp

call introd2

Restar: call resta

ret

call introd2

call multiplicar

mov cx,decimal

Producto: mov auxiliar,cx

call con_asc

call visualiza

ret

call introd2

call dividir

Division: call visualiza

ret

call raizcuadrada

Raiz: call visualiza

ret

mov ax,p_binario1

Adicion: add ax,p_binario2

ret

call sustraer

mov cx,auxiliar3

mov auxiliar,cx

js otro4

call con_asc

jmp otro5

otro4:

Resta: neg ax

call con_asc

dec si

mov al,2dh

mov [si],al

otro5:

call visualiza

ret

mov ax,p_binario1

Sustraer: sub ax,p_binario2

ret

mov ax,p_binario1

Multiplicar: mul p_binario2

ret

mov ax,00

mov bx,p_binario1

ultiop0:

sub bx,p_binario2

js ultiop1

mov auxiliar2,bx

add ax,01

jmp ultiop0

ultiop1:

cmp ax,00

jne ultiop2

lea si,resultado+4

mov byteptr[si],'.'

mov ax,p_binario1

Dividir: inc si

mov cx,c_tres

jmp ultiop3

ultiop2:

lea si,resultado+4

sub dx,dx

call con_ascd

inc si

mov cx,c_tres

mov ax,auxiliar2

ultiop3:

mul camdec1

div p_binario2

or al,30h

mov [si],al

inc si

xchg dx,ax

sub dx,dx

loop ultiop3

ret

mov cx,1

mov dx,1

mov ax,valor1

vuelve:

sub ax,cx

cmp ax,0

Raiz jbe vuelve1

Cuadrada inc dx

add cx,2

jmp vuelve

vuelve1:

mov valbin,dx

call con_asc

ret

mov dx,041eh

call cursor

lea dx,valor2

call leer

mov cl,long_act2

sub ch,ch

lea si,s_e2

Introd2: add si,cx

call condecimal

mov ax,contador

mov contador2,ax

call perfecto

call opera1

call opera2

ret

lea si,resultado+6

mov byte ptr[si],'.'

add si,auxiliar

salt0:

cmp byte ptr[si],'.'

jne salt5

dec si

salt5:

cmp dx,00

jnz salt0

Con_asc: cmp ax,0010

jb s50

sal0:

div camdec

or dl,30h

mov [si],dl

dec si

sub dx,dx

jmp salt0

s50:

or al,30h

mov [si],al

ret

mov cx,01

a3:

cmp dx,00

jnz a1

cmp ax,0010

jb a2

a1:

div camdec

or dl,30h

mov [si],dl

Con_ascd: dec si

add cx,01

sub dx,dx

jmp a3

a2:

or al,30h

mov [si],al

i2:

inc si

loop i2

mov byteptr[si],'.'

ret

mov cx,0ah

lea si,resultado+3

mov ax,valbin

otro2:

cmp ax,0ah

jb fin1

xor dx,dx

Con_asc2: div cx

or dl,30h

mov [si],dl

dec si

jmp otro2

fin1:

or al,30h

mov [si],al

ret

mov bl,long_act1

sub bh,bh

lea si,s_e1

add si,bx

mov dl,long_act2

Perfecto: sub dh,dh

lea di,s_e2

add di,dx

call per

ret

mov ax,contador1

cmp ax,contador2

je final

ja sig1

mov ax,contador2

sub ax,contador1

mov cx,ax

sub ch,ch

add long_act1,cl

sig3:

mov ch,30h

mov [si],ch

sub ch,ch

inc si

loop sig3

mov ax,contador2

mov auxiliar3,ax

sub ah,ah

mul c_dos

mov decimal,ax

ret

sig1:

sub ax,contador2

Per: mov cx,ax

sub ch,ch

add long_act2,cl

sig2:

mov ch,30h

mov [di],ch

sub ch,ch

inc di

loop sig2

mov ax,contador1

mov auxiliar3,ax

sub ah,ah

mul c_dos

mov decimal,ax

ret

final:

mov ax,contador2

mov auxiliar3,ax

sub ah,ah

mul c_dos

mov decimal,ax

ret

mov cl,long_act1

sub ch,ch

lea si,s_e1

add si,cx

Opera1: call asc_bin

mov ax,valor

mov p_binario1,ax

ret

mov cl,long_act2

sub ch,ch

lea si,s_e2

add si,cx

Opera2: call asc_bin

mov ax,valor

mov p_binario2,ax

ret

mov p_mul,0001

mov valor,00

sub bx,bx

asbin2:

mov al,[si-1]

cmp al,'.'

jne asbin1

jmp asbin3

asbin1:

Asc_bin: and ax,000fh

mul p_mul

add valor,ax

mov ax,p_mul

mul camdec

mov p_mul,ax

asbin3:

dec si

loop asbin2

ret

mov dx,0425h

call cursor

Visualiza: call mostrar

mov dx,041eh

call cursor

ret

lea dx,resultado

mov ah,09h

Mostrar: int 21h

ret

mov ah,0ah

Leer: int 21h

ret

mov ah,02

mov bh,0

Cursor: int 10h

ret

mov ah,0ah

mov bh,00

Escribir: int 10h

ret

mov ah,09

Desplegar: int 21h

ret

zoo1:

call cursor

mov al,[si]

call solos

inc dl

Cadena: inc si

dec contador

cmp contador,00

jnz zoo1

ret

mov cx,01h

mov ah,09h

Solos: mov bh,00

int 10h

ret

mov ah,07

leer2: int 21h

ret

mas:

mov bx,50

otri:

dec bx

cmp bx,00

jnz otri

mov bx,50

otri1:

Tiempo4: dec bx

cmp bx,00

jnz otri1

dec ax

cmp ax,00

jnz mas

ret


4.1.- DISEÑO DETALLADO

4.1.1.- MODULO I

SIGEDY.exe

4.1.2.- DATOS DE ENTRADA.

Dos datos de entrada en valor decimal almacenadas en las variables y un operador

valor1 label byte

long_max1 db 6

long_act1 db ?

s_e1 db 10 dup(?),'$'

valor2 label byte

long_max2 db 6

long_act2 db 0

s_e2 db 10 dup(?),'$'

4.1.3.- DATOS DE SALIDA.

Obtención los resultados numéricos de las operaciones realizadas con las variables de entrada, almacenándolas en la variables resultado, para luego ser visualizadas con:

visualiza proc

mov dx,0425h

call cursor

call mostrar

mov dx,041eh

call cursor

ret

visualiza endp

cursor proc

mov ah,02

mov bh,0

int 10h

ret

cursor endp

mostrar proc

lea dx,resultado

mov ah,09h

int 21h

ret

mostrar endp

4.1.4.- ALGORITMO.

Paso 1. Introducir primer dato

Paso 2. Introducir operación a realizar, mientras

no coincida con ninguna operación, hacer

Paso 2, en otro caso

Paso 3. si = `+'

Paso 3.1 Introducir segundo dato

Paso 3.2 Adicionamos los valores

Paso 3.2.1 Convertimos a Ascii y Decimal

Paso 3.3 Visualizamos resultado

Paso 4. si = `-'

Paso 4.1 Introducir segundo dato

Paso 4.2 Restamos los valores

Paso 4.2.1 Convertimos a Ascii y Decimal

Paso 4.3 Visualizamos resultado

Paso 5. si = `*'

Paso 5.1 Introducir segundo dato

Paso 5.2 Multiplicación de valores

Paso 5.2.1 Convertimos a Ascii y Decimal

Paso 5.3 Visualizamos resultado

Paso 6. si = `/'

Paso 6.1 Introducir segundo dato

Paso 6.2 Dividimos los valores

Paso 6.2.1 Convertimos a Ascii y Decimal

Paso 6.3 Visualizamos resultado

Paso 7. si = `r'

Paso 7.1 Hallamos el valor de la raiz

Paso 7.2 Convertimos a Ascii y Decimal

Paso 7.3 Visualizamos resultado

Paso 8. Mientras no cumpla S = `S'hacer

desde Paso 1

Paso 9. Salir

5.- PASOS DE CORRIDO.

A continuación se implementa en detalle un corrido del programa en cada uno de sus pasos en forma grafica

ICONO DE ACCESO DIRECTO AL PROGRAMA EJECUTABLE

SIGEDY.EXE

Esta primera grafica muestra el ingreso al programa de bajo nivel, teniendo un acceso directo en el escritorio del computador

PASOS PARA LA OBTENCION DEL PROGRAMA

SIGEDY.EXE

'Programación de una máquina de cálculo'

La presente gráfica nos muestra todos los pasos, que se siguen para la obtención de un programa ejecutable en lenguaje ensamblador, a través de los pasos de ensamblado, enlace

VISUALIZACION DEL PROGRAMA

SIGEDY.EXE

Esta es la visualización obtenida, a través de la simulación de una maquina de calcular, editada, ensamblado, enlazada y obtención del programa ejecutable, enteramente hecha en lenguaje de bajo nivel (Ensamblador)

6.- CONCLUSIONES.

El proyecto del registro de una Parroquia realizado en el Lenguaje de Alto nivel (C++) fue interesante, ya que se aprendió a identificar los errores que uno tiene al realizar programas en lenguaje c++ y además a mejorar el conocimiento respectivo del programa, lo mas novedoso para JHOPAT fue el trabajo que nos tomo realizar de los archivos , ya que fue un tema muy interesante que aprendimos para nuestros conocimientos propios y el de guardar en un disco duro o disquetera

7.- BIBLIOGRAFIA

  • Lenguaje ensamblador y programas par IBM, PC y Compatibles “PETER ABEL“ Tercera edición 1996.

  • Assembly Language For IBM Microcomputers

J. Terry Godfrey

Prentice Hall Hispanoamericana, S.A. Mexico

  • Basic Assembler

A. Rojas

Ed Computec Editores S.A. de C.V. Mexico

  • IBM Personal Computer Assembly Language Tutorial

Joshua Auerbach

  • www.assemblybr.hpg.ig.com.br

  • http://www.faroc.com.au/~blackcat

  • http://www.geocities.com/SiliconValley/Park/3174

ENTRADA SIGEDY.EXE

Abril

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

Nro de dias

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

1

2

 

 

 

 

 

3

 

 

 

 

4

 

5

 

6

 

 

 

7

 

8

 

 

Fecha Abril

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

Nro de dias

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

1

2

 

 

 

 

 

3

 

 

 

 

4

 

5

 

6

 

 

 

7

 

8

 

 

Maquina calculadora

Digito

Borrador

Carátula

Desplegar

Cuadro

Cursor

Cuadro2

Esquinas

Cursor

Escribir

Vertical

Cursor

Escribir

Cursor

Escribir

Principal

Tiempo

Cursor

Teclado

Cadena

Cursor

Sin_eco

Cursor

Condecimal

Sumar

Restar

Visualizar

Con_asc

Introd2

Adición

Perfecto

Condecimal

Cursor

Leer

Mostrar

Opera2

Opera1

Asc_bin

Per

Introd2

Resta

Perfecto

Condecimal

Leer

Opera2

Opera1

Asc_bin

Per

Cursor

Visualizar

Con_asc

Sustraer

Mostrar

E

División

Producto

Raíz

E

Visualizar

Con_asc

Introd2

Adición

Perfecto

Condecimal

Cursor

Leer

Mostrar

Opera2

Opera1

Asc_bin

Per

Perfecto

Condecimal

Leer

Opera2

Opera1

Asc_bin

Per

Cursor

Visualizar

Con_asc

Introd2

DividirAdición

Mostrar

Perfecto

Condecimal

Leer

Opera2

Opera1

Asc_bin

Per

Cursor

Visualizar

Con_asc

Introd2

DividirAdición

Mostrar