Codigo Procesador 8-Bits

Embed Size (px)

Citation preview

  • 8/7/2019 Codigo Procesador 8-Bits

    1/20

    Enrique Galindo Crdenas

    Cdigo de un programa hecho en Visual Basic para la simulacin de un procesador de 8-bits.

    Dim ACC As Long 'Valor ACCDim nuevoDato As Long 'Dato insertado al inicio del programa, y que cambia por cada operacion

    Dim nuevoDatoBin As String 'Dato de nuevoDato en BinarioDim datoInmediato As Long 'Dato inmediato al ser solicitado para su cargaDim datoInmediatoBin As String 'Dato de datoInmediato en BinarioDim codeOp As String 'Codigo de operacion actualDim cicloMaquina As Integer 'Ciclo Maquina actualDim edoPC As Long 'Estado del PCDim linActDec As Integer 'Linea Activa DecodificadaDim numBits As Integer 'No de bits del microprocesador = 8 bitsDim opcion As String 'Indica que operacion realizar con dato inmediatoDim nombreArchivo As String 'Nombre y ruta por default del archivo a guardar

    Private Function Existe(ByVal unFichero As String) As BooleanOn Local Error Resume Next

    Existe = Len(Dir$(unFichero))If Err Then

    Existe = FalseEnd IfErr = 0

    End Function

    Private Function guardaArchivo(datos As String) As Boolean

    'CommonDialog guardar'Preguntar el nombre del fichero y guardarloWith CommonDialog1

    On Local Error Resume Next'Esto har que VB devuelva un error al pulsar Cancelar.CancelError = True

    .DialogTitle = "Guardar el fichero".FileName = nombreArchivo.ShowSave

    'Si no se ha producido un errorIf Err.Number = 0 Then

    If Len(.FileName) Then

    nombreArchivo = .FileName

    'Guardar

  • 8/7/2019 Codigo Procesador 8-Bits

    2/20

    Dim i As LongDim SobreEscribir As BooleanDim informacion As String

    informacion = "------Microprocesador de 8 bits Tabla Secuencial de operaciones------" &

    vbCrLf & vbCrLf &

    "************************************************************************************************************************************************" & vbCrLf & vbCrLf

    'Se asigna el valor Verdadero, por si no existeSobreEscribir = True'Si ya existe, preguntarIf Existe(nombreArchivo) Then

    If MsgBox("El fichero ya existe." & vbCrLf & _"Quieres sobreescribirlo?", vbQuestion + vbYesNo, "Microprocesador 8 bits") =

    vbNo Then'Hemos contestado que no, as que...SobreEscribir = FalseguardaArchivo = FalseguardaArchivo (nombreArchivo)

    Else

    'guardaArchivo = TrueEnd If

    End If

    'Si no existe o se quiere sobreescribir...If SobreEscribir Then

    i = FreeFile

    informacion = informacion & Tabla.Text & vbCrLf &"***********************************************************************************************************************************************"

    Open nombreArchivo For Output As iPrint #i, informacionClose i'Ya hemos guardado las modificacionesguardaArchivo = True

    ElseguardaArchivo = False

    End IfEnd If

    ElseguardaArchivo = False

    End IfEnd With

    Err = 0

  • 8/7/2019 Codigo Procesador 8-Bits

    3/20

    End Function

    Private Function llenaTabla(activa As String, contMem As String, regAct As String, instruccion AsString) As Boolean

    Tabla.Text = Tabla.Text & " " & cicloMaquina & " " & " " & activa & " " &decBin(edoPC) & " " & contMem & " " & " " & regAct & " " & linActDec & "" & decBin(ACC) & " " & instruccion & vbCrLf ' vbCrLf es retorno de carro lo mismo que CHR(13)

    llenaTabla = True

    End Function

    Private Function binDec(numBin As String) As Long

    Dim i As IntegerDim j As IntegerDim k As Integer

    k = 0j = 0For i = numBits To 1 Step -1

    If Mid$(numBin, i, 1) = "1" Thenk = k + (2 ^ j)

    End Ifj = j + 1

    Next

    binDec = k

    End Function

    Private Function decBin(numDec As Long) As String

    Dim i As IntegerDim sTmp As String ' Cadena temporal

    sTmp = ""For i = numBits - 1 To 0 Step -1

    If numDec And 2 ^ i ThensTmp = sTmp & "1"

    ElsesTmp = sTmp & "0"

    End IfNext

    decBin = sTmp

  • 8/7/2019 Codigo Procesador 8-Bits

    4/20

    End Function

    Private Function operador(opcion As String) As Boolean

    Dim sec As Boolean 'porque toda funcion regresa dato, asi no marca error

    Select Case opcionCase "suma"

    Codigo_operacion ("Suma")

    sec = llenaTabla("A", codeOp, "RI ", "Suma ACC con dato inmediato")edoPC = edoPC + 1 'PC aumenta unosec = llenaTabla("E", codeOp, "PC ", "Suma ACC con dato inmediato")

    nuevoDato = datoInmediatonuevoDatoBin = datoInmediatoBin

    sec = llenaTabla("B", nuevoDatoBin, "RD ", "Suma ACC con dato inmediato")edoPC = edoPC + 1 'PC aumenta unosec = llenaTabla("E", nuevoDatoBin, "PC ", "Suma ACC con dato inmediato")sec = llenaTabla("C", nuevoDatoBin, "Acct", "Suma ACC con dato inmediato")

    If ACC + nuevoDato > 255 Then

    MsgBox "El dato es mayor a 255"

    nuevoDato = binDec(decBin(ACC + nuevoDato))nuevoDatoBin = decBin(nuevoDato)ACC = nuevoDato 'Suma ACC con dato inmediato

    ElsenuevoDato = ACC + nuevoDatonuevoDatoBin = decBin(nuevoDato)ACC = nuevoDato 'Suma ACC con dato inmediato

    End If

    sec = llenaTabla("D", nuevoDatoBin, "Acc ", "Suma ACC con dato inmediato")cicloMaquina = cicloMaquina + 1

    DatoACC.Text = ACC 'Se despliega al usuario resultado finalTabla.Text = Tabla.Text & "--------------------------------------------------" & vbCrLf

    Tabla.Text = Tabla.Text & "---- F I N Suma ----" & vbCrLf

    Case "resta"

    Codigo_operacion ("Resta")

    sec = llenaTabla("A", codeOp, "RI ", "Resta ACC con dato inmediato")

  • 8/7/2019 Codigo Procesador 8-Bits

    5/20

    edoPC = edoPC + 1 'PC aumenta unosec = llenaTabla("E", codeOp, "PC ", "Resta ACC con dato inmediato")

    nuevoDato = datoInmediatonuevoDatoBin = datoInmediatoBin

    sec = llenaTabla("B", nuevoDatoBin, "RD ", "Resta ACC con dato inmediato")edoPC = edoPC + 1 'PC aumenta unosec = llenaTabla("E", nuevoDatoBin, "PC ", "Resta ACC con dato inmediato")sec = llenaTabla("C", nuevoDatoBin, "Acct", "Resta ACC con dato inmediato")

    If ACC - nuevoDato < -256 Then

    MsgBox "El dato es menor a -256"

    nuevoDato = binDec(decBin(ACC - nuevoDato))nuevoDatoBin = decBin(nuevoDato)ACC = nuevoDato 'Resta ACC con dato inmediato

    ElsenuevoDato = ACC - nuevoDatonuevoDatoBin = decBin(nuevoDato)ACC = nuevoDato 'Resta ACC con dato inmediato

    End If

    sec = llenaTabla("D", nuevoDatoBin, "Acc ", "Resta ACC con dato inmediato")cicloMaquina = cicloMaquina + 1

    DatoACC.Text = ACC 'Se despliega al usuario resultado finalTabla.Text = Tabla.Text & "--------------------------------------------------" & vbCrLf

    Tabla.Text = Tabla.Text & "---- F I N Resta ----" & vbCrLf

    Case "multiplica"

    Codigo_operacion ("Multiplica")

    sec = llenaTabla("A", codeOp, "RI ", "Multiplica ACC con dato inmediato")edoPC = edoPC + 1 'PC aumenta unosec = llenaTabla("E", codeOp, "PC ", "Multiplica ACC con dato inmediato")

    nuevoDato = datoInmediatonuevoDatoBin = datoInmediatoBin

    sec = llenaTabla("B", nuevoDatoBin, "RD ", "Multiplica ACC con dato inmediato")edoPC = edoPC + 1 'PC aumenta unosec = llenaTabla("E", nuevoDatoBin, "PC ", "Multiplica ACC con dato inmediato")sec = llenaTabla("C", nuevoDatoBin, "Acct", "Multiplica ACC con dato inmediato")

    If ACC * nuevoDato > 255 Or ACC * nuevoDato < -256 Then

    MsgBox "El dato es menor a -256 o mayor a 255"

  • 8/7/2019 Codigo Procesador 8-Bits

    6/20

    nuevoDato = binDec(decBin(ACC * nuevoDato))nuevoDatoBin = decBin(nuevoDato)ACC = nuevoDato 'Multiplica ACC con dato inmediato

    ElsenuevoDato = ACC * nuevoDato

    nuevoDatoBin = decBin(nuevoDato)ACC = nuevoDato 'Multiplica ACC con dato inmediatoEnd If

    sec = llenaTabla("D", nuevoDatoBin, "Acc ", "Multiplica ACC con dato inmediato")cicloMaquina = cicloMaquina + 1

    DatoACC.Text = ACC 'Se despliega al usuario resultado finalTabla.Text = Tabla.Text & "--------------------------------------------------" & vbCrLf

    Tabla.Text = Tabla.Text & "---- F I N Multiplica ----" & vbCrLf

    Case "divide"

    Codigo_operacion ("Divide")

    sec = llenaTabla("A", codeOp, "RI ", "Divide ACC con dato inmediato")edoPC = edoPC + 1 'PC aumenta unosec = llenaTabla("E", codeOp, "PC ", "Divide ACC con dato inmediato")

    nuevoDato = datoInmediatonuevoDatoBin = datoInmediatoBin

    sec = llenaTabla("B", nuevoDatoBin, "RD ", "Divide ACC con dato inmediato")edoPC = edoPC + 1 'PC aumenta unosec = llenaTabla("E", nuevoDatoBin, "PC ", "Divide ACC con dato inmediato")sec = llenaTabla("C", nuevoDatoBin, "Acct", "Divide ACC con dato inmediato")

    nuevoDato = ACC / nuevoDatonuevoDatoBin = decBin(nuevoDato)ACC = nuevoDato 'Divide ACC con dato inmediato

    sec = llenaTabla("D", nuevoDatoBin, "Acc ", "Divide ACC con dato inmediato")cicloMaquina = cicloMaquina + 1

    DatoACC.Text = ACC 'Se despliega al usuario resultado finalTabla.Text = Tabla.Text & "--------------------------------------------------" & vbCrLf

    Tabla.Text = Tabla.Text & "---- F I N Divide ----" & vbCrLf

    Case "xor"

    Codigo_operacion ("Xor")

  • 8/7/2019 Codigo Procesador 8-Bits

    7/20

    sec = llenaTabla("A", codeOp, "RI ", "Xor ACC con dato inmediato")edoPC = edoPC + 1 'PC aumenta unosec = llenaTabla("E", codeOp, "PC ", "Xor ACC con dato inmediato")

    nuevoDato = datoInmediato

    nuevoDatoBin = datoInmediatoBinsec = llenaTabla("B", nuevoDatoBin, "RD ", "Xor ACC con dato inmediato")edoPC = edoPC + 1 'PC aumenta unosec = llenaTabla("E", nuevoDatoBin, "PC ", "Xor ACC con dato inmediato")sec = llenaTabla("C", nuevoDatoBin, "Acct", "Xor ACC con dato inmediato")

    nuevoDato = ACC Xor nuevoDatonuevoDatoBin = decBin(nuevoDato)ACC = nuevoDato 'Xor ACC con dato inmediato

    sec = llenaTabla("D", nuevoDatoBin, "Acc ", "Xor ACC con dato inmediato")cicloMaquina = cicloMaquina + 1

    DatoACC.Text = ACC 'Se despliega al usuario resultado finalTabla.Text = Tabla.Text & "--------------------------------------------------" & vbCrLf

    Tabla.Text = Tabla.Text & "---- F I N Xor ----" & vbCrLf

    Case "and"

    Codigo_operacion ("And")

    sec = llenaTabla("A", codeOp, "RI ", "And ACC con dato inmediato")edoPC = edoPC + 1 'PC aumenta unosec = llenaTabla("E", codeOp, "PC ", "And ACC con dato inmediato")

    nuevoDato = datoInmediatonuevoDatoBin = datoInmediatoBin

    sec = llenaTabla("B", nuevoDatoBin, "RD ", "And ACC con dato inmediato")edoPC = edoPC + 1 'PC aumenta unosec = llenaTabla("E", nuevoDatoBin, "PC ", "And ACC con dato inmediato")sec = llenaTabla("C", nuevoDatoBin, "Acct", "And ACC con dato inmediato")

    nuevoDato = ACC And nuevoDatonuevoDatoBin = decBin(nuevoDato)ACC = nuevoDato 'And ACC con dato inmediato

    sec = llenaTabla("D", nuevoDatoBin, "Acc ", "And ACC con dato inmediato")cicloMaquina = cicloMaquina + 1

    DatoACC.Text = ACC 'Se despliega al usuario resultado final

  • 8/7/2019 Codigo Procesador 8-Bits

    8/20

    Tabla.Text = Tabla.Text & "--------------------------------------------------" & vbCrLf

    Tabla.Text = Tabla.Text & "---- F I N And ----" & vbCrLf

    Case "or"

    Codigo_operacion ("Or")sec = llenaTabla("A", codeOp, "RI ", "Or ACC con dato inmediato")edoPC = edoPC + 1 'PC aumenta unosec = llenaTabla("E", codeOp, "PC ", "Or ACC con dato inmediato")

    nuevoDato = datoInmediatonuevoDatoBin = datoInmediatoBin

    sec = llenaTabla("B", nuevoDatoBin, "RD ", "Or ACC con dato inmediato")edoPC = edoPC + 1 'PC aumenta unosec = llenaTabla("E", nuevoDatoBin, "PC ", "Or ACC con dato inmediato")sec = llenaTabla("C", nuevoDatoBin, "Acct", "Or ACC con dato inmediato")

    nuevoDato = ACC Xor nuevoDatonuevoDatoBin = decBin(nuevoDato)ACC = nuevoDato 'Or ACC con dato inmediato

    sec = llenaTabla("D", nuevoDatoBin, "Acc ", "Or ACC con dato inmediato")cicloMaquina = cicloMaquina + 1

    DatoACC.Text = ACC 'Se despliega al usuario resultado finalTabla.Text = Tabla.Text & "--------------------------------------------------" & vbCrLf

    Tabla.Text = Tabla.Text & "---- F I N Or ----" & vbCrLf

    End Select

    operador = TrueEnd Function

    Private Function Codigo_operacion(seleccion As String)Select Case seleccion

    Case "Carga"codeOp = "00000000"linActDec = 1

    Case "Noop"codeOp = "00000001"linActDec = 2

    Case "Not"codeOp = "00000010"linActDec = 3

  • 8/7/2019 Codigo Procesador 8-Bits

    9/20

    Case "Suma"codeOp = "00000011"linActDec = 4

    Case "Resta"codeOp = "00000100"linActDec = 5

    Case ">"codeOp = "00000110"linActDec = 7

    Case "Or"codeOp = "00000111"linActDec = 8

    Case "And"codeOp = "00001000"linActDec = 9

    Case "Borra"codeOp = "00001001"linActDec = 10

    Case "Incrementa"codeOp = "00001010"linActDec = 11

    Case "Decrementa"codeOp = "00001011"linActDec = 12

    Case "Xor"codeOp = "00001100"linActDec = 13

    Case "Divide"codeOp = "00001101"linActDec = 14

    Case "Multiplica"codeOp = "00001110"linActDec = 15

    End Select

    Codigo_operacion = codeOpEnd Function

    Private Sub Andop_Click()Label5.Visible = TrueLabel6.Visible = TrueDato2.Visible = TrueBinario2.Visible = TrueOperacion.Visible = True

  • 8/7/2019 Codigo Procesador 8-Bits

    10/20

    Operaciones.Enabled = False

    opcion = "and"

    End Sub

    Private Sub Borra_Click()

    Dim sec As Boolean 'porque toda funcion regresa dato, asi no marca error

    Codigo_operacion ("Borra")

    sec = llenaTabla("A", codeOp, "RI ", "Borra ACC")edoPC = edoPC + 1 'PC aumenta unosec = llenaTabla("E", codeOp, "PC ", "Borra ACC")sec = llenaTabla("B", nuevoDatoBin, "RD ", "Borra ACC")edoPC = edoPC + 1 'PC aumenta unosec = llenaTabla("E", nuevoDatoBin, "PC ", "Borra ACC")sec = llenaTabla("C", nuevoDatoBin, "Acct", "Borra ACC")

    nuevoDato = 0nuevoDatoBin = decBin(nuevoDato)ACC = nuevoDato 'Se borra ACC

    sec = llenaTabla("D", nuevoDatoBin, "Acc ", "Borra ACC")cicloMaquina = cicloMaquina + 1

    DatoACC.Text = ACC 'Se despliega al usuario resultado finalTabla.Text = Tabla.Text & "--------------------------------------------------" & vbCrLf

    Tabla.Text = Tabla.Text & "----F I N Borra ----" & vbCrLf

    End Sub

    Private Sub Carga_Click()

    Dim sec As Boolean 'porque toda funcion regresa dato, asi no marca error

    Codigo_operacion ("Carga")

    sec = llenaTabla("A", codeOp, "RI ", "Carga ACC con dato inmediato")edoPC = edoPC + 1 'PC aumenta unosec = llenaTabla("E", codeOp, "PC ", "Carga ACC con dato inmediato")sec = llenaTabla("B", nuevoDatoBin, "RD ", "Carga ACC con dato inmediato")edoPC = edoPC + 1 'PC aumenta unosec = llenaTabla("E", nuevoDatoBin, "PC ", "Carga ACC con dato inmediato")sec = llenaTabla("C", nuevoDatoBin, "Acct", "Carga ACC con dato inmediato")

  • 8/7/2019 Codigo Procesador 8-Bits

    11/20

    ACC = nuevoDato 'Se carga finalmente ACC

    sec = llenaTabla("D", nuevoDatoBin, "Acc ", "Carga ACC con dato inmediato")cicloMaquina = cicloMaquina + 1

    DatoACC.Text = ACC 'Se despliega al usuario resultado finalTabla.Text = Tabla.Text & "--------------------------------------------------" & vbCrLf

    Tabla.Text = Tabla.Text & "----F I N Carga ----" & vbCrLfEnd Sub

    Private Sub Dato_Change()Inicio.Enabled = TrueDim lngNum As Integer

    lngNum = Val(Dato.Text)

    If lngNum < -256 Or lngNum > 255 ThenMsgBox "El dato debe de ser un numero entre -256 a 255.", , "Microprocesador 8 bits"Dato.Text = ""

    ElseBinario.Text = decBin(Val(Dato.Text))

    End IfEnd Sub

    Private Sub Dato2_Change()

    Operacion.Enabled = TrueDim lngNum As Integer

    lngNum = Val(Dato2.Text)

    If lngNum < -256 Or lngNum > 255 ThenMsgBox "El dato debe de ser un numero entre -256 a 255.", , "Microprocesador 8 bits"Dato2.Text = ""

    ElseBinario2.Text = decBin(Val(Dato.Text))

    End If

    Binario2.Text = decBin(Val(Dato2.Text))End Sub

  • 8/7/2019 Codigo Procesador 8-Bits

    12/20

    Private Sub DatoACC_Change()

    BinarioACC.Text = decBin(Val(DatoACC.Text))

    End Sub

    Private Sub Decrementa_Click()

    Dim sec As Boolean 'porque toda funcion regresa dato, asi no marca error

    Codigo_operacion ("Decrementa")

    sec = llenaTabla("A", codeOp, "RI ", "Decrementa ACC")edoPC = edoPC + 1 'PC aumenta unosec = llenaTabla("E", codeOp, "PC ", "Decrementa ACC")sec = llenaTabla("B", nuevoDatoBin, "RD ", "Decrementa ACC")edoPC = edoPC + 1 'PC aumenta unosec = llenaTabla("E", nuevoDatoBin, "PC ", "Decrementa ACC")sec = llenaTabla("C", nuevoDatoBin, "Acct", "Decrementa ACC")

    nuevoDato = ACC - 1nuevoDatoBin = decBin(nuevoDato)ACC = nuevoDato 'Decrementa ACC

    sec = llenaTabla("D", nuevoDatoBin, "Acc ", "Decrementa ACC")cicloMaquina = cicloMaquina + 1

    DatoACC.Text = ACC 'Se despliega al usuario resultado finalTabla.Text = Tabla.Text & "--------------------------------------------------" & vbCrLf

    Tabla.Text = Tabla.Text & "----F I N Decrementa ----" & vbCrLf

    End Sub

    Private Sub Division_Click()Label5.Visible = TrueLabel6.Visible = TrueDato2.Visible = TrueBinario2.Visible = TrueOperacion.Visible = True

    Operaciones.Enabled = False

    opcion = "divide"

    End Sub

  • 8/7/2019 Codigo Procesador 8-Bits

    13/20

    Private Sub Finalizar_Click()

    Dato.Enabled = TrueOperaciones.Enabled = False

    ACC = 0DatoACC.Text = ACCnuevoDato = 0nuevoDatoBin = ""

    datoInmediato = 0datoInmediatoBin = ""

    edoPC = 0

    Dato.Text = ""

    'Proceso para guardarIf guardaArchivo(nombreArchivo) Then

    MsgBox "Archivo guardado en: " & nombreArchivo & ".", , "Microprocesador 8 bits"Else

    MsgBox "No se guardo el Archivo.", , "Microprocesador 8 bits"End If

    Tabla.Text = ""End Sub

    Private Sub Form_Load()

    ' Asignar el filtro para el dilogo comnCommonDialog1.Filter = "Textos (*.txt)|*.txt|Todos (*.*)|*.*"

    numBits = 8nombreArchivo = "./Mic8bits_result.txt"

    ACC = 0 'No tiene dato al inicioDatoACC.Text = ACCedoPC = 0opcion = ""

  • 8/7/2019 Codigo Procesador 8-Bits

    14/20

    End Sub

    Private Sub Incrementa_Click()

    Dim sec As Boolean 'porque toda funcion regresa dato, asi no marca error

    Codigo_operacion ("Incrementa")sec = llenaTabla("A", codeOp, "RI ", "Incrementa ACC")edoPC = edoPC + 1 'PC aumenta unosec = llenaTabla("E", codeOp, "PC ", "Incrementa ACC")sec = llenaTabla("B", nuevoDatoBin, "RD ", "Incrementa ACC")edoPC = edoPC + 1 'PC aumenta unosec = llenaTabla("E", nuevoDatoBin, "PC ", "Incrementa ACC")sec = llenaTabla("C", nuevoDatoBin, "Acct", "Incrementa ACC")

    nuevoDato = ACC + 1nuevoDatoBin = decBin(nuevoDato)ACC = nuevoDato 'Incrementa ACC

    sec = llenaTabla("D", nuevoDatoBin, "Acc ", "Incrementa ACC")cicloMaquina = cicloMaquina + 1

    DatoACC.Text = ACC 'Se despliega al usuario resultado finalTabla.Text = Tabla.Text & "--------------------------------------------------" & vbCrLf

    Tabla.Text = Tabla.Text & "----F I N Incrementa ----" & vbCrLf

    End Sub

    Private Sub Inicio_Click()Operaciones.Enabled = TrueDato.Enabled = False

    nuevoDato = Val(Dato.Text)nuevoDatoBin = decBin(nuevoDato)'ACC = nuevoDato

    Tabla.Text = "CIC INST " & " GCM " & " PC " & " CONT MEM " & " REG ACT

    " & " GCM DEC " & " ACC " & "INSTRUCCION " & vbCrLf

    Dim sec As Boolean 'porque toda funcion regresa dato, asi no marca error

    Codigo_operacion ("Carga")

    sec = llenaTabla("A", codeOp, "RI ", "Carga ACC con dato inmediato")

  • 8/7/2019 Codigo Procesador 8-Bits

    15/20

    edoPC = edoPC + 1 'PC aumenta unosec = llenaTabla("E", codeOp, "PC ", "Carga ACC con dato inmediato")sec = llenaTabla("B", nuevoDatoBin, "RD ", "Carga ACC con dato inmediato")edoPC = edoPC + 1 'PC aumenta unosec = llenaTabla("E", nuevoDatoBin, "PC ", "Carga ACC con dato inmediato")sec = llenaTabla("C", nuevoDatoBin, "Acct", "Carga ACC con dato inmediato")

    ACC = nuevoDato 'Se carga finalmente ACC

    sec = llenaTabla("D", nuevoDatoBin, "Acc ", "Carga ACC con dato inmediato")cicloMaquina = cicloMaquina + 1

    DatoACC.Text = ACC 'Se despliega al usuario resultado finalTabla.Text = Tabla.Text & "--------------------------------------------------" & vbCrLf

    Tabla.Text = Tabla.Text & "----F I N Carga ----" & vbCrLf

    'cicloMaquina = 1

    Inicio.Enabled = False

    End Sub

    Private Sub Multiplica_Click()Label5.Visible = TrueLabel6.Visible = TrueDato2.Visible = TrueBinario2.Visible = TrueOperacion.Visible = True

    Operaciones.Enabled = False

    opcion = "multiplica"

    End Sub

    Private Sub Noop_Click()

    Dim sec As Boolean 'porque toda funcion regresa dato, asi no marca error

    Codigo_operacion ("Noop")

    sec = llenaTabla("A", codeOp, "RI ", "No op ACC con dato inmediato")edoPC = edoPC + 1 'PC aumenta unosec = llenaTabla("E", codeOp, "PC ", "No op ACC con dato inmediato")sec = llenaTabla("B", nuevoDatoBin, "RD ", "No op ACC con dato inmediato")edoPC = edoPC + 1 'PC aumenta unosec = llenaTabla("E", nuevoDatoBin, "PC ", "No op ACC con dato inmediato")sec = llenaTabla("C", nuevoDatoBin, "Acct", "No op ACC con dato inmediato")

  • 8/7/2019 Codigo Procesador 8-Bits

    16/20

    ACC = ACC 'ACC no cambia No op

    sec = llenaTabla("D", nuevoDatoBin, "Acc ", "No op ACC con dato inmediato")cicloMaquina = cicloMaquina + 1

    DatoACC.Text = ACC 'Se despliega al usuario resultado finalTabla.Text = Tabla.Text & "--------------------------------------------------" & vbCrLf

    Tabla.Text = Tabla.Text & "----F I N No op ----" & vbCrLfEnd Sub

    Private Sub Notop_Click()

    Dim sec As Boolean 'porque toda funcion regresa dato, asi no marca error

    Codigo_operacion ("Not")

    sec = llenaTabla("A", codeOp, "RI ", "Niega ACC")edoPC = edoPC + 1 'PC aumenta unosec = llenaTabla("E", codeOp, "PC ", "Niega ACC")sec = llenaTabla("B", nuevoDatoBin, "RD ", "Niega ACC")edoPC = edoPC + 1 'PC aumenta unosec = llenaTabla("E", nuevoDatoBin, "PC ", "Niega ACC")sec = llenaTabla("C", nuevoDatoBin, "Acct", "Niega ACC")

    nuevoDato = Not ACCnuevoDatoBin = decBin(nuevoDato)ACC = nuevoDato 'Niega ACC

    sec = llenaTabla("D", nuevoDatoBin, "Acc ", "Niega ACC")cicloMaquina = cicloMaquina + 1

    DatoACC.Text = ACC 'Se despliega al usuario resultado finalTabla.Text = Tabla.Text & "--------------------------------------------------" & vbCrLf

    Tabla.Text = Tabla.Text & "----F I N Not ----" & vbCrLf

    End Sub

    Private Sub Operacion_Click()Label5.Visible = FalseLabel6.Visible = FalseDato2.Visible = FalseBinario2.Visible = FalseOperacion.Visible = False

    Operaciones.Enabled = True

  • 8/7/2019 Codigo Procesador 8-Bits

    17/20

    datoInmediato = Val(Dato2.Text)datoInmediatoBin = decBin(datoInmediato)

    Dim sec As Boolean

    sec = operador(opcion)

    Dato2.Text = ""

    'opcion = ""

    End Sub

    Private Sub Orop_Click()Label5.Visible = TrueLabel6.Visible = TrueDato2.Visible = TrueBinario2.Visible = TrueOperacion.Visible = True

    Operaciones.Enabled = False

    opcion = "or"

    End Sub

    Private Sub Rderecha_Click()

    Dim sec As Boolean 'porque toda funcion regresa dato, asi no marca error

    Codigo_operacion (">>")

    sec = llenaTabla("A", codeOp, "RI ", "Corrimiento a la derecha ACC")edoPC = edoPC + 1 'PC aumenta unosec = llenaTabla("E", codeOp, "PC ", "Corrimiento a la derecha ACC")sec = llenaTabla("B", nuevoDatoBin, "RD ", "Corrimiento a la derecha ACC")edoPC = edoPC + 1 'PC aumenta unosec = llenaTabla("E", nuevoDatoBin, "PC ", "Corrimiento a la derecha ACC")sec = llenaTabla("C", nuevoDatoBin, "Acct", "Corrimiento a la derecha ACC")

    Dim concatena As String

    concatena = ""

    concatena = concatena & Mid$(nuevoDatoBin, 8, 1)concatena = concatena & Mid$(nuevoDatoBin, 1, 1)concatena = concatena & Mid$(nuevoDatoBin, 2, 1)concatena = concatena & Mid$(nuevoDatoBin, 3, 1)

  • 8/7/2019 Codigo Procesador 8-Bits

    18/20

    concatena = concatena & Mid$(nuevoDatoBin, 4, 1)concatena = concatena & Mid$(nuevoDatoBin, 5, 1)concatena = concatena & Mid$(nuevoDatoBin, 6, 1)concatena = concatena & Mid$(nuevoDatoBin, 7, 1)

    nuevoDato = binDec(concatena)

    nuevoDatoBin = concatenaACC = nuevoDato 'Corrimiento a la derecha ACC

    sec = llenaTabla("D", nuevoDatoBin, "Acc ", "Corrimiento a la derecha ACC")cicloMaquina = cicloMaquina + 1

    DatoACC.Text = ACC 'Se despliega al usuario resultado finalTabla.Text = Tabla.Text & "--------------------------------------------------" & vbCrLf

    Tabla.Text = Tabla.Text & "----F I N Corrimiento a la derecha ----" & vbCrLf

    End Sub

    Private Sub Resta_Click()Label5.Visible = TrueLabel6.Visible = TrueDato2.Visible = TrueBinario2.Visible = TrueOperacion.Visible = True

    Operaciones.Enabled = False

    opcion = "resta"

    End Sub

    Private Sub Rizquierda_Click()

    Dim sec As Boolean 'porque toda funcion regresa dato, asi no marca error

    Codigo_operacion ("

  • 8/7/2019 Codigo Procesador 8-Bits

    19/20

    concatena = ""

    concatena = concatena & Mid$(nuevoDatoBin, 2, 1)concatena = concatena & Mid$(nuevoDatoBin, 3, 1)concatena = concatena & Mid$(nuevoDatoBin, 4, 1)

    concatena = concatena & Mid$(nuevoDatoBin, 5, 1)concatena = concatena & Mid$(nuevoDatoBin, 6, 1)concatena = concatena & Mid$(nuevoDatoBin, 7, 1)concatena = concatena & Mid$(nuevoDatoBin, 8, 1)concatena = concatena & Mid$(nuevoDatoBin, 1, 1)

    nuevoDato = binDec(concatena)nuevoDatoBin = concatenaACC = nuevoDato 'Corrimiento a la izquierda ACC

    sec = llenaTabla("D", nuevoDatoBin, "Acc ", "Corrimiento a la izquierda ACC")cicloMaquina = cicloMaquina + 1

    DatoACC.Text = ACC 'Se despliega al usuario resultado finalTabla.Text = Tabla.Text & "--------------------------------------------------" & vbCrLf

    Tabla.Text = Tabla.Text & "----F I N Corrimiento a la izquierda ----" & vbCrLf

    End Sub

    Private Sub Suma_Click()Label5.Visible = TrueLabel6.Visible = TrueDato2.Visible = TrueBinario2.Visible = TrueOperacion.Visible = True

    Operaciones.Enabled = False

    opcion = "suma"

    End Sub

    Private Sub xorop_Click()Label5.Visible = TrueLabel6.Visible = TrueDato2.Visible = TrueBinario2.Visible = TrueOperacion.Visible = True

    Operaciones.Enabled = False

    opcion = "xor"

  • 8/7/2019 Codigo Procesador 8-Bits

    20/20

    End Sub