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

📄 ascidump.asm

📁 这是一个数字图像处理的matlab仿真程序
💻 ASM
字号:
; ########################################################################

AsciiDump proc lpsrc:DWORD,lpbuf:DWORD,lnsrc:DWORD

    LOCAL count  :DWORD

    jmp @F
    align 4
  StringTable:
    db "  0",44,"  1",44,"  2",44,"  3",44,"  4",44,"  5",44,"  6",44,"  7",44
    db "  8",44,"  9",44," 10",44," 11",44," 12",44," 13",44," 14",44," 15",44
    db " 16",44," 17",44," 18",44," 19",44," 20",44," 21",44," 22",44," 23",44
    db " 24",44," 25",44," 26",44," 27",44," 28",44," 29",44," 30",44," 31",44
    db " 32",44," 33",44," 34",44," 35",44," 36",44," 37",44," 38",44," 39",44
    db " 40",44," 41",44," 42",44," 43",44," 44",44," 45",44," 46",44," 47",44
    db " 48",44," 49",44," 50",44," 51",44," 52",44," 53",44," 54",44," 55",44
    db " 56",44," 57",44," 58",44," 59",44," 60",44," 61",44," 62",44," 63",44
    db " 64",44," 65",44," 66",44," 67",44," 68",44," 69",44," 70",44," 71",44
    db " 72",44," 73",44," 74",44," 75",44," 76",44," 77",44," 78",44," 79",44
    db " 80",44," 81",44," 82",44," 83",44," 84",44," 85",44," 86",44," 87",44
    db " 88",44," 89",44," 90",44," 91",44," 92",44," 93",44," 94",44," 95",44
    db " 96",44," 97",44," 98",44," 99",44,"100",44,"101",44,"102",44,"103",44
    db "104",44,"105",44,"106",44,"107",44,"108",44,"109",44,"110",44,"111",44
    db "112",44,"113",44,"114",44,"115",44,"116",44,"117",44,"118",44,"119",44
    db "120",44,"121",44,"122",44,"123",44,"124",44,"125",44,"126",44,"127",44
    db "128",44,"129",44,"130",44,"131",44,"132",44,"133",44,"134",44,"135",44
    db "136",44,"137",44,"138",44,"139",44,"140",44,"141",44,"142",44,"143",44
    db "144",44,"145",44,"146",44,"147",44,"148",44,"149",44,"150",44,"151",44
    db "152",44,"153",44,"154",44,"155",44,"156",44,"157",44,"158",44,"159",44
    db "160",44,"161",44,"162",44,"163",44,"164",44,"165",44,"166",44,"167",44
    db "168",44,"169",44,"170",44,"171",44,"172",44,"173",44,"174",44,"175",44
    db "176",44,"177",44,"178",44,"179",44,"180",44,"181",44,"182",44,"183",44
    db "184",44,"185",44,"186",44,"187",44,"188",44,"189",44,"190",44,"191",44
    db "192",44,"193",44,"194",44,"195",44,"196",44,"197",44,"198",44,"199",44
    db "200",44,"201",44,"202",44,"203",44,"204",44,"205",44,"206",44,"207",44
    db "208",44,"209",44,"210",44,"211",44,"212",44,"213",44,"214",44,"215",44
    db "216",44,"217",44,"218",44,"219",44,"220",44,"221",44,"222",44,"223",44
    db "224",44,"225",44,"226",44,"227",44,"228",44,"229",44,"230",44,"231",44
    db "232",44,"233",44,"234",44,"235",44,"236",44,"237",44,"238",44,"239",44
    db "240",44,"241",44,"242",44,"243",44,"244",44,"245",44,"246",44,"247",44
    db "248",44,"249",44,"250",44,"251",44,"252",44,"253",44,"254",44,"255",44
  @@:

    push ebx
    push esi
    push edi
  ; ============================

    lea edx, StringTable
    xor ebx, ebx                    ; line length counter

    mov eax, lpsrc
    add eax, lnsrc
    mov count, eax                  ; set count as exit condition

    mov esi, lpsrc
    mov edi, lpbuf

    mov [edi], DWORD PTR 0D202020h  ; 3 space padding for alignment + CR
    add edi, 4
    mov [edi], DWORD PTR 2062640Ah  ; LF + "db "
    add edi, 4

    xor eax, eax                    ; avoid stall

  ; %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

  @@:
    mov al, [esi]
    inc esi
    mov ecx, [edx+eax*4]            ; all table writes are DWORD size
    mov [edi], ecx
    add edi, 4

    cmp ebx, 16                     ; test character count per line
    je nxt1                         ; jump on less common choice
    inc ebx
    cmp esi, count                  ; test exit condition
    jne @B
    jmp The_Exit

  nxt1:
    dec edi
    mov [edi], BYTE PTR 13          ; overwrite comma with CR
    inc edi
    mov [edi], DWORD PTR 2062640Ah  ; write 4 bytes to maintain alignment
    add edi, 4
    xor ebx, ebx                    ; zero character count
    jmp @B

  ; %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

  The_Exit:

  ; only overwrite last character IF its a comma ","


    cmp [edi-1], BYTE PTR ","
    jne @F
    dec edi
  @@:
    mov [edi], DWORD PTR 00000A0Dh  ; append CRLF * 2 ascii zeros

  ; ============================
    pop edi
    pop esi
    pop ebx

    ret

AsciiDump endp

; #########################################################################

⌨️ 快捷键说明

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