Presentation is loading. Please wait.

Presentation is loading. Please wait.

Click to add Title Comunicación y Gerencia Click To add Subtitle Click to add Text Fundamentals of Assembly Language.

Similar presentations


Presentation on theme: "Click to add Title Comunicación y Gerencia Click To add Subtitle Click to add Text Fundamentals of Assembly Language."— Presentation transcript:

1 Click to add Title Comunicación y Gerencia Click To add Subtitle Click to add Text Fundamentals of Assembly Language

2 Lesson plan Review of existing concepts Data transfer instructions –Practice Basic arithmetic instructions and Repetitive move operations –Practice

3 Review of existing concepts Comments Directives (page, segment, title) Data type (Byte (DB), Word(DW), Doubleword(DD), String Some arithmetic operations: ADD,SUB,MUL,DIV

4 Data transfer instructions MOV instruction –Transfers data referenced by the address of the second operand to the address of the first operand –Destination has to have the same length as source [label:] MOV register/memory register/memory/immediate Example: MOV F, AX; // Move content of AX to the variable F MOV CX, D;// Move value of D to CX MOV ES, AX MOV AX, 215

5 Note MOV instruction can’t: set the value of the CS and IP registers. copy value of one segment register to another segment register (should copy to general register first). MOV ES, DS copy immediate value to segment register (should copy to general register first). MOV DS, 100 MOV instruction can’t: set the value of the CS and IP registers. copy value of one segment register to another segment register (should copy to general register first). MOV ES, DS copy immediate value to segment register (should copy to general register first). MOV DS, 100

6 MOVSB: Copy byte at DS:[SI] to ES:[DI]. Update SI and DI. Algorithm: ES:[DI] = DS:[SI] if DF = 0 then SI = SI + 1 DI = DI + 1 else SI = SI - 1 DI = DI - 1 DF: direction flag from the flag register MOVSB and MOVSW

7 MOVSW: Copy word at DS:[SI] to ES:[DI]. Update SI and DI. ES:[DI] = DS:[SI] if DF = 0 then SI = SI + 2 DI = DI + 2 else SI = SI - 2 DI = DI - 2 DF: direction flag from the flag register MOVSB and MOVSW

8 XCHG swap the two data items [label:] XCHG register/memory, register/memory Example: MOV AL, 5 MOV AH, 2 XCHG AL, AH ; AL = 2, AH = 5 XCHG AL, AH ; AL = 5, AH = 2 XCHG instruction

9 Load Effective Address. REG = address of memory (offset) [label:] LEA register/memory Example: LEA AX, m ;load offset address of m to AX LEA instruction

10 Arithmetic instructions INC and DEC instruction –Increasing or decreasing the contents of register or memory location by 1 [label:] INC/DEC register/memory Flag: OF, SF and ZF OF:is set when an instruction resulted in a carry into the sign bit of the result. SF: is set if the sign bit of a result is set ZF: is set if the result is equal to 0.

11 Arithmetic instructions ADD [label:] ADD/SUB operand1, operand 2 operand1 =operand 1 + operand 2 Operand 1: register/memory Operand 2: register/memory/immediate

12 Arithmetic instructions SUB [label:] SUB operand1, operand 2 operand1 =operand 1 - operand 2 operand 1: register/memory operand 2: register/memory/immediate

13 Arithmetic instructions MULoperand Unsigned multiply. Operand: register/memory

14 Arithmetic instructions IMULoperand Signed multiply. Operand: register/memory Example: MOV AX, -2 MOV CX, -3 IMUL CX; AX = +6 CF = 0

15 Arithmetic instructions DIVoperand Unsigned multiply. Operand: register/memory when operand is a byte: AL = AX / operand AH = remainder (modulus) when operand is a word: DX = remainder (modulus)

16 Arithmetic instructions IDIVoperand Signed multiply. Operand: register/memory when operand is a byte: AL = AX / operand AH = remainder (modulus) when operand is a word: DX = remainder (modulus)

17 Write a program to convert from Celsius to Fahrenheit and vice versa: Tc = (5/9)*(Tf-32) Tc: censius Tf: fahrenheit (The result may not be accurate due to the integer division but that is fine) Practice

18 Repetitive move instructions TITLEA04ASM1 (EXE) Move and add operations ; --------------------------------------------- STACKSEGMENT PARA STACK 'Stack' DW 32 DUP(0) STACKENDS ; ---------------------------------------------- DATASEGSEGMENT PARA 'Data' STRING1 DB "12345678","$" STRING2 DB ? DATASEGENDS

19 Repetitive move instructions CODESEG SEGMENT PARA 'Code' MAINPROC FAR MOV AX, dataseg MOV DS, AX MOV ES, AX MOV CX, 09 ; Initialize to move 9 characters LEA SI, STRING1 ; Initialize source index register to offset of string 1 LEA DI, STRING2 ; Initialize destination index register to offset of string 2 BEGINLOOP: MOV AL,[SI] ; Get a current character from string 1 to AL MOV [DI], AL ; Move it to the current character in string 2 INC SI ; Move to the next character in string 1 INC DI ; Move to the next character in string 2 DEC CX ; Decrease the count for loop JNZ BEGINLOOP ; Continue to loop if count is not 0 MOV AH, 09H LEA DX, STRING2 int 21H ; Display String 2 MAINENDP;End of procedure CODESEG ENDS END MAIN;End of program

20 Result

21 Repetitive move instructions DEC CX ZF = 1 if CX = 0 JNZ LABEL if ZF = 0 then jump to the label

22 Practice Develop an assembly program to: –Define byte items: BYTE1 and BYTE2 (Assign any values for these two variables) –Define a word item: WORD3 and WORD3=0 –Move content of Byte1 to AL –Add content of Byte2 to AL –Set DL= 42H –Exchange the content of AL and DL –Multiply the contents of AL by DL –Transfer product from AX to WORD3

23 Addressing mode Register addressing: E.gADD AX, BX fastest type of operations Immediate addressing Immediate contains a constant value or an expression E.g: MOV AX, 0245H Direct memory addressing One of operand references a memory location and the other operand references a register E.G MOV FLDF, AX

24 Addressing mode Direct-Offset addressing use arithmetic instruction to modify an address e.gMOV CX, DATAZ+2 Indirect memory addressing UseBX and BP, DI and SI within [ ] e.g. MOV [BX], CL

25 Addressing mode Base Displacement Addressing Uses BX, BP and DI, SI and combine with a displacement to form an effective address E.g MOV AL,[SI+2] Base-Index Addressing Combine BX,BP with DI,SI to form effective address E.G MOV AL,[BX+SI]

26 Addressing mode Base-Index Displacement Addressing Combine BX, BP and DI, SI and a displacement to form an effective address E.g MOV AL,[BX+SI+2]

27 NEAR and FAR address NEAR address consists of 16 bit offset portion of an address used in real mode FAR address consists of both the segment and offset portions in the form of 32 bit segment:offset

28 SEGMENT OVERRIDE PREFIX Example: MOV ES:[SI+2], CL; move CL to ES:[SI+2]


Download ppt "Click to add Title Comunicación y Gerencia Click To add Subtitle Click to add Text Fundamentals of Assembly Language."

Similar presentations


Ads by Google