Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Assembler
Ejercicios Avanzados
1. Escriba un programa que, dado un número IEEE754 de precisión simple,
almacenado en la variable numeroReal, copie el exponente del número
en la variable exponente y luego invierta el signo del número. Utilice la
siguiente declaración de variables:
.data
exponente DB ?
Emu8086 Debugger
4. Dado el programa que aparece a continuación, ejecutar paso a paso en el
Turbo Debugger y contestar:
1
.model small
.stack
.data
numeros DW 15, 22, 37, 46, 00h
resultado DW ?
.code
inicio:
mov ax, @data
mov ds, ax
mov ax, offset numeros
push ax
call subrutina
pop ax
mov resultado, cx
mov ax, 4C00h
int 21h
subrutina proc
push bp
mov bp, sp
mov bx, ss:[bp + 4] ; Direccion del
Arreglo
mov cx, 0
recorrer:
mov dx, ds:[bx]
cmp dx, 0
je fin
add cx, dx
add bx, 2
jmp recorrer
fin:
pop bp
ret
subrutina endp
end inicio
2
Subrutinas
5. Escriba la subrutina mayor que, dados dos números enteros de 16 bits
recibidos en los registros BX y CX, devuelva en AX el mayor de los dos.
9. Escriba un programa que cuente la cantidad de bits 1 en las variables dato8 (de 8
bits) y dato16 (de 16 bits). Crear dos subrutinas:
a. contarUnosByte que cuente el número de bits 1 en un byte. El byte debe ser pasado
en AL y el conteo devuelto en CX. Por ejemplo, si la subrutina recibe AL =
00101110, debe devolver CX = 4.
10.Grafique el estado de la pila y los registros afectados en cada paso del siguiente
fragmento de código Assembler. Suponga que la pila está inicialmente vacía.
3
...
pop bp
ret 4
Subrutina endp
11.Escriba la subrutina mayorArreglo que encuentre el mayor de los
números de un arreglo de words. La dirección del arreglo y su longitud se
reciben en la pila. El mayor número debe ser devuelto en AX.
14.Se tienen dos variables, str1 y str2. Realice un programa que concatene
ambos strings, guardando el resultado en str1. Para ello, escriba la
subrutina concatenar que reciba la dirección de los strings en la pila y
concatene el 2° al 1°. (Asuma que hay suficiente espacio en memoria en
el primer string para almacenar la concatenación).
Ejemplo. Se recibe:
Dir. de retorno
Dir. str2 |P|E|R|E|Z|0|
Dir. str1 |J|U|L|I|A|N| |0|
4
Bibliografía
1. Ruggiero, M., Addante, P. y Cicerchia, L. (2014) Assembler – Guía de
Estudio. Cátedra Arquitectura - Universidad Nacional del Noroeste de la
Provincia de Bs. As. (UNNOBA).