Professional Documents
Culture Documents
Existe = Len(Dir$(unFichero))
If Err Then
Existe = False
End If
Err = 0
End Function
'CommonDialog guardar
'Preguntar el nombre del fichero y guardarlo
With CommonDialog1
If Len(.FileName) Then
nombreArchivo = .FileName
'Guardar
Dim i As Long
Dim SobreEscribir As Boolean
Dim informacion As String
Else
'guardaArchivo = True
End If
End If
Err = 0
End Function
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
Dim i As Integer
Dim j As Integer
Dim k As Integer
k=0
j=0
For i = numBits To 1 Step -1
If Mid$(numBin, i, 1) = "1" Then
k = k + (2 ^ j)
End If
j=j+1
Next
binDec = k
End Function
Dim i As Integer
Dim sTmp As String ' Cadena temporal
sTmp = ""
For i = numBits - 1 To 0 Step -1
If numDec And 2 ^ i Then
sTmp = sTmp & "1"
Else
sTmp = sTmp & "0"
End If
Next
decBin = sTmp
End Function
Dim sec As Boolean 'porque toda funcion regresa dato, asi no marca error
Codigo_operacion ("Suma")
sec = llenaTabla("A", codeOp, "RI ", "Suma ACC con dato inmediato")
edoPC = edoPC + 1 'PC aumenta uno
sec = llenaTabla("E", codeOp, "PC ", "Suma ACC con dato inmediato")
nuevoDato = datoInmediato
nuevoDatoBin = datoInmediatoBin
sec = llenaTabla("B", nuevoDatoBin, "RD ", "Suma ACC con dato inmediato")
edoPC = edoPC + 1 'PC aumenta uno
sec = llenaTabla("E", nuevoDatoBin, "PC ", "Suma ACC con dato inmediato")
sec = llenaTabla("C", nuevoDatoBin, "Acct", "Suma ACC con dato inmediato")
sec = llenaTabla("D", nuevoDatoBin, "Acc ", "Suma ACC con dato inmediato")
cicloMaquina = cicloMaquina + 1
Case "resta"
Codigo_operacion ("Resta")
sec = llenaTabla("A", codeOp, "RI ", "Resta ACC con dato inmediato")
edoPC = edoPC + 1 'PC aumenta uno
sec = llenaTabla("E", codeOp, "PC ", "Resta ACC con dato inmediato")
nuevoDato = datoInmediato
nuevoDatoBin = datoInmediatoBin
sec = llenaTabla("B", nuevoDatoBin, "RD ", "Resta ACC con dato inmediato")
edoPC = edoPC + 1 'PC aumenta uno
sec = llenaTabla("E", nuevoDatoBin, "PC ", "Resta ACC con dato inmediato")
sec = llenaTabla("C", nuevoDatoBin, "Acct", "Resta ACC con dato inmediato")
sec = llenaTabla("D", nuevoDatoBin, "Acc ", "Resta ACC con dato inmediato")
cicloMaquina = cicloMaquina + 1
Case "multiplica"
Codigo_operacion ("Multiplica")
sec = llenaTabla("A", codeOp, "RI ", "Multiplica ACC con dato inmediato")
edoPC = edoPC + 1 'PC aumenta uno
sec = llenaTabla("E", codeOp, "PC ", "Multiplica ACC con dato inmediato")
nuevoDato = datoInmediato
nuevoDatoBin = datoInmediatoBin
sec = llenaTabla("B", nuevoDatoBin, "RD ", "Multiplica ACC con dato inmediato")
edoPC = edoPC + 1 'PC aumenta uno
sec = llenaTabla("E", nuevoDatoBin, "PC ", "Multiplica ACC con dato inmediato")
sec = llenaTabla("C", nuevoDatoBin, "Acct", "Multiplica ACC con dato inmediato")
sec = llenaTabla("D", nuevoDatoBin, "Acc ", "Multiplica ACC con dato inmediato")
cicloMaquina = cicloMaquina + 1
Case "divide"
Codigo_operacion ("Divide")
sec = llenaTabla("A", codeOp, "RI ", "Divide ACC con dato inmediato")
edoPC = edoPC + 1 'PC aumenta uno
sec = llenaTabla("E", codeOp, "PC ", "Divide ACC con dato inmediato")
nuevoDato = datoInmediato
nuevoDatoBin = datoInmediatoBin
sec = llenaTabla("B", nuevoDatoBin, "RD ", "Divide ACC con dato inmediato")
edoPC = edoPC + 1 'PC aumenta uno
sec = llenaTabla("E", nuevoDatoBin, "PC ", "Divide ACC con dato inmediato")
sec = llenaTabla("C", nuevoDatoBin, "Acct", "Divide ACC con dato inmediato")
sec = llenaTabla("D", nuevoDatoBin, "Acc ", "Divide ACC con dato inmediato")
cicloMaquina = cicloMaquina + 1
Case "xor"
Codigo_operacion ("Xor")
sec = llenaTabla("A", codeOp, "RI ", "Xor ACC con dato inmediato")
edoPC = edoPC + 1 'PC aumenta uno
sec = llenaTabla("E", codeOp, "PC ", "Xor ACC con dato inmediato")
nuevoDato = datoInmediato
nuevoDatoBin = datoInmediatoBin
sec = llenaTabla("B", nuevoDatoBin, "RD ", "Xor ACC con dato inmediato")
edoPC = edoPC + 1 'PC aumenta uno
sec = llenaTabla("E", nuevoDatoBin, "PC ", "Xor ACC con dato inmediato")
sec = llenaTabla("C", nuevoDatoBin, "Acct", "Xor ACC con dato inmediato")
sec = llenaTabla("D", nuevoDatoBin, "Acc ", "Xor ACC con dato inmediato")
cicloMaquina = cicloMaquina + 1
Case "and"
Codigo_operacion ("And")
sec = llenaTabla("A", codeOp, "RI ", "And ACC con dato inmediato")
edoPC = edoPC + 1 'PC aumenta uno
sec = llenaTabla("E", codeOp, "PC ", "And ACC con dato inmediato")
nuevoDato = datoInmediato
nuevoDatoBin = datoInmediatoBin
sec = llenaTabla("B", nuevoDatoBin, "RD ", "And ACC con dato inmediato")
edoPC = edoPC + 1 'PC aumenta uno
sec = llenaTabla("E", nuevoDatoBin, "PC ", "And ACC con dato inmediato")
sec = llenaTabla("C", nuevoDatoBin, "Acct", "And ACC con dato inmediato")
sec = llenaTabla("D", nuevoDatoBin, "Acc ", "And ACC con dato inmediato")
cicloMaquina = cicloMaquina + 1
Case "or"
Codigo_operacion ("Or")
sec = llenaTabla("A", codeOp, "RI ", "Or ACC con dato inmediato")
edoPC = edoPC + 1 'PC aumenta uno
sec = llenaTabla("E", codeOp, "PC ", "Or ACC con dato inmediato")
nuevoDato = datoInmediato
nuevoDatoBin = datoInmediatoBin
sec = llenaTabla("B", nuevoDatoBin, "RD ", "Or ACC con dato inmediato")
edoPC = edoPC + 1 'PC aumenta uno
sec = llenaTabla("E", nuevoDatoBin, "PC ", "Or ACC con dato inmediato")
sec = llenaTabla("C", nuevoDatoBin, "Acct", "Or ACC con dato inmediato")
sec = llenaTabla("D", nuevoDatoBin, "Acc ", "Or ACC con dato inmediato")
cicloMaquina = cicloMaquina + 1
End Select
operador = True
End Function
Codigo_operacion = codeOp
End Function
opcion = "and"
End Sub
Dim sec As Boolean 'porque toda funcion regresa dato, asi no marca error
Codigo_operacion ("Borra")
nuevoDato = 0
nuevoDatoBin = decBin(nuevoDato)
ACC = nuevoDato 'Se borra ACC
End Sub
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 uno
sec = llenaTabla("E", codeOp, "PC ", "Carga ACC con dato inmediato")
sec = llenaTabla("B", nuevoDatoBin, "RD ", "Carga ACC con dato inmediato")
edoPC = edoPC + 1 'PC aumenta uno
sec = 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
End Sub
lngNum = Val(Dato.Text)
End Sub
Operacion.Enabled = True
Dim lngNum As Integer
lngNum = Val(Dato2.Text)
Binario2.Text = decBin(Val(Dato2.Text))
End Sub
Private Sub DatoACC_Change()
BinarioACC.Text = decBin(Val(DatoACC.Text))
End Sub
Dim sec As Boolean 'porque toda funcion regresa dato, asi no marca error
Codigo_operacion ("Decrementa")
nuevoDato = ACC - 1
nuevoDatoBin = decBin(nuevoDato)
ACC = nuevoDato 'Decrementa ACC
End Sub
Operaciones.Enabled = False
opcion = "divide"
End Sub
Private Sub Finalizar_Click()
Dato.Enabled = True
Operaciones.Enabled = False
ACC = 0
DatoACC.Text = ACC
nuevoDato = 0
nuevoDatoBin = ""
datoInmediato = 0
datoInmediatoBin = ""
edoPC = 0
Dato.Text = ""
Tabla.Text = ""
End Sub
numBits = 8
nombreArchivo = "./Mic8bits_result.txt"
Dim sec As Boolean 'porque toda funcion regresa dato, asi no marca error
Codigo_operacion ("Incrementa")
nuevoDato = ACC + 1
nuevoDatoBin = decBin(nuevoDato)
ACC = nuevoDato 'Incrementa ACC
End Sub
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")
edoPC = edoPC + 1 'PC aumenta uno
sec = llenaTabla("E", codeOp, "PC ", "Carga ACC con dato inmediato")
sec = llenaTabla("B", nuevoDatoBin, "RD ", "Carga ACC con dato inmediato")
edoPC = edoPC + 1 'PC aumenta uno
sec = llenaTabla("E", nuevoDatoBin, "PC ", "Carga ACC con dato inmediato")
sec = llenaTabla("C", nuevoDatoBin, "Acct", "Carga ACC con dato inmediato")
sec = llenaTabla("D", nuevoDatoBin, "Acc ", "Carga ACC con dato inmediato")
cicloMaquina = cicloMaquina + 1
'cicloMaquina = 1
Inicio.Enabled = False
End Sub
Operaciones.Enabled = False
opcion = "multiplica"
End Sub
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 uno
sec = 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 uno
sec = llenaTabla("E", nuevoDatoBin, "PC ", "No op ACC con dato inmediato")
sec = llenaTabla("C", nuevoDatoBin, "Acct", "No op ACC con dato inmediato")
ACC = ACC 'ACC no cambia No op
sec = llenaTabla("D", nuevoDatoBin, "Acc ", "No op ACC con dato inmediato")
cicloMaquina = cicloMaquina + 1
End Sub
Dim sec As Boolean 'porque toda funcion regresa dato, asi no marca error
Codigo_operacion ("Not")
Operaciones.Enabled = True
datoInmediato = Val(Dato2.Text)
datoInmediatoBin = decBin(datoInmediato)
sec = operador(opcion)
Dato2.Text = ""
'opcion = ""
End Sub
Operaciones.Enabled = False
opcion = "or"
End Sub
Dim sec As Boolean 'porque toda funcion regresa dato, asi no marca error
Codigo_operacion (">>")
concatena = ""
nuevoDato = binDec(concatena)
nuevoDatoBin = concatena
ACC = nuevoDato 'Corrimiento a la derecha ACC
End Sub
Operaciones.Enabled = False
opcion = "resta"
End Sub
Dim sec As Boolean 'porque toda funcion regresa dato, asi no marca error
Codigo_operacion ("<<")
nuevoDato = binDec(concatena)
nuevoDatoBin = concatena
ACC = nuevoDato 'Corrimiento a la izquierda ACC
Operaciones.Enabled = False
opcion = "suma"
End Sub
Operaciones.Enabled = False
opcion = "xor"
End Sub