Upload
enrique-galindo
View
219
Download
0
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