a newbie guide to assembler programing

Upload: dio-ngapokin

Post on 03-Apr-2018

220 views

Category:

Documents


0 download

TRANSCRIPT

  • 7/29/2019 A Newbie Guide to Assembler Programing

    1/3

    Common instructions A newbie guide to Assembler programing

    Common Instructions

    1997 by Cruehead / MiB

    Here...

    we'll describe the instructions that you must know in order to understand whatsgoing on. This is only the basics and if you want to become a serious cracker

    (and I hope you want to), you better learn more about the asm instructions.

    MOV dest, source

    This instuction simply moves a value into a location in the memory (register or

    variable).

    EG : MOV AX, 1234h ; AX = 1234h

    MOV BX, AX ; BX = AX

    First of all this would move the value 1234 hex (4660 dec) into the AX register.

    Then the value in AX (1234h) would be moved into the BX register. In a high

    level language this would be the same as AX:=$1234; BX:=AX; (pascal notation).

    ADD dest, value

    This simply add's something to the value stored in dest.

    EG : MOV AX, 10h ; Ax is now 10h

    ADD AX, 10h ; Ax is now 20h

    ADD AX, 5h ; Ax is now 25h

    SUB dest, value

    This substracts something from the value stored in dest.

    EG : MOV AX, 10h ; AX is now 10h

    SUB AX, 2h ; Ax is now 8h

    INC dest

    Increments something (register, variable or anything).

    EG : MOV AX, 10h ; AX is 10h

    INC AX ; Ax is now 11h

  • 7/29/2019 A Newbie Guide to Assembler Programing

    2/3

    DEC dest

    Decrements something (register, variable or anything).

    EG : MOV AX, 10h ; AX is 10h

    dec AX ; Ax is now Fh

    CMP source, dest

    Compares source with dest.

    EG : MOV AX, 10h ; AX is 10h

    MOV BX, 11h ; BX is 11h

    CMP AX, BX ; Compares AX with BX

    The line after CMP AX,BX will problaby be a conditional jump. If we wanted tojump if AX=BX, we would place a JE (Jump if equal) location (location would be

    an offset) after the CMP instruction. If we wanted to jump if AX was NOT equal

    to BX, we would place a JNE (Jump if not equal) location after the CMP

    instruction. There are alot of conditional jumps - here is a list of them.

    JMP location

    Jumps to another location in the code.

    EG : JMP 200h ; The program would here jump to offset 200h

    MOVSB or MOVSW

    Moves (well, copies really) either a byte (MOVSB) or a word (MOVSW) from DS:SI

    to ES:DI Increments SI.

    EG : Lets say that DS:SI points to a byte which holds the value of 5h

    MOVSB ; Takes the byte that DS:SI points to and places it in ES:DI

    The byte that ES:DI points to now has the value of 5h

    These instructions is very common in cracking, when a string is copied to

    another location. The instructions are then used together with the REP

    instruction.

    LODSB or LODSW

    Loads either a byte or a word from DS:SI and puts it in AL (LODSB) or AX(LODSW). Increments SI.

    EG : Lets say that DS:SI points to a word which holds the value of EBh

    LODSW ; Copies the word that DS:SI points to and places it in AX

  • 7/29/2019 A Newbie Guide to Assembler Programing

    3/3

    AX will now contain the value of EBh

    These instructions are often used together with the REP instruction.

    STOSB or STOSW

    Takes the value in AL (STDSB) or AX (STDSW) and places it in DS:SI. Increments

    SI.

    EG : Lets say that AX holds the value of EBh

    STOSW ; Copies the value in AX and places it in the word that DS:SI points to.

    ; DS:SI now points to a word containing EBh

    These instructions are often used together with the REP instruction.

    REP

    Repeat an instruction for the number of times specified in the CX register. A

    REP infront of a MOVSB,LODSB or STOSB (or infront of the word versions of these

    instructions) would cause that instruction to repeat itself.

    EG : MOV AL,Bh ; AL now contains bh

    MOV CX,5h ; CX now contains 5h

    REP STOSB ; This would copy the value of AL (5h) into whatever DS:SI points to 5 times

    ; and increment SI for every time.

    CALL procedure

    Calls a procedure, and after the procedure is finnished, returns.

    EG : CALL 4020 ; Jumps to the offset 4020 and continues the execution there until it

    ; reaches a RET. Then it continues on the next line.

    This was a near call. When a near call is executed you only jump to a diffrent

    offset. There are also far calls. They jump to a complete diffrent segment and

    offset.

    EG : CALL 013f:2310 ; Jumps to segment 013f, and the offset points to 2310.

    Back to Asm tutorial page...

    Copyright MiB 1998. All rights reversed.

    --------------26EE308E7E7BCAA662FDB40E--