Documentos de Académico
Documentos de Profesional
Documentos de Cultura
COUNTER=$0004, PC=$0005, SP=$13FF, A=$98, B=$00, C=$00, E0=$00, D=$00, H=$00, L=$00
Buffer_direcc PC ($0005)
Bus_ADR Buffer_direcc ($0005)
BUS_CONTROL MEMR
BUS_DATA MEM[BUS_ADR] ( $D3) ; Lectura de memoria
BUS_INT BUS_DATA ( $D3)
RI BUS_INT ( $D3) ; Opcode de OUT ( $D3) en RI
Counter PC ($0005)
Counter Counter+#Bytes_INT; incremento en #Bytes ( Decodif de RI )
PC Counter ($0007)
Counter Counter-#Bytes_INT ; $0007 - 2
Counter Counter+1 ; $0005+1
COUNTER=$0006, PC=$0007, SP=$13FF, A=$98, B=$00, C=$00, E0=$00, D=$00, H=$00, L=$00
microprocesadores, clase N3 1
0000 ORG 0 ; PROGRAM START ADDRESS
0000 31FF13 LXI SP, RAMAD ; STACK DEFINITION
0003 3E98 MVI A, 98H ; CONTROL WORD FOR 8255,
0005 D317 OUT CONWO
0007 0600 NBU: MVI B, 0 ; RESET COUNTER
COUNTER=$0006, PC=$0007, SP=$13FF, A=$98, B=$00, C=$00, E0=$00, D=$00, H=$00, L=$00
COUNTER=$0006, PC=$0007, SP=$13FF, A= $98, B=$00, C=$00, E0=$00, D=$00, H=$00, L=$00
La ejecucin de la instruccin $0005 genero la occin de escribir el contenido del registro A ( $98)
en la puerta cuya direccin ($0017 CONWO ) es el segundo Byte de la instruccin. El PC ( $0007)
apunta a la siguiente instruccin a ejecutar. Obs, en la direccin de la puerta solo se consideran
los 8 bits menos significativos por que las puertas son solo 256.
microprocesadores, clase N3 2
Programa en assembler
ADR CONT LABEL NEM OPER COMENTARIO
microprocesadores, clase N3 3
Modificacin de Flags y uso de Stack
microprocesadores, clase N3 4
000B E603 ANI 3 ; MASK D0, D1
000D FE03 CPI 3 ; MEASURING PATH FREE?
000F C20700 JNZ NBU ; NOT BOTH UNBROKEN
COUNTER=$0002, PC=$0003, SP=$13FF, A=$9F, B=$00, C=$00, E0=$00, D=$00, H=$00, L=$00
Buffer_direcc PC ( $000D)
Bus_ADR Buffer_direcc ($000D)
BUS_CONTROL MEMR
BUS_DATA MEM[BUS_ADR] ( $FE ) ; Lectura de memoria
BUS_INT BUS_DATA ( $FE)
RI BUS_INT ( $FE) ; Opcode de CPI ( $FE) en RI
Counter PC ($000D)
Counter Counter+#Bytes_INT; incremento en #Bytes ( Decodif de RI )
PC Counter ($000F)
Counter Counter-#Bytes_INT ; $000F - 2
Counter Counter+1 ; $000D+1
COUNTER=$000E, PC=$000F, SP=$13FF, A=$9F, B=$00, C=$00, E0=$00, D=$00, H=$00, L=$00
microprocesadores, clase N3 5
000B E603 ANI 3 ; MASK D0, D1
000D FE03 CPI 3 ; MEASURING PATH FREE?
000F C20700 JNZ NBU ; NOT BOTH UNBROKEN
0012 DB14 LBU: IN LB
COUNTER=$000E, PC=$000F, SP=$13FF, A=$03, B=$00, C=$00, E0=$00, D=$00, H=$00, L=$00
COUNTER=$000E, PC=$000F, SP=$13FF, A=$03, B=$00, C=$00, E0=$00, D=$00, H=$00, L=$00
Al concluir la ejecucin de la instruccin $000D CPI, el nico resultado que se puede percibir est en el
Flag Z ( Z igual a 1), en la siguiente instruccin (000F JNZ NBU ) se cumple que Z=verdadero (1 ),
por lo tanto NZ (Not Z ) es Falso, entonces, como no se cumple la condicin no se ejecutar un salto a
NBU ( $0007), la prxima instruccin a ejecutarse ser: 0012 DB14 LBU: IN LB
microprocesadores, clase N3 6
Llamada a una subrutina
001A CD2A00 CALL WAIT ; TIME LOOP (e.g. adjustable to 1 ms)
001D DB14 IN LB
COUNTER=$0019, PC=$001A, SP=$13FF, A=$00, B=$00, C=$00, E0=$00, D=$00, H=$00, L=$00
COUNTER=$001B, PC=$001D, SP=$13FF, A=$00, B=$00, C=$00, E0=$00, D=$00, H=$00, L=$00
Al final del Fetch, el PC ( $0019) apunta a la direccin de memoria que tiene el Opcode ( $DB) de la
siguiente Instruccin, por su parte, Counter ($0019) apunta al segundo Byte de la actual instruccin
( $2A).
microprocesadores, clase N3 7
001A CD2A00 CALL WAIT ; TIME LOOP (e.g. adjustable to 1 ms)
001D DB14 IN LB
COUNTER=$001B, PC=$001D, SP=$13FF, A=$98, B=$00, C=$00, E0=$00, D=$00, H=$00, L=$00
COUNTER=$001B, PC=$001D, SP=$13FD, A=$98, B=$00, C=$00, E0=$00, D=$00, H=$00, L=$00
microprocesadores, clase N3 8
001A CD2A00 CALL WAIT ; TIME LOOP (e.g. adjustable to 1 ms)
001D DB14 IN LB
COUNTER=$001B, PC=$001D, SP=$13FF, A=$98, B=$00, C=$00, E0=$00, D=$00, H=$00, L=$00
COUNTER=$001B, PC=$002A, SP=$13FD, A=$98, B=$00, C=$00, E0=$00, D=$00, H=$00, L=$00
microprocesadores, clase N3 9
Retorno de una subrutina
002D C2C00 JNZ LOOP
0030 C9 RET ;
COUNTER=$002C, PC=$0030, SP=$13FD, A=$00, B=$00, C=$00, E0=$00, D=$00, H=$00, L=$00
Buffer_direcc PC ( $0030)
Bus_ADR Buffer_direcc ($0030)
BUS_CONTROL MEMR
BUS_DATA MEM[BUS_ADR] ( $C9 ) ; Lectura de memoria
BUS_INT BUS_DATA ( $C9)
RI BUS_INT ( $C9) ; Opcode de RET ( $C9) en RI
Counter PC ($0003)
Counter Counter+#Bytes_INT; incremento en #Bytes ( Decodif de RI )
PC Counter ($0031)
Counter Counter-#Bytes_INT ; $0031 - 1
Counter Counter+1 ; $0030+1
COUNTER=$0031, PC=$0031, SP=$13FD, A=$00, B=$00, C=$00, E0=$00, D=$00, H=$00, L=$00
microprocesadores, clase N3 10
002D C2C00 JNZ LOOP
0030 C9 RET ;
COUNTER=$0031, PC=$0031, SP=$13FD, A=$98, B=$00, C=$00, E0=$00, D=$00, H=$00, L=$00
Buffer_direcc SP ($13FD)
Bus_ADR Buffer_direcc ($13FD)
BUS_CONTROL MEMR
BUS_DATA MEM[BUS_ADR] ( $1D ) ; Lectura de memoria (STACK)
BUS_INT BUS_DATA ( $1D)
PC_LOW BUS_INT ( $1D) ; PC_LOW recuperado desde el Stack
COUNTER=$001B, PC=$001D, SP=$13FF, A=$98, B=$00, C=$00, E0=$00, D=$00, H=$00, L=$00
microprocesadores, clase N3 11
El PC es recuperada desde el Stack, el Stack Pointer ha sido incrementado 2. El Stack tiene la