Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Taller 1: Simulación
Asignatura: Estructuras Computacionales
Docente: Jaime León Hincapie
Monitor: Yohan Ricardo Céspedes Villar
Universidad Nacional de Colombia - Sede Manizales
Departamento de Ingenierı́a Eléctrica, Electrónica y Computación.
clr a DB 03h
djnz r2,inicio DB 04h
fin: DB 05h
sjmp fin DB 06h
end DB 07h
DB 08h
XX. E JERCICIO 20 DB 09h
end
Editar una serie de caracteres ASCII decimales reempla-
zando los ceros de la izquierda por espacios. La serie empieza
en la posición de memoria 26H. Asumir que ésta consiste XXII. E JERCICIO 22
solamente de dı́gitos decimales en ASCII. La longitud de la Encontrar el número mayor de una tabla, la longitud se
serie se encuentra en la posición de memoria 25H. El espacio encuentra en 26H, el bloque comienza en 27H. Almacene
es #20H (Alt + 32) y el cero es #30H (Alt + 48). Nota: 20 el máximo en la posición de memoria 25H. Asumir que los
en Hexa corresponde a 32 en Decimal, 30 en hexa corresponde datos son todos números binarios de 8 bits sin signo.
a 48 en Decimal.
inicio:
inicio: mov r0, #27h
mov r0, #26h incre:
emp: mov 24h, @r0
mov a, @r0 inc r0
cjne a, #30h, fin comp:
mov @r0, #20h ;#20 porque los ceros mov a, 24h
inc r0 ;de la izquierda se mov 23h, @r0
dec 25h ;reemplazan por espacios. cjne a, 23h, seg
mov a, 25h seg:
jz fin jc menor
sjmp emp mov 25h, 24h
fin: dec 26h
sjmp inicio mov a, 26h
end jz fin
inc r0
XXI. E JERCICIO 21 sjmp comp
menor:
Convertir el contenido de 25H que es un carácter ASCII,
mov 25h, @r0
a un número decimal y almacenar el resultado en 26H. Si el
dec 26h
contenido de 25H no es la representación ASCII de un dı́gito
mov a, 26h
decimal, coloque la posición de memoria 26H en #0F F H.
jz fin
Los caracteres ASCII correspondientes a la serie de valores
sjmp incre
decimales son: 0 = #30H, 1 = #31H, ... , 9 = #39H.
fin:
inicio: sjmp inicio
mov DPTR,#30h end
mov a,25h
anl a,#30h XXIII. E JERCICIO 23
subb A,#30h
Convertir el contenido de la posición de memoria 25H que
jnz cero
es un numero hexadecimal a decimal y guardar el resultado en
mov a,25h
las posiciones de memoria 20H, 21H y 22H. El dı́gito más
movc a,@a+DPTR
significativo debe quedar almacenado en 20H. El número que
mov 26h,a
se encuentra en 25H no tiene signo.
sjmp inicio
Ej: 25H = #0F F H entonces 20H = #02H, 21H = #05H
cero:
y 22H = #05H;
mov a,#0FFh
Recordar que F F (hexa) = 255 (decimal)
mov 26h,a
sjmp inicio inicio:
mov 25h,p0 ;tomar entrada del puerto p0
org 60h mov 20h,#00h ;Limpiar la posicion
DB 00h mov 21h,#00h ;de las centenas, decenas
DB 01h mov 22h,#00h ;y unidades
DB 02h mov a, 25h
6
centenas: inc r0
subb a, #64h sjmp comp
jc Decenas fin:
inc 20h sjmp inicio
sjmp centenas end
Decenas:
add a, #64h XXVI. E JERCICIO 26
Otra:
Encontrar en una serie de caracteres ASCII el primer
subb a, #0ah
carácter que no sea espacio (#20H), la serie empieza en la
jc Unidades
posición de memoria 27H. Almacenar la dirección del primer
inc 21h
carácter que no sea un espacio en 25H y 26H. El nibble más
sjmp Otra
significativo debe quedar almacenado en 25H.
Unidades:
add a, #0ah inicio:
inc a mov r0, #27h
mov 22h,a cjne a, #20h, noig
carl: inc r0
sjmp inicio sjmp inicio
end noig:
mov a, @r0
mov 22h, a
XXIV. E JERCICIO 24 swap a
anl a, #0Fh
Convertir el contenido de la posición de memoria 25H que
mov 25h, a
está en decimal a Hexadecimal y guardar el resultado en la
anl 22h, #0Fh
posición 26H. El número que se encuentra en 25H no tiene
mov 26h, 22h
signo y es menor que #100D.
sjmp fin
num_dec equ 25h fin:
num_hex equ 26h sjmp inicio
; La operacion efectuada es la siguiente: end
;num_hex = num_dec - (num_dec / 10) * 6
inicio: XXVII. E JERCICIO 27
mov a, num_dec
En un bloque de caracteres (números) cuya longitud se
mov b, #10h
encuentra en la posición de memoria 26H, almacenar el
div ab
número de elementos negativos en 25H. El bloque empieza
mov b, #06H
en 27H. Los números serán de 7 bits, el octavo bit (M SB)
mul ab
será el signo: si es 1, el número es negativo.
mov r0, a
mov a, num_dec inicio:
subb a, r0 mov r1,26h
mov num_hex, a mov r0, #27h
sjmp inicio comen:
end mov a, @r0
anl a, #80h
XXV. E JERCICIO 25 cjne a, #80h, nig
inc 25h
Determinar el tamaño de una serie de caracteres ASCII
inc r0
de 7 bits. La serie comienza en la posición de memoria 26H.
dec r1
El fin de la serie está marcado por el carácter enter CR =
mov a, @r1
#0DH (Enter = Alt + 13). Almacenar la longitud de la
jz fin
serie excluyendo CR en la posición de memoria 25H.
sjmp comen
inicio: nig:
mov r0, #26h inc r0
comp: dec r1
cjne @r0, #0Dh, cad mov a, @r1
sjmp fin jz fin
cad: sjmp comen
inc 25h fin:
7