SlideShare una empresa de Scribd logo
1 de 16
Practica numero5
1.
2. ; estamuestrase pone dosnúmerosdesde el usuario,
; entoncesse calculalasuma de estosnúmeros,
; e imprime acabo.
nombre de "calco"
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;; estosMaros se copiande emu8086.inc ;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; esta macro imprime unacadenaque se da como unparámetro,ejemplo:
; 'Hola mundo!'PRINTN
; lo mismoque PRINT,peronuevalínease añade automáticamente.
SDAT MACRO PRINTN
LOCAL next_char,s_dcl,impreso,skip_dcl
PUSH AX; almacenarregistros...
SI EMPUJE;
Skip_dcl JMP;omitirdeclaración.
s_dcl DB SDAT0Dh, 0Ah, 0
skip_dcl:
LEA SI,s_dcl
next_char:
MOV AL, CS: [SI]
CMP AL,0
JZimpresa
INCSI
MOV AH, 0Eh; funciónde teletipo.
INT10h
JMP next_char
impresa:
POPSI; re-store registros...
AXPOP;
ENDM
; esta macro imprime uncharen AL y losavances
; la posiciónactual del cursor:
Putc carbón MACRO
AXEMPUJE
MOV AL, char
MOV AH, 0Eh
INT10h
AXPOP
ENDM
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
org 100h
iniciojmp;omitirdatos.
msg1 db 0Dh, 0Ah, 'losnúmerosde entradade estagama: [-32768..32767]', 0Dh, 0Ah
db 0Dh, 0Ah,'Introduce primernúmero:$'
msg2 db 0Dh, 0Ah, 'Introduce segundonúmero:$'
msg3 db 0Dh, 0Ah, 'la sumaes:$'
; declaraciónde variables:
dw num?
Empezar:
; imprimirprimermensaje
dx mov,msg1 desplazamiento
movah, 9
int21h
scan_numllamada
; mantenerprimernúmero:
nummov, cx
; imprimirsegundomensaje
dx mov,msg2 desplazamiento
movah, 9
int21h
scan_numllamada
; añadir números:
añadirnum, cx
jo desbordamiento
; imprimirel resultado:
dx mov,msg3 desplazamiento
movah, 9
int21h
movax, num
llamarprint_num
salidajmp
; procesode error overlow:
overflow:
printn'tenemosdesbordamiento!'
Salida:
; esperara que cualquierpulsaciónde tecla:
movah, 0
int16h
ret; control al sistemaoperativovolver.
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;; estasfuncionesse copiande emu8086.inc;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; obtiene el númerode variosdígitosFIRMADOdesde el teclado,
; y almacenael resultadoenel registroCX:
SCAN_NUMPROCCERCA
EMPUJE DX
AXEMPUJE
EMPUJE SI
MOV CX, 0
; restablecerlabandera:
MOV CS: make_minus,0
next_digit:
; obtenercarbóndesde el teclado
; enAL:
MOV AH, 00h
INT16h
; e imprimirlo:
MOV AH, 0Eh
INT10h
; comprobarMENOS:
CMP AL,'-'
JE set_minus
; comprobarteclaENTER:
CMP AL,0Dh; retornode carro?
JNEnot_cr
JMP stop_input
not_cr:
CMP AL,8; 'RETROCESO' presionado?
JNEbackspace_checked
MOV DX, 0; eliminarel últimodígitopor
MOV AX, CX;división:
DIV CS: diez;AX= DX: AX/ 10 (DX-rem).
MOV CX, AX
Putc''; posiciónclara.
Putc8; retrocesode nuevo.
JMP next_digit
backspace_checked:
; permitirque sólolosdígitos:
CMP AL, '0'
JAEok_AE_0
JMP remove_not_digit
ok_AE_0:
CMP AL,'9'
JBE ok_digit
remove_not_digit:
Putc8; retroceso.
Putc''; clara pasada noentrarondígitos.
Putc8; retrocesode nuevo.
Next_digitJMP;esperarparala próximaentrada.
ok_digit:
; CX se multiplicanpor10 (primeravezel resultadoescero)
AXEMPUJE
MOV AX, CX
MUL CS: diez;DX:AX = AX * 10
MOV CX, AX
AXPOP
; comprobarsi el númeroesdemasiadogrande
; (resultadodebe serde 16 bits)
CMP DX,0
JNEtoo_big
; convertirde códigoASCII:
SUB AL, 30h
; añadirAL a CX:
MOV AH, 0
MOV DX, CX; copiade seguridad,encasode que el resultadoserádemasiadogrande.
AÑADIRCX,AX
Too_big2JC; saltarsi el númeroesdemasiadogrande.
JMP next_digit
set_minus:
MOV CS: make_minus,1
JMP next_digit
too_big2:
MOV CX, DX; restaurarel valorbackupedantesde añadir.
MOV DX, 0; DX eracero antesde copia de seguridad!
demasiadogrande:
MOV AX, CX
DIV CS: diez;revertirúltimaDX:AX= AX* 10, que AX= DX: AX/ 10
MOV CX, AX
Putc8; retroceso.
Putc''; claro entraronúltimodígito.
Putc8; retrocesode nuevo.
Next_digitJMP;esperaraEnter / Retroceso.
stop_input:
; comprobarla bandera:
CMP CS: make_minus, 0
JE not_minus
NEG CX
not_minus:
POPSI
AXPOP
POPDX
RET
make_minusDB?; utilizadocomounabandera.
SCAN_NUMENDP
; este procedimientoimprime númeroenAX,
; se utilizaconPRINT_NUM_UNSpara imprimirnúmerosconsigno:
PRINT_NUMPROCCERCA
EMPUJE DX
AXEMPUJE
CMP AX,0
JNZnot_zero
Putc'0'
JMP impresa
not_zero:
; el signode verificaciónde AX,
; hacerabsolutasi es negativo:
CMP AX,0
JNSpositivo
NEG AX
Putc'-'
positivo:
LLAME PRINT_NUM_UNS
impresa:
AXPOP
POPDX
RET
PRINT_NUMENDP
; este procedimientoimprime unsinfirmar
; número enAX (nosólounsolodígito)
; valorespermitidosvande 0 a 65535 (FFFF)
PRINT_NUM_UNS PROCCERCA
AXEMPUJE
PUSH BX
EMPUJE CX
EMPUJE DX
; banderapara evitarlaimpresiónde cerosantesdel número:
MOV CX, 1
; (resultadode "/10000" essiempre menoroigual a 9).
MOV BX, 10.000; 2710h - divisor.
; AXes cero?
CMP AX,0
JZprint_zero
begin_print:
; comprobardivisor(si ceroir a END_PRINT):
CMP BX,0
JZEND_PRINT
; evitarlaimpresiónde cerosantesdel número:
CMP CX,0
JE calc
; si AX <BX continuación,resultadode DIV serácero:
CMP AX,BX
JB salto
Calc:
MOV CX, 0; banderaconjunto.
MOV DX, 0
DIV BX; AX= DX: AX/ BX (DX= resto).
; imprimirúltimodígito
; AH essiempre cero,porloque se ignora
AÑADIRAL,30h; convertirencódigoASCII.
PutcAL
MOV AX, DX;conseguirrestode últimadiv.
saltar:
; calcularBX = BX / 10
AXEMPUJE
MOV DX, 0
MOV AX, BX
DIV CS: diez;AX= DX: AX/ 10 (DX= resto).
MOV BX, AX
AXPOP
JMP begin_print
print_zero:
Putc'0'
END_PRINT:
POPDX
POPCX
POPBX
AXPOP
RET
PRINT_NUM_UNS ENDP
de diezDW 10; utilizadocomomultiplicador/divisorporSCAN_NUMyPRINT_NUM_UNS.
3. PUSH: Guarda unvalor de 16 bitsen lapila
AX= Acumulador
SI:Registroíndice de fuente
LEA: Load Effective Address (Cargadirecciónefectiva)
MOV: Copiael operando2 al operando1
JZ: ShortJumpif Zero(equal). SetbyCMP,SUB, ADD, TEST, AND,OR, XOR instructions. (Salto
corto si cero (igual). PuestoporCMP,SUB, ADD,TEST, AND,OR, XOR instrucciones)
INC:Incremento
POP: Get 16 bitvalue fromthe stack. (Adquiereunvalorde 16 bitsde la pila)
ENDM: Imprime unavariable enALy avanza
JNE: ShortJumpif firstoperandisNot Equal to secondoperand(assetby CMP instruction.
(Saltocorto si el primeroperandonoesigual al Segundo)
DIV:Divsionsinasignar
JAE: ShortJumpif firstoperandisAbove or Equal to secondoperand(assetby CMP
instruction). (Saltocortosi el primeroperandoesmayoro igual al segundooperando)
JBE: Short Jumpif firstoperandisBelow orEqual to secondoperand(assetbyCMP
instruction). (Saltocortosi el primeroperandoesmenoroigual al segundooperando)
NEG: Negate.Makesoperandnegative (Niega.Hace al operandonegativo)
6. Al iniciarel programacada variable se encuentraen0
Al ingresarun numeroincrementaenunoAF
Al tener3 numerosaumentaenunoPF
Al tenerlos5 aumentaen1 PFy SF
Al pedirlasuma aumentaenunoZF y PF
Descripciondel programa:
Este programa esuna calculadoraque suma dosdatos que se encuentrenentre el rangode
-32768 y 32767, Si ambosdatossuperaneste rangose produciráundesbordamientoynonos
dara ningúnresultado,Si losdatosse encuentrandentrodel rangoestablecidodarael
resultadode lasuma yfinalizarael programa.
Recordamosel significadode cadaregistrode bandera:
Carry Flag (CF) - Este indicador se establece en 1 cuando se produce un desbordamiento de
acarreo.
Zero Flag (ZF) - toma el valor 1 cuando el resultado es cero. Cuando el resultado es
diferente de 0, entonces el valor de la bandera es 0.
Sign Flag (SF) - toma el valor 1 cuando el resultado es negativo. Cuando el resultado es
positivo se establece en 0.
Overflow Flag (OF) - establece en 1 cuando hay un desbordamiento de signo.
Parityflag(PF) - La banderade paridadse usapara indicarsi el resultado,enunregistro,de
una operaciónmatemáticaesválido.
Adjustflag(AF) - Banderade acarreo auxiliar
Directionflag(DF) - La banderade direccióncontrolalaselecciónde autoincremento(D=0) o
auto decremento(D=1) de losregistros%edi o%esi durante lasoperacionesconcadenasde
caracteres.La banderade direcciónsólose utilizaconlasinstruccionesparael manejode
cadenasde caracteres.
5.quinto ejercicio emu8086

Más contenido relacionado

La actualidad más candente

Sentencias de repetición en Java
Sentencias de repetición en JavaSentencias de repetición en Java
Sentencias de repetición en JavaJdcaste
 
Curso Java Inicial 3 Sentencias De Control De Flujo
Curso Java Inicial   3 Sentencias De Control De FlujoCurso Java Inicial   3 Sentencias De Control De Flujo
Curso Java Inicial 3 Sentencias De Control De FlujoEmilio Aviles Avila
 
Quasi - Lenguaje C Mostrando Datos
Quasi - Lenguaje C Mostrando DatosQuasi - Lenguaje C Mostrando Datos
Quasi - Lenguaje C Mostrando Datosdegarden
 
Programacion Avanzada JavaScript
Programacion Avanzada JavaScriptProgramacion Avanzada JavaScript
Programacion Avanzada JavaScripttovi27
 
Lenguaje Borland C - Estructuras de Control
Lenguaje Borland C - Estructuras de ControlLenguaje Borland C - Estructuras de Control
Lenguaje Borland C - Estructuras de ControlKarina Arguedas Ruelas
 
Estructuras de control en Java
Estructuras de control en JavaEstructuras de control en Java
Estructuras de control en Javaquesada_diego
 
Instrucciones de control repetitivas
Instrucciones de control repetitivasInstrucciones de control repetitivas
Instrucciones de control repetitivasAbrirllave
 
Scjp Jug Section 2 Flow Control
Scjp Jug Section 2 Flow ControlScjp Jug Section 2 Flow Control
Scjp Jug Section 2 Flow ControlJose Selman
 
Chuleta de lenguaje C para principiantes
Chuleta de lenguaje C para principiantesChuleta de lenguaje C para principiantes
Chuleta de lenguaje C para principiantesAbrirllave
 
métodos procedimimientos estructuras de control java
métodos procedimimientos estructuras de control javamétodos procedimimientos estructuras de control java
métodos procedimimientos estructuras de control javaHenry Upla
 
Ejemplo C++
Ejemplo C++Ejemplo C++
Ejemplo C++David
 

La actualidad más candente (20)

Sentencias de control
Sentencias de controlSentencias de control
Sentencias de control
 
Sentencias de repetición en Java
Sentencias de repetición en JavaSentencias de repetición en Java
Sentencias de repetición en Java
 
Curso Java Inicial 3 Sentencias De Control De Flujo
Curso Java Inicial   3 Sentencias De Control De FlujoCurso Java Inicial   3 Sentencias De Control De Flujo
Curso Java Inicial 3 Sentencias De Control De Flujo
 
Quasi - Lenguaje C Mostrando Datos
Quasi - Lenguaje C Mostrando DatosQuasi - Lenguaje C Mostrando Datos
Quasi - Lenguaje C Mostrando Datos
 
Programacion Avanzada JavaScript
Programacion Avanzada JavaScriptProgramacion Avanzada JavaScript
Programacion Avanzada JavaScript
 
Lenguaje Borland C - Estructuras de Control
Lenguaje Borland C - Estructuras de ControlLenguaje Borland C - Estructuras de Control
Lenguaje Borland C - Estructuras de Control
 
Estructuras de control en Java
Estructuras de control en JavaEstructuras de control en Java
Estructuras de control en Java
 
manual-batch-desde-0
manual-batch-desde-0manual-batch-desde-0
manual-batch-desde-0
 
Instrucciones de control repetitivas
Instrucciones de control repetitivasInstrucciones de control repetitivas
Instrucciones de control repetitivas
 
Scjp Jug Section 2 Flow Control
Scjp Jug Section 2 Flow ControlScjp Jug Section 2 Flow Control
Scjp Jug Section 2 Flow Control
 
Estructuras de control
Estructuras de controlEstructuras de control
Estructuras de control
 
Funciones de programacion
Funciones de programacionFunciones de programacion
Funciones de programacion
 
Chuleta de lenguaje C para principiantes
Chuleta de lenguaje C para principiantesChuleta de lenguaje C para principiantes
Chuleta de lenguaje C para principiantes
 
Funciones en programación
Funciones en programaciónFunciones en programación
Funciones en programación
 
Diagramas De Flujo
Diagramas De FlujoDiagramas De Flujo
Diagramas De Flujo
 
métodos procedimimientos estructuras de control java
métodos procedimimientos estructuras de control javamétodos procedimimientos estructuras de control java
métodos procedimimientos estructuras de control java
 
Tabla de comandos mat lab para etudiar
Tabla de comandos mat lab para etudiarTabla de comandos mat lab para etudiar
Tabla de comandos mat lab para etudiar
 
41 Php. Bucles For
41 Php. Bucles For41 Php. Bucles For
41 Php. Bucles For
 
Ejemplo C++
Ejemplo C++Ejemplo C++
Ejemplo C++
 
Clase 6
Clase 6Clase 6
Clase 6
 

Similar a 5.quinto ejercicio emu8086

Soluciones examen y ejercicios 1.0 numerico jose rivera
Soluciones examen y ejercicios 1.0   numerico jose riveraSoluciones examen y ejercicios 1.0   numerico jose rivera
Soluciones examen y ejercicios 1.0 numerico jose riveraJ R7
 
Equipo 6 comparaciones
Equipo 6 comparacionesEquipo 6 comparaciones
Equipo 6 comparacionesgabo
 
Microcontroladores AVR y Arduino: Programación del microatmega328p en ensambl...
Microcontroladores AVR y Arduino: Programación del microatmega328p en ensambl...Microcontroladores AVR y Arduino: Programación del microatmega328p en ensambl...
Microcontroladores AVR y Arduino: Programación del microatmega328p en ensambl...SANTIAGO PABLO ALBERTO
 
Emulador de ensamblador EMU8086.
Emulador de ensamblador EMU8086.Emulador de ensamblador EMU8086.
Emulador de ensamblador EMU8086.RubnPilca
 
Programa en emu8086
Programa en emu8086Programa en emu8086
Programa en emu8086Fredy Soncco
 
Emulador de ensamblador emu8086
Emulador de ensamblador emu8086Emulador de ensamblador emu8086
Emulador de ensamblador emu8086Anthony Benalcazar
 
Turbo pascal 7 guia principal
Turbo pascal 7 guia principalTurbo pascal 7 guia principal
Turbo pascal 7 guia principalhanithaw1
 
Codigos rapidos 3.0 inf-153- jose rivera
Codigos rapidos   3.0  inf-153- jose riveraCodigos rapidos   3.0  inf-153- jose rivera
Codigos rapidos 3.0 inf-153- jose riveraJ R7
 
Programa Emu8086
Programa Emu8086Programa Emu8086
Programa Emu8086Santy Bolo
 
Curso MPLAB pic 3 empezando con el programa 9p
Curso MPLAB pic 3 empezando con el programa  9pCurso MPLAB pic 3 empezando con el programa  9p
Curso MPLAB pic 3 empezando con el programa 9pRuderocker Billy
 
Arduino: Reporte de diseño controlador acuario con Arduino
Arduino: Reporte de diseño controlador acuario con ArduinoArduino: Reporte de diseño controlador acuario con Arduino
Arduino: Reporte de diseño controlador acuario con ArduinoSANTIAGO PABLO ALBERTO
 
Salto condicional dilmerelser
Salto condicional dilmerelserSalto condicional dilmerelser
Salto condicional dilmerelserDILMER OLIVERA
 

Similar a 5.quinto ejercicio emu8086 (20)

Soluciones examen y ejercicios 1.0 numerico jose rivera
Soluciones examen y ejercicios 1.0   numerico jose riveraSoluciones examen y ejercicios 1.0   numerico jose rivera
Soluciones examen y ejercicios 1.0 numerico jose rivera
 
Equipo 6 comparaciones
Equipo 6 comparacionesEquipo 6 comparaciones
Equipo 6 comparaciones
 
Microcontroladores AVR y Arduino: Programación del microatmega328p en ensambl...
Microcontroladores AVR y Arduino: Programación del microatmega328p en ensambl...Microcontroladores AVR y Arduino: Programación del microatmega328p en ensambl...
Microcontroladores AVR y Arduino: Programación del microatmega328p en ensambl...
 
Emulador de ensamblador EMU8086.
Emulador de ensamblador EMU8086.Emulador de ensamblador EMU8086.
Emulador de ensamblador EMU8086.
 
Programa en emu8086
Programa en emu8086Programa en emu8086
Programa en emu8086
 
Emu 8086
Emu 8086Emu 8086
Emu 8086
 
Emulador de ensamblador emu8086
Emulador de ensamblador emu8086Emulador de ensamblador emu8086
Emulador de ensamblador emu8086
 
Turbo pascal 7 guia principal
Turbo pascal 7 guia principalTurbo pascal 7 guia principal
Turbo pascal 7 guia principal
 
Atmel
AtmelAtmel
Atmel
 
Niple diapopsitiva
Niple   diapopsitivaNiple   diapopsitiva
Niple diapopsitiva
 
Niple diapopsitiva
Niple   diapopsitivaNiple   diapopsitiva
Niple diapopsitiva
 
Niple diapopsitiva
Niple   diapopsitivaNiple   diapopsitiva
Niple diapopsitiva
 
Tabla de instrucciones asembler
Tabla de instrucciones asemblerTabla de instrucciones asembler
Tabla de instrucciones asembler
 
5 curso
5 curso5 curso
5 curso
 
Codigos rapidos 3.0 inf-153- jose rivera
Codigos rapidos   3.0  inf-153- jose riveraCodigos rapidos   3.0  inf-153- jose rivera
Codigos rapidos 3.0 inf-153- jose rivera
 
Programa Emu8086
Programa Emu8086Programa Emu8086
Programa Emu8086
 
Curso MPLAB pic 3 empezando con el programa 9p
Curso MPLAB pic 3 empezando con el programa  9pCurso MPLAB pic 3 empezando con el programa  9p
Curso MPLAB pic 3 empezando con el programa 9p
 
Arduino: Reporte de diseño controlador acuario con Arduino
Arduino: Reporte de diseño controlador acuario con ArduinoArduino: Reporte de diseño controlador acuario con Arduino
Arduino: Reporte de diseño controlador acuario con Arduino
 
Registros de la cpu
Registros de la cpuRegistros de la cpu
Registros de la cpu
 
Salto condicional dilmerelser
Salto condicional dilmerelserSalto condicional dilmerelser
Salto condicional dilmerelser
 

Más de Sebastian Gonzalez

Tercer blog arquitectura de hardware tercer corte
Tercer blog arquitectura de hardware tercer corteTercer blog arquitectura de hardware tercer corte
Tercer blog arquitectura de hardware tercer corteSebastian Gonzalez
 
Segundo blog arquitectura de hardware tercer corte
Segundo blog arquitectura de hardware tercer corteSegundo blog arquitectura de hardware tercer corte
Segundo blog arquitectura de hardware tercer corteSebastian Gonzalez
 
Cuarto blog de arquitectura de hardware tercer corte
Cuarto blog de arquitectura de hardware tercer corteCuarto blog de arquitectura de hardware tercer corte
Cuarto blog de arquitectura de hardware tercer corteSebastian Gonzalez
 
Primer blog arquitectura de hardware 3 corte
Primer blog arquitectura de hardware 3 cortePrimer blog arquitectura de hardware 3 corte
Primer blog arquitectura de hardware 3 corteSebastian Gonzalez
 
2.segundo taller/segundo corte
2.segundo taller/segundo corte2.segundo taller/segundo corte
2.segundo taller/segundo corteSebastian Gonzalez
 
7.septimo taller/segundo corte
7.septimo taller/segundo corte7.septimo taller/segundo corte
7.septimo taller/segundo corteSebastian Gonzalez
 
Cuarto taller de arquitectura de hardware
Cuarto taller de arquitectura de hardwareCuarto taller de arquitectura de hardware
Cuarto taller de arquitectura de hardwareSebastian Gonzalez
 
Quinto taller arquitectura de hardware
Quinto taller arquitectura de hardwareQuinto taller arquitectura de hardware
Quinto taller arquitectura de hardwareSebastian Gonzalez
 
Sexto taller arquitectura de hardware
Sexto taller arquitectura de hardwareSexto taller arquitectura de hardware
Sexto taller arquitectura de hardwareSebastian Gonzalez
 

Más de Sebastian Gonzalez (20)

1.primer ejercicio emu8086
1.primer ejercicio emu80861.primer ejercicio emu8086
1.primer ejercicio emu8086
 
2.segundo ejercicio
2.segundo ejercicio2.segundo ejercicio
2.segundo ejercicio
 
4.cuarto ejercicio
4.cuarto ejercicio4.cuarto ejercicio
4.cuarto ejercicio
 
Tercer blog arquitectura de hardware tercer corte
Tercer blog arquitectura de hardware tercer corteTercer blog arquitectura de hardware tercer corte
Tercer blog arquitectura de hardware tercer corte
 
Segundo blog arquitectura de hardware tercer corte
Segundo blog arquitectura de hardware tercer corteSegundo blog arquitectura de hardware tercer corte
Segundo blog arquitectura de hardware tercer corte
 
Cuarto blog de arquitectura de hardware tercer corte
Cuarto blog de arquitectura de hardware tercer corteCuarto blog de arquitectura de hardware tercer corte
Cuarto blog de arquitectura de hardware tercer corte
 
Primer blog arquitectura de hardware 3 corte
Primer blog arquitectura de hardware 3 cortePrimer blog arquitectura de hardware 3 corte
Primer blog arquitectura de hardware 3 corte
 
8.octavo taller
8.octavo taller8.octavo taller
8.octavo taller
 
6.sexto taller
6.sexto taller6.sexto taller
6.sexto taller
 
4.cuarto taller/segundo corte
4.cuarto taller/segundo corte4.cuarto taller/segundo corte
4.cuarto taller/segundo corte
 
2.segundo taller/segundo corte
2.segundo taller/segundo corte2.segundo taller/segundo corte
2.segundo taller/segundo corte
 
7.septimo taller/segundo corte
7.septimo taller/segundo corte7.septimo taller/segundo corte
7.septimo taller/segundo corte
 
5.quinto taller/segundo corte
5.quinto taller/segundo corte5.quinto taller/segundo corte
5.quinto taller/segundo corte
 
3.tercer taller/segundo corte
3.tercer taller/segundo corte3.tercer taller/segundo corte
3.tercer taller/segundo corte
 
1.primer taller/segundo corte
1.primer taller/segundo corte1.primer taller/segundo corte
1.primer taller/segundo corte
 
Segundo taller
Segundo tallerSegundo taller
Segundo taller
 
Cuarto taller de arquitectura de hardware
Cuarto taller de arquitectura de hardwareCuarto taller de arquitectura de hardware
Cuarto taller de arquitectura de hardware
 
Quinto taller arquitectura de hardware
Quinto taller arquitectura de hardwareQuinto taller arquitectura de hardware
Quinto taller arquitectura de hardware
 
Septimo taller arquitectura
Septimo taller arquitecturaSeptimo taller arquitectura
Septimo taller arquitectura
 
Sexto taller arquitectura de hardware
Sexto taller arquitectura de hardwareSexto taller arquitectura de hardware
Sexto taller arquitectura de hardware
 

Último

El uso de las T I C en la vida cotidiana.
El uso de las T I C en la vida cotidiana.El uso de las T I C en la vida cotidiana.
El uso de las T I C en la vida cotidiana.SEAT
 
Presentación Materiales para la Construcción.ppt
Presentación Materiales para la Construcción.pptPresentación Materiales para la Construcción.ppt
Presentación Materiales para la Construcción.pptCARLOSAXELVENTURAVID
 
Patrones Funcionales de Marjory Gordon.pptx
Patrones Funcionales de Marjory Gordon.pptxPatrones Funcionales de Marjory Gordon.pptx
Patrones Funcionales de Marjory Gordon.pptxErandiCamperoBojorge
 
Home Assistant - Un Hub para controlarlos a todos
Home Assistant - Un Hub para controlarlos a todosHome Assistant - Un Hub para controlarlos a todos
Home Assistant - Un Hub para controlarlos a todosDebora Gomez Bertoli
 
9-Sociales-Colombia siglo XX.pdf sociales
9-Sociales-Colombia siglo XX.pdf sociales9-Sociales-Colombia siglo XX.pdf sociales
9-Sociales-Colombia siglo XX.pdf socialesJhonathanRodriguez10
 
linea de tiempo television y su avance en los años
linea de tiempo television y su avance en los añoslinea de tiempo television y su avance en los años
linea de tiempo television y su avance en los añosMaraPazCrdenas
 
Linea del tiempo del celular .
Linea del tiempo del celular                   .Linea del tiempo del celular                   .
Linea del tiempo del celular .MiliMili32
 
La Electricidad y la Electrónica gabriela (1).pdf
La Electricidad y la Electrónica gabriela (1).pdfLa Electricidad y la Electrónica gabriela (1).pdf
La Electricidad y la Electrónica gabriela (1).pdfelabarbosa396
 
644400074-LA-CONSOLIDACION-DE-LA-REPUBLICA-OLIGARQUICA-pdf.pptx
644400074-LA-CONSOLIDACION-DE-LA-REPUBLICA-OLIGARQUICA-pdf.pptx644400074-LA-CONSOLIDACION-DE-LA-REPUBLICA-OLIGARQUICA-pdf.pptx
644400074-LA-CONSOLIDACION-DE-LA-REPUBLICA-OLIGARQUICA-pdf.pptxRosiClaros
 

Último (9)

El uso de las T I C en la vida cotidiana.
El uso de las T I C en la vida cotidiana.El uso de las T I C en la vida cotidiana.
El uso de las T I C en la vida cotidiana.
 
Presentación Materiales para la Construcción.ppt
Presentación Materiales para la Construcción.pptPresentación Materiales para la Construcción.ppt
Presentación Materiales para la Construcción.ppt
 
Patrones Funcionales de Marjory Gordon.pptx
Patrones Funcionales de Marjory Gordon.pptxPatrones Funcionales de Marjory Gordon.pptx
Patrones Funcionales de Marjory Gordon.pptx
 
Home Assistant - Un Hub para controlarlos a todos
Home Assistant - Un Hub para controlarlos a todosHome Assistant - Un Hub para controlarlos a todos
Home Assistant - Un Hub para controlarlos a todos
 
9-Sociales-Colombia siglo XX.pdf sociales
9-Sociales-Colombia siglo XX.pdf sociales9-Sociales-Colombia siglo XX.pdf sociales
9-Sociales-Colombia siglo XX.pdf sociales
 
linea de tiempo television y su avance en los años
linea de tiempo television y su avance en los añoslinea de tiempo television y su avance en los años
linea de tiempo television y su avance en los años
 
Linea del tiempo del celular .
Linea del tiempo del celular                   .Linea del tiempo del celular                   .
Linea del tiempo del celular .
 
La Electricidad y la Electrónica gabriela (1).pdf
La Electricidad y la Electrónica gabriela (1).pdfLa Electricidad y la Electrónica gabriela (1).pdf
La Electricidad y la Electrónica gabriela (1).pdf
 
644400074-LA-CONSOLIDACION-DE-LA-REPUBLICA-OLIGARQUICA-pdf.pptx
644400074-LA-CONSOLIDACION-DE-LA-REPUBLICA-OLIGARQUICA-pdf.pptx644400074-LA-CONSOLIDACION-DE-LA-REPUBLICA-OLIGARQUICA-pdf.pptx
644400074-LA-CONSOLIDACION-DE-LA-REPUBLICA-OLIGARQUICA-pdf.pptx
 

5.quinto ejercicio emu8086

  • 1. Practica numero5 1. 2. ; estamuestrase pone dosnúmerosdesde el usuario, ; entoncesse calculalasuma de estosnúmeros, ; e imprime acabo. nombre de "calco" ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;; estosMaros se copiande emu8086.inc ;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; esta macro imprime unacadenaque se da como unparámetro,ejemplo: ; 'Hola mundo!'PRINTN ; lo mismoque PRINT,peronuevalínease añade automáticamente. SDAT MACRO PRINTN LOCAL next_char,s_dcl,impreso,skip_dcl PUSH AX; almacenarregistros... SI EMPUJE; Skip_dcl JMP;omitirdeclaración. s_dcl DB SDAT0Dh, 0Ah, 0 skip_dcl: LEA SI,s_dcl next_char: MOV AL, CS: [SI] CMP AL,0 JZimpresa
  • 2. INCSI MOV AH, 0Eh; funciónde teletipo. INT10h JMP next_char impresa: POPSI; re-store registros... AXPOP; ENDM ; esta macro imprime uncharen AL y losavances ; la posiciónactual del cursor: Putc carbón MACRO AXEMPUJE MOV AL, char MOV AH, 0Eh INT10h AXPOP ENDM ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; org 100h
  • 3. iniciojmp;omitirdatos. msg1 db 0Dh, 0Ah, 'losnúmerosde entradade estagama: [-32768..32767]', 0Dh, 0Ah db 0Dh, 0Ah,'Introduce primernúmero:$' msg2 db 0Dh, 0Ah, 'Introduce segundonúmero:$' msg3 db 0Dh, 0Ah, 'la sumaes:$' ; declaraciónde variables: dw num? Empezar: ; imprimirprimermensaje dx mov,msg1 desplazamiento movah, 9 int21h scan_numllamada ; mantenerprimernúmero: nummov, cx ; imprimirsegundomensaje dx mov,msg2 desplazamiento movah, 9
  • 4. int21h scan_numllamada ; añadir números: añadirnum, cx jo desbordamiento ; imprimirel resultado: dx mov,msg3 desplazamiento movah, 9 int21h movax, num llamarprint_num salidajmp ; procesode error overlow: overflow: printn'tenemosdesbordamiento!' Salida: ; esperara que cualquierpulsaciónde tecla:
  • 5. movah, 0 int16h ret; control al sistemaoperativovolver. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;; estasfuncionesse copiande emu8086.inc;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; obtiene el númerode variosdígitosFIRMADOdesde el teclado, ; y almacenael resultadoenel registroCX: SCAN_NUMPROCCERCA EMPUJE DX AXEMPUJE EMPUJE SI MOV CX, 0 ; restablecerlabandera: MOV CS: make_minus,0 next_digit: ; obtenercarbóndesde el teclado ; enAL:
  • 6. MOV AH, 00h INT16h ; e imprimirlo: MOV AH, 0Eh INT10h ; comprobarMENOS: CMP AL,'-' JE set_minus ; comprobarteclaENTER: CMP AL,0Dh; retornode carro? JNEnot_cr JMP stop_input not_cr: CMP AL,8; 'RETROCESO' presionado? JNEbackspace_checked MOV DX, 0; eliminarel últimodígitopor MOV AX, CX;división: DIV CS: diez;AX= DX: AX/ 10 (DX-rem). MOV CX, AX Putc''; posiciónclara. Putc8; retrocesode nuevo. JMP next_digit backspace_checked: ; permitirque sólolosdígitos: CMP AL, '0'
  • 7. JAEok_AE_0 JMP remove_not_digit ok_AE_0: CMP AL,'9' JBE ok_digit remove_not_digit: Putc8; retroceso. Putc''; clara pasada noentrarondígitos. Putc8; retrocesode nuevo. Next_digitJMP;esperarparala próximaentrada. ok_digit: ; CX se multiplicanpor10 (primeravezel resultadoescero) AXEMPUJE MOV AX, CX MUL CS: diez;DX:AX = AX * 10 MOV CX, AX AXPOP ; comprobarsi el númeroesdemasiadogrande ; (resultadodebe serde 16 bits) CMP DX,0 JNEtoo_big ; convertirde códigoASCII: SUB AL, 30h ; añadirAL a CX: MOV AH, 0 MOV DX, CX; copiade seguridad,encasode que el resultadoserádemasiadogrande.
  • 8. AÑADIRCX,AX Too_big2JC; saltarsi el númeroesdemasiadogrande. JMP next_digit set_minus: MOV CS: make_minus,1 JMP next_digit too_big2: MOV CX, DX; restaurarel valorbackupedantesde añadir. MOV DX, 0; DX eracero antesde copia de seguridad! demasiadogrande: MOV AX, CX DIV CS: diez;revertirúltimaDX:AX= AX* 10, que AX= DX: AX/ 10 MOV CX, AX Putc8; retroceso. Putc''; claro entraronúltimodígito. Putc8; retrocesode nuevo. Next_digitJMP;esperaraEnter / Retroceso. stop_input: ; comprobarla bandera: CMP CS: make_minus, 0 JE not_minus NEG CX not_minus: POPSI AXPOP
  • 9. POPDX RET make_minusDB?; utilizadocomounabandera. SCAN_NUMENDP ; este procedimientoimprime númeroenAX, ; se utilizaconPRINT_NUM_UNSpara imprimirnúmerosconsigno: PRINT_NUMPROCCERCA EMPUJE DX AXEMPUJE CMP AX,0 JNZnot_zero Putc'0' JMP impresa not_zero: ; el signode verificaciónde AX, ; hacerabsolutasi es negativo: CMP AX,0 JNSpositivo NEG AX Putc'-' positivo:
  • 10. LLAME PRINT_NUM_UNS impresa: AXPOP POPDX RET PRINT_NUMENDP ; este procedimientoimprime unsinfirmar ; número enAX (nosólounsolodígito) ; valorespermitidosvande 0 a 65535 (FFFF) PRINT_NUM_UNS PROCCERCA AXEMPUJE PUSH BX EMPUJE CX EMPUJE DX ; banderapara evitarlaimpresiónde cerosantesdel número: MOV CX, 1 ; (resultadode "/10000" essiempre menoroigual a 9). MOV BX, 10.000; 2710h - divisor. ; AXes cero? CMP AX,0 JZprint_zero begin_print: ; comprobardivisor(si ceroir a END_PRINT):
  • 11. CMP BX,0 JZEND_PRINT ; evitarlaimpresiónde cerosantesdel número: CMP CX,0 JE calc ; si AX <BX continuación,resultadode DIV serácero: CMP AX,BX JB salto Calc: MOV CX, 0; banderaconjunto. MOV DX, 0 DIV BX; AX= DX: AX/ BX (DX= resto). ; imprimirúltimodígito ; AH essiempre cero,porloque se ignora AÑADIRAL,30h; convertirencódigoASCII. PutcAL MOV AX, DX;conseguirrestode últimadiv. saltar: ; calcularBX = BX / 10 AXEMPUJE MOV DX, 0 MOV AX, BX DIV CS: diez;AX= DX: AX/ 10 (DX= resto). MOV BX, AX AXPOP
  • 12. JMP begin_print print_zero: Putc'0' END_PRINT: POPDX POPCX POPBX AXPOP RET PRINT_NUM_UNS ENDP de diezDW 10; utilizadocomomultiplicador/divisorporSCAN_NUMyPRINT_NUM_UNS. 3. PUSH: Guarda unvalor de 16 bitsen lapila AX= Acumulador SI:Registroíndice de fuente LEA: Load Effective Address (Cargadirecciónefectiva) MOV: Copiael operando2 al operando1 JZ: ShortJumpif Zero(equal). SetbyCMP,SUB, ADD, TEST, AND,OR, XOR instructions. (Salto corto si cero (igual). PuestoporCMP,SUB, ADD,TEST, AND,OR, XOR instrucciones) INC:Incremento POP: Get 16 bitvalue fromthe stack. (Adquiereunvalorde 16 bitsde la pila) ENDM: Imprime unavariable enALy avanza JNE: ShortJumpif firstoperandisNot Equal to secondoperand(assetby CMP instruction. (Saltocorto si el primeroperandonoesigual al Segundo) DIV:Divsionsinasignar JAE: ShortJumpif firstoperandisAbove or Equal to secondoperand(assetby CMP instruction). (Saltocortosi el primeroperandoesmayoro igual al segundooperando) JBE: Short Jumpif firstoperandisBelow orEqual to secondoperand(assetbyCMP instruction). (Saltocortosi el primeroperandoesmenoroigual al segundooperando) NEG: Negate.Makesoperandnegative (Niega.Hace al operandonegativo)
  • 13. 6. Al iniciarel programacada variable se encuentraen0 Al ingresarun numeroincrementaenunoAF
  • 14. Al tener3 numerosaumentaenunoPF Al tenerlos5 aumentaen1 PFy SF
  • 15. Al pedirlasuma aumentaenunoZF y PF Descripciondel programa: Este programa esuna calculadoraque suma dosdatos que se encuentrenentre el rangode -32768 y 32767, Si ambosdatossuperaneste rangose produciráundesbordamientoynonos dara ningúnresultado,Si losdatosse encuentrandentrodel rangoestablecidodarael resultadode lasuma yfinalizarael programa. Recordamosel significadode cadaregistrode bandera: Carry Flag (CF) - Este indicador se establece en 1 cuando se produce un desbordamiento de acarreo. Zero Flag (ZF) - toma el valor 1 cuando el resultado es cero. Cuando el resultado es diferente de 0, entonces el valor de la bandera es 0. Sign Flag (SF) - toma el valor 1 cuando el resultado es negativo. Cuando el resultado es positivo se establece en 0. Overflow Flag (OF) - establece en 1 cuando hay un desbordamiento de signo. Parityflag(PF) - La banderade paridadse usapara indicarsi el resultado,enunregistro,de una operaciónmatemáticaesválido. Adjustflag(AF) - Banderade acarreo auxiliar Directionflag(DF) - La banderade direccióncontrolalaselecciónde autoincremento(D=0) o auto decremento(D=1) de losregistros%edi o%esi durante lasoperacionesconcadenasde caracteres.La banderade direcciónsólose utilizaconlasinstruccionesparael manejode cadenasde caracteres.