22-12-17, 07:08 PM
(آخر تعديل لهذه المشاركة : 22-12-17, 07:09 PM {2} بواسطة ديه زكرياء.)
تم التطبيق على pic16f84a لان معالجها ضعيف جدا و اوامر الاسمبلي الخاصة به محدودة جدا
كل ما عليك عمله هو مشروع vb.net واضف Module1 + Module2
نضع الادوات التالية كما في الصورة
في Form1 نكتب
PHP كود :
Imports System.IO
Public Class Form1
Dim x As String = ""
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
OpenFileDialog1.Filter = "hex (*.hex)|*.hex"
OpenFileDialog1.FilterIndex = 1
OpenFileDialog1.ShowDialog()
TextBox1.Text = OpenFileDialog1.FileName
Dim objStreamReader As StreamReader
Dim strLine As String
objStreamReader = New StreamReader(TextBox1.Text)
While (Not objStreamReader.EndOfStream)
strLine = objStreamReader.ReadLine
If Not Mid(strLine, 1, 1) = ";" Then x = x & strLine & vbLf
Application.DoEvents()
End While
objStreamReader.Close()
x = Replace(x, vbLf, "")
RichTextBox1.Text = x
End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim Hx As String = ""
Dim s As String = ""
Dim rr() As String = Split(x, ":")
For j = 1 To UBound(rr) - 2
For i = 9 To rr(j).Length - 4 Step 4
Hx = OpCode(Mid(rr(j), i + 2, 2) & Mid(rr(j), i, 2))
s = s & Hx & vbLf
Next
x = x & vbLf
Next
RichTextBox1.Text = s
End Sub
End Class
PHP كود :
Module Module1
Function OpCode(ByVal s As String) As String
Dim Ts As Double = "&hF000" And "&h" & s
Dim t As String = ""
If Ts = "&h0000" Then t = z00(s)
If Ts = "&h1000" Then t = z01(s)
If Ts = "&h2000" Then t = z10(s)
If Ts = "&h3000" Then t = z11(s)
Return t
End Function
Function z00(ByVal s As String) As String
Dim t As String = ""
Dim v As Long = "&h" & s And "&hFF00"
If "&h" & s <= "&h00FF" Then t = z0000(s)
If v = "&h0700" Then t = ADDWF(s)
If v = "&h0500" Then t = ANDWF(s)
If v = "&h0100" Then t = CLRWF(s)
If v = "&h0900" Then t = COMF(s)
If v = "&h0300" Then t = DECF(s)
If v = "&h0B00" Then t = DECFSZ(s)
If v = "&h0A00" Then t = INCF(s)
If v = "&h0F00" Then t = INCFSZ(s)
If v = "&h0400" Then t = IORWF(s)
If v = "&h0800" Then t = MOVF(s)
If v = "&h0D00" Then t = RLF(s)
If v = "&h0C00" Then t = RRF(s)
If v = "&h0200" Then t = SUBWF(s)
If v = "&h0E00" Then t = SWAPF(s)
If v = "&h0600" Then t = XORWF(s)
Return t
End Function
Function z0000(ByVal s As String) As String
Dim t As String = ""
Dim f, d As Integer
d = "&h" & s And "&h80"
d = d >> 7
f = "&h" & s And "&h7F"
If d = 1 Then
t = "MOVWF " & f
Else
t = "NOP"
End If
If Val("&h" & s) = Val("&h64") Then t = "CLRWDT"
If Val("&h" & s) = Val("&h09") Then t = "RETFIE"
If Val("&h" & s) = Val("&h08") Then t = "RETURN"
If Val("&h" & s) = Val("&h63") Then t = "SLEEP"
Return t
End Function
Function z01(ByVal s As String) As String
Dim t As String = ""
Dim v As Long = "&h" & s And "&hFC00"
If v = "&h1000" Then t = BCF(s)
If v = "&h1400" Then t = BSF(s)
If v = "&h1800" Then t = BTFSC(s)
If v = "&h1C00" Then t = BTFSS(s)
Return t
End Function
Function z10(ByVal s As String) As String
Dim t As String = ""
If ("&h" & s And "&hF800") = "&h2000" Then t = CALLx(s)
If ("&h" & s And "&hF800") = "&h2800" Then t = GOTOx(s)
Return t
End Function
Function z11(ByVal s As String) As String
Dim t As String = ""
Dim v As Long = "&h" & s And "&h3F00"
If v = "&h3F00" Then t = ADDLW(s)
If v = "&h3E00" Then t = ADDLW(s)
If v = "&h3900" Then t = ANDLW(s)
If v = "&h3800" Then t = IORLW(s)
If v = "&h3000" Then t = MOVLW(s)
If v = "&h3100" Then t = MOVLW(s)
If v = "&h3200" Then t = MOVLW(s)
If v = "&h3300" Then t = MOVLW(s)
If v = "&h3400" Then t = RETLW(s)
If v = "&h3500" Then t = RETLW(s)
If v = "&h3600" Then t = RETLW(s)
If v = "&h3700" Then t = RETLW(s)
If v = "&h3C00" Then t = SUBLW(s)
If v = "&h3D00" Then t = SUBLW(s)
If v = "&h3A00" Then t = XORLW(s)
Return t
End Function
End Module
PHP كود :
Module Module2
Function ADDWF(ByVal s As String) As String
Dim f, d As String
d = "&h" & s And "&h80"
d = d >> 7
f = "&h" & s And "&h7F"
ADDWF = "ADDWF " & f & "," & d
End Function
Function ANDWF(ByVal s As String) As String
Dim f, d As String
d = "&h" & s And "&h80"
d = d >> 7
f = "&h" & s And "&h7F"
ANDWF = "ANDWF " & f & "," & d
End Function
Function CLRWF(ByVal s As String) As String
Dim f, d As Integer
d = "&h" & s And "&h80"
d = d >> 7
f = "&h" & s And "&h7F"
If d = 1 Then
Return "CLRF " & f
Else
Return "CLRW " & f
End If
End Function
Function COMF(ByVal s As String) As String
Dim f, d As Integer
d = "&h" & s And "&h80"
d = d >> 7
f = "&h" & s And "&h7F"
Return "COMF " & f & "," & d
End Function
Function DECF(ByVal s As String) As String
Dim f, d As Integer
d = "&h" & s And "&h80"
d = d >> 7
f = "&h" & s And "&h7F"
Return "DECF " & f & "," & d
End Function
Function DECFSZ(ByVal s As String) As String
Dim f, d As Integer
d = "&h" & s And "&h80"
d = d >> 7
f = "&h" & s And "&h7F"
Return "DECFSZ " & f & "," & d
End Function
Function INCF(ByVal s As String) As String
Dim f, d As Integer
d = "&h" & s And "&h80"
d = d >> 7
f = "&h" & s And "&h7F"
Return "INCF " & f & "," & d
End Function
Function INCFSZ(ByVal s As String) As String
Dim f, d As Integer
d = "&h" & s And "&h80"
d = d >> 7
f = "&h" & s And "&h7F"
Return "INCFSZ " & f & "," & d
End Function
Function IORWF(ByVal s As String) As String
Dim f, d As Integer
d = "&h" & s And "&h80"
d = d >> 7
f = "&h" & s And "&h7F"
Return "IORWF " & f & "," & d
End Function
Function MOVF(ByVal s As String) As String
Dim f, d As Integer
d = "&h" & s And "&h80"
d = d >> 7
f = "&h" & s And "&h7F"
Return "MOVF " & f & "," & d
End Function
Function RLF(ByVal s As String) As String
Dim f, d As Integer
d = "&h" & s And "&h80"
d = d >> 7
f = "&h" & s And "&h7F"
Return "RLF " & f & "," & d
End Function
Function RRF(ByVal s As String) As String
Dim f, d As Integer
d = "&h" & s And "&h80"
d = d >> 7
f = "&h" & s And "&h7F"
Return "RRF " & f & "," & d
End Function
Function SUBWF(ByVal s As String) As String
Dim f, d As Integer
d = "&h" & s And "&h80"
d = d >> 7
f = "&h" & s And "&h7F"
Return "SUBWF " & f & "," & d
End Function
Function SWAPF(ByVal s As String) As String
Dim f, d As Integer
d = "&h" & s And "&h80"
d = d >> 7
f = "&h" & s And "&h7F"
Return "SWAPF " & f & "," & d
End Function
Function XORWF(ByVal s As String) As String
Dim f, d As Integer
d = "&h" & s And "&h80"
d = d >> 7
f = "&h" & s And "&h7F"
Return "XORWF " & f & "," & d
End Function
Function BCF(ByVal s As String) As String
Dim f, d As Integer
d = "&h" & s And "&h380"
d = d >> 7
f = "&h" & s And "&h7F"
Return "BCF " & f & "," & d
End Function
Function BSF(ByVal s As String) As String
Dim f, d As Integer
d = "&h" & s And "&h380"
d = d >> 7
f = "&h" & s And "&h7F"
Return "BSF " & f & "," & d
End Function
Function BTFSC(ByVal s As String) As String
Dim f, d As Integer
d = "&h" & s And "&h380"
d = d >> 7
f = "&h" & s And "&h7F"
Return "BTFSC " & f & "," & d
End Function
Function BTFSS(ByVal s As String) As String
Dim f, d As Integer
d = "&h" & s And "&h380"
d = d >> 7
f = "&h" & s And "&h7F"
Return "BTFSS " & f & "," & d
End Function
Function CALLx(ByVal s As String) As String
Dim f, d As Integer
d = "&h" & s And "&h380"
d = d >> 7
f = "&h" & s And "&h7FF"
Return "CALL " & f
End Function
Function GOTOx(ByVal s As String) As String
Dim f, d As Integer
d = "&h" & s And "&h380"
d = d >> 7
f = "&h" & s And "&h7FF"
Return "GOTO " & f
End Function
Function ADDLW(ByVal s As String) As String
Dim f, d As Integer
d = "&h" & s And "&h380"
d = d >> 7
f = "&h" & s And "&hFF"
Return "ADDLW " & f
End Function
Function ANDLW(ByVal s As String) As String
Dim f, d As Integer
d = "&h" & s And "&h380"
d = d >> 7
f = "&h" & s And "&hFF"
Return "ANDLW " & f
End Function
Function IORLW(ByVal s As String) As String
Dim f, d As Integer
d = "&h" & s And "&h380"
d = d >> 7
f = "&h" & s And "&hFF"
Return "IORLW " & f
End Function
Function MOVLW(ByVal s As String) As String
Dim f, d As Integer
d = "&h" & s And "&h380"
d = d >> 7
f = "&h" & s And "&hFF"
Return "MOVLW " & f
End Function
Function RETLW(ByVal s As String) As String
Dim f, d As Integer
d = "&h" & s And "&h380"
d = d >> 7
f = "&h" & s And "&hFF"
Return "RETLW " & f
End Function
Function SUBLW(ByVal s As String) As String
Dim f, d As Integer
d = "&h" & s And "&h380"
d = d >> 7
f = "&h" & s And "&hFF"
Return "SUBLW " & f
End Function
Function XORLW(ByVal s As String) As String
Dim f, d As Integer
d = "&h" & s And "&h380"
d = d >> 7
f = "&h" & s And "&hFF"
Return "XORLW " & f
End Function
End Module
رابط الصورة
https://ibb.co/e60QLR