Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- TITLE GCD.asm
- INCLUDE Irvine32.inc
- PrepareMap PROTO,
- string: PTR BYTE,
- map: PTR BYTE
- CharacterSearch PROTO,
- map: PTR BYTE,
- char: BYTE
- .data
- stringMap byte 32 dup(0)
- testString byte "hello, assembly language programming!",0
- msg1 byte " is not in the string.",0
- msg2 byte " is in the string.",0
- ;Code test driver
- .code
- main PROC
- INVOKE PrepareMap, addr testString, addr stringMap
- INVOKE CharacterSearch, addr stringMap, 'h'
- exit
- main ENDP
- PrepareMap PROC USES ECX EBX EAX EDX ESI EDI EBP, string: PTR BYTE, map: PTR BYTE
- mov esi, string
- mov edi, map
- mov ebp, 0
- ForLoop:
- cmp ebp, 32
- JGE L9
- LeftSide:
- mov al, [esi]
- shr al, 3
- add [edi], al
- RightSide:
- mov cl, [esi]
- AND cl, 7
- mov bl, 1
- shl bl, cl
- OrStatement:
- OR [edi], bl
- inc ebp
- JMP ForLoop
- L9:
- ret
- PrepareMap Endp
- CharacterSearch PROC map: PTR BYTE, char: BYTE
- LeftSide:
- ;mov al, char
- ;call WriteChar
- mov edi, map
- mov cl, char
- shr cl, 3
- mov [edi], cl
- RightSide:
- mov cl, char
- AND cl, 7
- mov al, 1
- shl al, cl
- AndStatement:
- mov bl, [edi]
- AND bl, al
- IfStatement:
- cmp bl, 0
- JE NotIn
- mov edx, offset msg2
- call WriteString
- JMP L9
- NotIn:
- mov edx, offset msg1
- call WriteString
- L9:
- ret
- CharacterSearch endp
- END main
Add Comment
Please, Sign In to add comment