sgrep.asm

来自「unix环境下实现的cmm语言编译器」· 汇编 代码 · 共 148 行

ASM
148
字号
section .dataglobal patternalign 1pattern:db 111db 117db 108db 100db 0section .textglobal mainmain:push ebxpush edxpush ecxpush esipush edipush ebpmov ebp,espsub esp, 512mov edi, 0jmp L3L2:push patternmov esi, ebpadd esi, -512push esicall strindexadd esp, 8cmp eax,0jl near L3mov esi, ebpadd esi, -512push esipush L7call printfadd esp, 8mov esi, ediadd esi, 1mov edi, esiL3:push 512mov esi, ebpadd esi, -512push esicall getlineadd esp, 8cmp eax,0jg near L2mov eax,edijmp L1L1:mov esp,ebppop ebppop edipop esipop ecxpop edxpop ebxretglobal strindexstrindex:push ebxpush edxpush ecxpush esipush edipush ebpmov ebp,espmov ebx, 0jmp L10L9:mov esi, ebxmov edi, 0jmp L13L12:mov edx, dword [ebp+28]mov ecx, esiadd ecx, edxmov dl,byte  [ecx]movsx edx,dlmov ecx, dword [ebp+32]mov eax, ediadd eax, ecxmov cl,byte  [eax]movsx ecx,clcmp edx, ecxje near L15jmp L14L15:mov edx, esiadd edx, 1mov esi, edxmov edx, ediadd edx, 1mov edi, edxL13:mov edx, dword [ebp+32]mov ecx, ediadd ecx, edxmov dl,byte  [ecx]movsx edx,dlcmp edx,0jne near L12L14:cmp edi,0jle near L17mov edx, dword [ebp+32]mov ecx, ediadd ecx, edxmov dl,byte  [ecx]movsx edx,dlcmp edx,0jne near L17mov eax,ebxjmp L8L17:mov edx, ebxadd edx, 1mov ebx, edxL10:mov edx, dword [ebp+28]mov ecx, ebxadd ecx, edxmov dl,byte  [ecx]movsx edx,dlcmp edx,0jne near L9mov eax,-1jmp L8L8:mov esp,ebppop ebppop edipop esipop ecxpop edxpop ebxretextern printfextern getlinesection .dataalign 1L7:db 37db 115db 0

⌨️ 快捷键说明

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