⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 module1.bas

📁 这是一个很好的字模软件
💻 BAS
📖 第 1 页 / 共 2 页
字号:
    k = k + 2
    
    If (ZMSZ(i) And &H40) = &H40 Then
        ZMTemp(k) = ZMTemp(k) Or &H80
    Else
        ZMTemp(k) = ZMTemp(k) And &H7F
    End If
    k = k + 2
    If (ZMSZ(i) And &H20) = &H20 Then
        ZMTemp(k) = ZMTemp(k) Or &H80
    Else
        ZMTemp(k) = ZMTemp(k) And &H7F
    End If
    k = k + 2
    If (ZMSZ(i) And &H10) = &H10 Then
        ZMTemp(k) = ZMTemp(k) Or &H80
    Else
        ZMTemp(k) = ZMTemp(k) And &H7F
    End If
    k = k + 2
    If (ZMSZ(i) And &H8) = &H8 Then
        ZMTemp(k) = ZMTemp(k) Or &H80
    Else
        ZMTemp(k) = ZMTemp(k) And &H7F
    End If
    k = k + 2
    If (ZMSZ(i) And &H4) = &H4 Then
        ZMTemp(k) = ZMTemp(k) Or &H80
    Else
        ZMTemp(k) = ZMTemp(k) And &H7F
    End If
    k = k + 2
    If (ZMSZ(i) And &H2) = &H2 Then
        ZMTemp(k) = ZMTemp(k) Or &H80
    Else
        ZMTemp(k) = ZMTemp(k) And &H7F
    End If
    k = k + 2
    If (ZMSZ(i) And &H1) = &H1 Then
        ZMTemp(k) = ZMTemp(k) Or &H80
    Else
        ZMTemp(k) = ZMTemp(k) And &H7F
    End If
    
    For j = 18 To 32 Step 2                      '每次取位值都放在数据最高位,数据左移移位 准备下次取值
    ZMTemp(j) = byteLeft(ZMTemp(j), 1)
    Next j
    k = 18
Next i
For i = 1 To 32
ZMSZ(i) = ZMTemp(i)
Next i
End Function
Public Function byteRight(byte1 As Byte, n As Integer) As Byte '将byte1右移n位
    Dim TemVar As Byte '临时变量
    Dim TemVar1 As Byte '临时变量
    Dim X, Y As Integer
    TemVar = byte1
    For X = 1 To n '移多少位就循环多少次
        For Y = 1 To 8 '从第一位(右边第一位)开始循环右移
        Select Case Y
            Case 1
                If (TemVar And &H1) = &H1 Then '如果临时变量TemVar的第一位是1,
                TemVar1 = &H1 '则将临时变量TemVar1置1,
                Else
                TemVar1 = &H0 '则将临时变量TemVar1置0,
                End If
            Case 2
                If (TemVar And &H2) = &H2 Then '如果临时变量TemVar的第二位是1,
                TemVar = TemVar Or &H1 '则将其第一位置1(其它位不变),
                Else
                TemVar = TemVar And &HFE '反之将第一位置0(其它位不变)
                End If
            Case 3
                If (TemVar And &H4) = &H4 Then '操作与上面相同
                TemVar = TemVar Or &H2
                Else
                TemVar = TemVar And &HFD
                End If
            Case 4
                If (TemVar And &H8) = &H8 Then
                TemVar = TemVar Or &H4
                Else
                TemVar = TemVar And &HFB
                End If
            Case 5
                If (TemVar And &H10) = &H10 Then
                TemVar = TemVar Or &H8
                Else
                TemVar = TemVar And &HF7
                End If
            Case 6
                If (TemVar And &H20) = &H20 Then
                TemVar = TemVar Or &H10
                Else
                TemVar = TemVar And &HEF
                End If
            Case 7
                If (TemVar And &H40) = &H40 Then
                TemVar = TemVar Or &H20
                Else
                TemVar = TemVar And &HDF
                End If
            Case 8
                If (TemVar And &H80) = &H80 Then
                TemVar = TemVar Or &H40
                Else
                TemVar = TemVar And &HBF
                End If
                If TemVar1 = &H1 Then '移完第八位后,如果TemVar1是1(即第一位是1)
                TemVar = TemVar Or &H80 '则将TemVar的第八位置1
                Else
                TemVar = TemVar And &H7F '反之置0
                End If
        End Select
        Next Y
    Next X
    byteRight = TemVar '将TemVar的值返回给函数名
    End Function
Public Function GetAsmDot() As String
Dim strAsm As String
Dim strTemp As String
    strAsm = "DB    "
    For i = 1 To 32
        strTemp = Hex(ZMSZ(i))
        For j = 1 To 3 - Len(strTemp)                'Asm51 HEX数据格式 0FF H 最大为3位,hex()会把0略去,所以自己要在前加0
            strTemp = "0" & strTemp            '"0"个数为3-有效字符长度
        Next j
            strTemp = strTemp + "H,"
        strAsm = strAsm + strTemp
        If i = 16 Then strAsm = strAsm + Chr(13) + Chr(10) + "DB    "     '每16个数据换行
    Next i
    strAsm = Left(strAsm, Len(strAsm) - 1)  '删去最末的一个 ","
    GetAsmDot = strAsm
End Function
Public Function GetC51Dot() As String
Dim strC51 As String
Dim strTemp As String
    strC51 = ""
    For i = 1 To 32
        strTemp = Hex(ZMSZ(i))
        For j = 1 To 2 - Len(strTemp)
            strTemp = "0" + strTemp
        Next j
        strC51 = strC51 + "0x" + strTemp + ","
        If i = 16 Then strC51 = strC51 + Chr(13) + Chr(10)
    Next i
    GetC51Dot = strC51
End Function

Public Function byteLeft(byte1 As Byte, n As Integer) As Byte '将byte1右移n位
    Dim TemVar As Byte '临时变量
    Dim TemVar1 As Byte '临时变量
    Dim X, Y As Integer
    TemVar = byte1
    For X = 1 To n '移多少位就循环多少次
        For Y = 8 To 1 Step -1 '从第一位(右边第一位)开始循环右移
        Select Case Y
            Case 8
                If (TemVar And &H80) = &H80 Then '如果临时变量TemVar的第8位是1,
                TemVar1 = &H1                   '则将临时变量TemVar1置1
                Else
                TemVar1 = &H0                   '则将临时变量TemVar1置0,
                End If

            Case 7
                If (TemVar And &H40) = &H40 Then '如果临时变量TemVar的第七位是1,
                TemVar = TemVar Or &H80         '则将其第一位置1(其它位不变),
                Else
                TemVar = TemVar And &H7F        '反之将第一位置0(其它位不变)
                End If

            Case 6
                If (TemVar And &H20) = &H20 Then
                TemVar = TemVar Or &H40
                Else
                TemVar = TemVar And &HBF
                End If

            Case 5
                If (TemVar And &H10) = &H10 Then
                TemVar = TemVar Or &H20
                Else
                TemVar = TemVar And &HDF
                End If

            Case 4
                If (TemVar And &H8) = &H8 Then
                TemVar = TemVar Or &H10
                Else
                TemVar = TemVar And &HEF
                End If
            Case 3
                If (TemVar And &H4) = &H4 Then '操作与上面相同
                TemVar = TemVar Or &H8
                Else
                TemVar = TemVar And &HF7
                End If
            Case 2
                If (TemVar And &H2) = &H2 Then
                TemVar = TemVar Or &H4
                Else
                TemVar = TemVar And &HFB
                End If
            Case 1
                If (TemVar And &H1) = &H1 Then
                TemVar = TemVar Or &H2
                Else
                TemVar = TemVar And &HFD
                End If
                If TemVar1 = &H1 Then '移完第八位后,如果TemVar1是1(即第8位是1)
                TemVar = TemVar Or &H1 '则将TemVar的第一位置1
                Else
                TemVar = TemVar And &HFE '反之置0
                End If
        End Select
        Next Y
    Next X
    byteLeft = TemVar '将TemVar的值返回给函数名
    End Function
    Public Function CLen(HzStr$) As Integer
    Static HzNum As Integer
    HzNum = 0
    L = Len(HzStr$)
    For n = 1 To L
    If Asc(Mid$(HzStr$, n, 1)) < 0 Then HzNum = HzNum + 1
    Next n
    CLen = L + HzNum
    End Function

' 用途:将十进制转化为二进制
' 输入:Dec(十进制数)
' 输入数据类型:Long
' 输出:DEC_to_BIN(二进制数)
' 输出数据类型:String
' 输入的最大数为2147483647,输出最大数为1111111111111111111111111111111(31个1)
Public Function DEC_to_BIN(Dec As Long) As String
    DEC_to_BIN = ""
    Do While Dec > 0
        DEC_to_BIN = Dec Mod 2 & DEC_to_BIN
        Dec = Dec \ 2
    Loop
End Function
' 用途:将十六进制转化为二进制
' 输入:Hex(十六进制数)
' 输入数据类型:String
' 输出:HEX_to_BIN(二进制数)
' 输出数据类型:String
' 输入的最大数为2147483647个字符
Public Function HEX_to_BIN(ByVal Hex As String) As String
    Dim i As Long
    Dim B As String
    
    Hex = UCase(Hex)
    For i = 1 To Len(Hex)
        Select Case Mid(Hex, i, 1)
            Case "0": B = B & "0000"
            Case "1": B = B & "0001"
            Case "2": B = B & "0010"
            Case "3": B = B & "0011"
            Case "4": B = B & "0100"
            Case "5": B = B & "0101"
            Case "6": B = B & "0110"
            Case "7": B = B & "0111"
            Case "8": B = B & "1000"
            Case "9": B = B & "1001"
            Case "A": B = B & "1010"
            Case "B": B = B & "1011"
            Case "C": B = B & "1100"
            Case "D": B = B & "1101"
            Case "E": B = B & "1110"
            Case "F": B = B & "1111"
        End Select
    Next i
    While Left(B, 1) = "0"
        B = Right(B, Len(B) - 1)
    Wend
    HEX_to_BIN = B
End Function

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -