Arquitectura de PC CÓDIGO: 301302 Ciclo de la Tarea 3 Lenguaje de máquina Ensamblador - Formato de las instrucciones Pr
Views 107 Downloads 3 File size 547KB
Arquitectura de PC CÓDIGO: 301302 Ciclo de la Tarea 3 Lenguaje de máquina Ensamblador - Formato de las instrucciones
Presentado a: Anyelo Gerley
Entregado por: John Jairo Yara Oyola Código: 79512473 Grupo: 301302A_611
UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA - UNAD ESCUELA DE CIENCIAS BÁSICAS TECNOLOGÍA E INGENIERÍA ABRIL 2019 CIUDAD
INTRODUCCIÓN
La presente actividad se fundamenta en según la guía de actividad, permitiendo adquirir conocimiento sobre lengua asembler, uso de programa emul8086 asimismo avanzar en la profundización del código y análisis de problemas.
OBJETIVOS Traducir lenguaje ensamblador a lenguaje de maquina Conocimiento de registros Conocer formato de instrucciones Conocer comportamiento de bucles Conocer como es el control directo de hardware mediante instrucciones de assembler
Actividades a desarrollar
1 Explicar mediante una infografía en que consiste las instrucciones tipo salto del Lenguaje Ensamblador (Direcciones corta, cercana y lejana, etiquetas, saltos incondicionales, saltos condicionales, instrucciones de testeo, decisiones y bucles). Cada instrucción debe tener una definición y 1 ejemplo en lenguaje ensamblador. NO se aceptan enlaces de ningún tipo, todo debe ser subido mediante un documento al foro.
2. Desarrollar un código en lenguaje ensamblador que permita leer un número de un digito por teclado y determinar si el número es par, impar o cero. Documentar perfectamente todo el código. Generar tres capturas por pantalla de la ejecución del programa. Anexar Archivo .asm del programa ; Nombre del Autor: JOHN YARA ; Código ; Grupo No ;Fecha
: 79512473 : 301302A_611 : 20-04-2019
.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 msn3 PAR: mov ah,09h lea dx, msn3 int 21h jmp salir
;cuando es impar mostrar el msn2 IMPAR: mov ah,09h lea dx, msn2 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
Evidencia entrega código fuente
Arquitectura par-impar.asm
3. Desarrollar un código en lenguaje ensamblador 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). Al inicio del programa se deben capturar por teclado dos números de un digito cada uno. Documentar perfectamente todo el código. Generar tres capturas por pantalla de la ejecución del programa. Anexar Archivo .asm del programa
;-----------------------------------------------------------------------------------; Nombre del Autor: John Jairo Yara O ; Código: ; Grupo No:
;Fecha:
79512473 301302A_611
19-04-2019
; Desarrollar un código en lenguaje ensamblador 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). Al inicio del programa se ;deben capturar por teclado dos números de un digito cada uno ;------------------------------------------------------------------------------------
.model small; modelo de memoria ; cadena de caracteres .stack 100; tamaño de la pila
.data msj1 db 10,13,10,13, "INGRESE Primer Numero:",'$' msj2 db 13,10,"INGRESE Segundo Numero:",'$' msj3 db 13,10,'Multiplicacion:','$' msj4 db 13,10,'Potencia":','$'
var1
db 0 ;primer numero
var2
db 0 ; segundo numero
potencia db 1 ; la potencia vale uno inicalmente :base
db 0
; verificar
; exponente db 0 diez dw 10 ;se usa como divisor
.code
: programa
inicio:
mov dx,@data
; inicializa direccion segmneto datos
mov ds, dx
; pone puntero
xor ax ,ax
; se gurada valores de operando
xor bx,bx xor cx,cx mov var1,0 mov var2,0
mov ah,09 lea dx, msj1 int 21h
mov ah,01h lea dx, msj3
; mensaje ingrese primer numero
int 21h sub al,30h mov var1,al
mov ah,09 lea dx, msj2 int 21h
mov ah,01h int 21h sub al,30h mov var2,al
cmp var2,0 jz sr mov cl,var2
multi:
; operacion multiplicacion
add bl,var1 ; suma numero 1 asimismo loop Multi
sr:
mov ah,09 lea dx, msj3 int 21h
mov ax,bx call PRINT_NUM
mov ah,09 lea dx, msj4 int 21h
xor ax,ax ;deja regsitro enc eros para continuar con operacion xor bx,bx xor cx,cx
mov al, potencia cmp var2,0 jz sh
mov cl,var2
Pot: mul var1 loop Pot
sh: call PRINT_NUM jmp inicio
; vuelve al inicio de programa solicita valores se repetite como bucle
PRINT_NUM
PROC
NEAR
PUSH DX PUSH AX
; guarda residuo
CMP AX,0
jnz not_zero
;PUTC '0' JMP printed
not_zero:
CMP AX,0 JNS positive NEG AX
;PUTC '-'
positive:
;CALL PRINT_NUM_UNS
printed: POP AX
; devuelve valor que tenia AX
POP DX RET PRINT_NUM
ENDP
;PRINT_NUM_UNS NEAR PUSH AX PUSH BX PUSH CX PUSH DX
MOV CX,1
MOV BX, 10000 ; AX =0?
CMP BX,0 ;JZ print_zero
begin_print:
CMP CX,0 JZ end_print
;CMP CX.0
JE calc CMP AX,BX JB skip
calc:
MOV CX,0 MOV DX,0 DIV BX
ADD AL,30h ;PUTC AL
MOV AX,DX
skip:
PUSH AX MOV DX, 0 MOV AX,BX DIV diez MOV BX, AX POP AX
JMP begin_print
;print_zero:
;PUTC '0'
end_print: POP DX POP CX POP BX POP AX
RET ;PRINT_NUM_UNS ENDP
end
CODIGO FUENTE:
Conclusiones Se profundiza en el uso de instrucciones que contienen las órdenes a seguir para llevar a cabo una acción. Asimismo como estas órdenes mediante variables y uso de emul8086 permite cargarlas en memoria teniendo claro el comportamiento final de las órdenes escritas en lenguaje assembler
REFERENCIAS BIBLIOGRÁFICAS
García, F. (2011). Procesadores digitales de señal de altas prestaciones de Texas InstrumentsTM: de la familia TMS320C3x a la TMS320C6000 (págs.13 -68). Recuperado de https://bibliotecavirtual.unad.edu.co:2538/lib/unadsp/reader.action?ppg=1&docID=3194922&t m=1543531162476 Lindig Bos, M. (12 de 04 de 2010). ¿Qué hay detrás de las computadoras?. [N.p.]: Instituto Politécnico Nacional (págs. 1 - 152). Recuperado de https://bibliotecavirtual.unad.edu.co:2538/lib/unadsp/reader.action?ppg=1&docID=3187364&t m=1543530714213