Lenguaje Ensamblador

Páginas: 15 (3502 palabras) Publicado: 16 de septiembre de 2013
Universidad Nacional Autónoma de Nicaragua – León
Departamento de Computación
Arquitectura de Computadores I
Práctica de Laboratorio #2

Prácticas de programación en el ensamblador 8088/86:
Instrucciones de manejo de bits y de transferencia de control.
Direccionamiento relativo.

Objetivos:

Que el estudiante se familiarice con las instrucciones de manejo de bits y de transferencia decontrol mediante la realización de pequeños programas en el ensamblador 8088/86.

Enunciado de programas:

1. Programa que multiplica cada uno de los datos de una tabla de 16 números enteros de 8 bits sin signo por un número de 8 bits del mismo tipo almacenado todo ello en memoria. El resultado se almacena en una tabla de 16 elementos de 16 bits. Condición: se tienen que utilizar losregistros base BX e índice, SI y DI, para acceder a los datos de la tabla de forma relativa.
; multi-segment executable file template.

data segment
; add your data here!
tabla db 2,3,4,5,6,7,8,9,4,7,1,4,3,7,2,3h
num db 3
resul dw 16 dup(0)
pkey db "press any key...$"
ends

stack segment
dw 128 dup(0)
ends

code segment
start:
; set segment registers:
movax, data
mov ds, ax
mov es, ax

; add your code here
mov cx,16
xor ax,ax
bucle:
mov al,tabla[si];movemos el valor del elemento sub i a ax
mul num
mov resul[di],ax;movemos el resultado de la multiplicacion a resul
inc si
inc di
loop bucle

lea dx, pkey
mov ah, 9
int 21h ; outputstring at ds:dx

; wait for any key....
mov ah, 1
int 21h

mov ax, 4c00h ; exit to operating system.
int 21h
ends

end start ; set entry point and stop the assembler.

2. Programa que divide los 16 elementos de una tabla de números enteros de 8 bits sin signo por los elementos de otra tabla de 16 elementos del mismo tipo. El resultado se almacena enotra tabla de la misma cantidad de elementos situada en la memoria.
; multi-segment executable file template.

data segment
; add your data here!
pkey db "press any key...$"
table db 2,6,12,20,10,18,14,24,54,3,8,6,8,10,6,7
num db 1,2,3,4,5,6,7,8,9,1,2,3,4,5,6,7
resl db 16 dup(0)
ends

stack segment
dw 128 dup(0)
ends

code segment
start:
; set segmentregisters:
mov ax, data
mov ds, ax
mov es, ax

; add your code here
mov cx,16
;xor si,si
xor ax,ax
bucle:
mov al,table[si];se mueve el contenido de tabla[i] a al
div num[si]

mov resl[si],al;movemos el resultado que se encuentra en al a la variable resl
inc si
loop bucle ;retornamos al comienzo del bucle hasta que no secumpla la condicion que cx se igual a cero

lea dx, pkey
mov ah, 9
int 21h ; output string at ds:dx

; wait for any key....
mov ah, 1
int 21h

mov ax, 4c00h ; exit to operating system.
int 21h
ends

end start ; set entry point and stop the assembler.



3. Programa que devuelve el valor máximo y mínimo enlas direcciones de memoria Max y Min respectivamente de una tabla de 8 números de 16 bits sin signo almacenada en memoria que comienza en la dirección Datos.

; multi-segment executable file template.

data segment
; add your data here!
pkey db "press any key...$"
table dw 8,4,7,10,15,3,6,9
maximo dw ?
minimo dw ?

ends

stack segment
dw 128 dup(0)ends

code segment
start:
; set segment registers:
mov ax, data
mov ds, ax
mov es, ax


; add your code here

mov ax, table[0];movemos el valor del primer elemento del array al registra ax
mov bx, ax; movemos el valor del registro ax al registro bx

mov si, 2
mov cx, 7;movemos el valor de 7 para saber...
Leer documento completo

Regístrate para leer el documento completo.

Estos documentos también te pueden resultar útiles

  • Lenguaje Ensamblador
  • Lenguaje ensamblador
  • Lenguaje ensamblador
  • Lenguaje ensamblador
  • Lenguaje ensamblador
  • Lenguaje ensamblador
  • Lenguaje ensamblador
  • Qué es el lenguaje ensamblador

Conviértase en miembro formal de Buenas Tareas

INSCRÍBETE - ES GRATIS