Ejercicios en lenguaje ensamblador

Páginas: 7 (1590 palabras) Publicado: 26 de junio de 2011
Ejercicio 3
Hacer un programa que llene las localidades de memoria desde la dirección 0500h en adelante con números pares del 00h al 32h (de forma ascendente)
CÓDIGO
.model small
.stack
.data
.code
mov ax,@data
mov ds,ax
mov cl,02h ;valor a dividir para averiguar si el numero es par
mov ax,00h ;limpia el registro de ax
mov dx,ax ;pasa lo que estaen ax a dx
mov si,00h ;pone el indice en 0
lazo:
div cl ;divide entre cl para saber si el numero es par
cmp ah,00h ;mira si el residuo es 0
jnz salto ;salta si el residuo no es 0
mov [0500h+si],dl ;mueve el resultado(numero par) a la localidad [0500+SI]
salto:
add dx,01h ;incrementa dx en 01
mov ax,dx;mueve lo que se encuentra en dx hacia ax para efectuar la siguiente divicion
inc si ;incrementa el valor de si en 1
cmp si,34h ;compara el valor en si para poner el ultimo valor que es 32h
jnz lazo ;salta si no ha alcanzado el valor de si
mov ax,4C00h ;devuleve el control al usuario
int 21h
end;indica el final del programa
Inicio

AX=00h
CL=02h
SI=00h

Div cl

Ah=0
NO

SI
[0500h+SI]

add dx,01h
mov ax,dx
inc si
cmp SI,34h
cmp si,34h

NO
R=0

FIN
SI

Ejercicio 8
Hacer un programa que identifique cuantos números impares hay en una lista de 16 números de 8 bits que comienzan en la dirección 0500h, almacene el resultado en la 0600h.CÓDIGO

.model small
.stack
.data
Mascara db 02h
.code
mov ax,@data
mov ds,ax
mov si,0000h ;pone el indice en 0h
mov cx,1100h ;pone un contador en 11h, y un segundo contador en 00
mov dh,mascara ;servira para saber si el numero es par

salto:
mov dl,[0500h+si] ;copia [0500h+indice] al registro
inc si ;incrementa el indice
sub ch,01h;decrementa el contador1
cmp ch,01h

js final ;salta si el contador1 es cero
mov ax,00h ;limpia el registro ax
mov al,dl ;copia lo que habia en [0500h+indice] a AL
div dh ;divide o que habia en [0500h+indice] entre 2
cmp ah,01h
jnz salto ;salta si el residuo no es cero(el numero no es par)
add cl,01h ;aumenta el segundo contador
cmp ch,01hjnz salto ;salta si el contador1 es cero

final:
mov [0600h],cl ;guarda la cantidad de numeros impares(contador2) en la memoria

mov ax,4C00h
int 21h
end

Inicio

Máscara: 02h
Contador1: 11h (CH)
Contador2:00h (CL)
Índice= 00h (SI)

DH= Máscara

DL= 0500h
I= I+1
Contador1= Contador-1

Contador1≠0

NO

AX=0000h
AL=DL

AH(res), AL(cos)= AL/DH¿Residuo≠0?

NO
[0600h]= Contador2

Contador2= Contador2 + 1

¿Contador1≠0?


Fin

Ejercicio 9
Hacer un programa que ordene una lista de 10 números de 8 bits (sin signo) en orden ascendente, los números estarán a partir de la 0800h, al ordenarlos deberán quedar siempre a partir de la dirección 0800h

CÓDIGO
.model small
.stack
.data
.code
mov ax,@data
mov ds,ax
; parahacer el ordenamiento se recurrio al metodo de
;burbuja, el cual recorre las localidades de memoria
;varias veces comparando cada uno de los numeros e
;intercambiandolos para que se ordenen de forma ascendente

mov di,0000h ;se utiliza este registro apuntador para contar el
;numero de veces que pasa por todas la localidades
mov si,0000h ;se utiliza esteregistro apuntador para ir
;recorriendo cada una de las localidades
mov bx,0800h ;nos indica la direccion de la memoria donde inician
;los datos a ordenar

for2: ;nos ayuda a controlar el numero de veces que se recorre todos los datos
cmp di,0Ah ;compara que se pase por todos los datos mas de 10 veces, ya q solo son 10 datos
jb...
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
  • Ejercicio en ensamblador
  • Lenguaje ensamblador

Conviértase en miembro formal de Buenas Tareas

INSCRÍBETE - ES GRATIS