click to add title comunicación y gerencia click to add subtitle click to add text fundamentals of...
TRANSCRIPT
![Page 1: Click to add Title Comunicación y Gerencia Click To add Subtitle Click to add Text Fundamentals of Assembly Language](https://reader036.vdocuments.mx/reader036/viewer/2022062301/5697bfa81a28abf838c991e3/html5/thumbnails/1.jpg)
Click to add Click to add TitleTitle
Comunicación y Gerencia
Click To add SubtitleClick To add Subtitle
Click to add TextClick to add Text
Fundamentals of Assembly Language
![Page 2: Click to add Title Comunicación y Gerencia Click To add Subtitle Click to add Text Fundamentals of Assembly Language](https://reader036.vdocuments.mx/reader036/viewer/2022062301/5697bfa81a28abf838c991e3/html5/thumbnails/2.jpg)
Lesson plan• Review of existing concepts
• Data transfer instructions– Practice
• Basic arithmetic instructions and
Repetitive move operations– Practice
![Page 3: Click to add Title Comunicación y Gerencia Click To add Subtitle Click to add Text Fundamentals of Assembly Language](https://reader036.vdocuments.mx/reader036/viewer/2022062301/5697bfa81a28abf838c991e3/html5/thumbnails/3.jpg)
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
![Page 4: Click to add Title Comunicación y Gerencia Click To add Subtitle Click to add Text Fundamentals of Assembly Language](https://reader036.vdocuments.mx/reader036/viewer/2022062301/5697bfa81a28abf838c991e3/html5/thumbnails/4.jpg)
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
![Page 5: Click to add Title Comunicación y Gerencia Click To add Subtitle Click to add Text Fundamentals of Assembly Language](https://reader036.vdocuments.mx/reader036/viewer/2022062301/5697bfa81a28abf838c991e3/html5/thumbnails/5.jpg)
Note 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
![Page 6: Click to add Title Comunicación y Gerencia Click To add Subtitle Click to add Text Fundamentals of Assembly Language](https://reader036.vdocuments.mx/reader036/viewer/2022062301/5697bfa81a28abf838c991e3/html5/thumbnails/6.jpg)
• 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
![Page 7: Click to add Title Comunicación y Gerencia Click To add Subtitle Click to add Text Fundamentals of Assembly Language](https://reader036.vdocuments.mx/reader036/viewer/2022062301/5697bfa81a28abf838c991e3/html5/thumbnails/7.jpg)
• 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
![Page 8: Click to add Title Comunicación y Gerencia Click To add Subtitle Click to add Text Fundamentals of Assembly Language](https://reader036.vdocuments.mx/reader036/viewer/2022062301/5697bfa81a28abf838c991e3/html5/thumbnails/8.jpg)
• 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
![Page 9: Click to add Title Comunicación y Gerencia Click To add Subtitle Click to add Text Fundamentals of Assembly Language](https://reader036.vdocuments.mx/reader036/viewer/2022062301/5697bfa81a28abf838c991e3/html5/thumbnails/9.jpg)
• 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
![Page 10: Click to add Title Comunicación y Gerencia Click To add Subtitle Click to add Text Fundamentals of Assembly Language](https://reader036.vdocuments.mx/reader036/viewer/2022062301/5697bfa81a28abf838c991e3/html5/thumbnails/10.jpg)
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 ZFOF: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.
![Page 11: Click to add Title Comunicación y Gerencia Click To add Subtitle Click to add Text Fundamentals of Assembly Language](https://reader036.vdocuments.mx/reader036/viewer/2022062301/5697bfa81a28abf838c991e3/html5/thumbnails/11.jpg)
Arithmetic instructions
• ADD[label:] ADD/SUB operand1, operand 2
operand1 =operand 1 + operand 2
Operand 1: register/memory
Operand 2: register/memory/immediate
![Page 12: Click to add Title Comunicación y Gerencia Click To add Subtitle Click to add Text Fundamentals of Assembly Language](https://reader036.vdocuments.mx/reader036/viewer/2022062301/5697bfa81a28abf838c991e3/html5/thumbnails/12.jpg)
Arithmetic instructions
• SUB[label:] SUB operand1, operand 2
operand1 =operand 1 - operand 2
operand 1: register/memory
operand 2: register/memory/immediate
![Page 13: Click to add Title Comunicación y Gerencia Click To add Subtitle Click to add Text Fundamentals of Assembly Language](https://reader036.vdocuments.mx/reader036/viewer/2022062301/5697bfa81a28abf838c991e3/html5/thumbnails/13.jpg)
Arithmetic instructions
• MULoperandUnsigned multiply.
Operand: register/memory
![Page 14: Click to add Title Comunicación y Gerencia Click To add Subtitle Click to add Text Fundamentals of Assembly Language](https://reader036.vdocuments.mx/reader036/viewer/2022062301/5697bfa81a28abf838c991e3/html5/thumbnails/14.jpg)
Arithmetic instructions
• IMUL operandSigned multiply.
Operand: register/memory
Example:
MOV AX, -2
MOV CX, -3
IMUL CX ; AX = +6
CF = 0
![Page 15: Click to add Title Comunicación y Gerencia Click To add Subtitle Click to add Text Fundamentals of Assembly Language](https://reader036.vdocuments.mx/reader036/viewer/2022062301/5697bfa81a28abf838c991e3/html5/thumbnails/15.jpg)
Arithmetic instructions
• DIV operandUnsigned multiply.
Operand: register/memory
when operand is a byte:AL = AX / operandAH = remainder (modulus)
when operand is a word:DX = remainder (modulus)
![Page 16: Click to add Title Comunicación y Gerencia Click To add Subtitle Click to add Text Fundamentals of Assembly Language](https://reader036.vdocuments.mx/reader036/viewer/2022062301/5697bfa81a28abf838c991e3/html5/thumbnails/16.jpg)
Arithmetic instructions
• IDIV operandSigned multiply.
Operand: register/memory
when operand is a byte:AL = AX / operandAH = remainder (modulus)
when operand is a word:DX = remainder (modulus)
![Page 17: Click to add Title Comunicación y Gerencia Click To add Subtitle Click to add Text Fundamentals of Assembly Language](https://reader036.vdocuments.mx/reader036/viewer/2022062301/5697bfa81a28abf838c991e3/html5/thumbnails/17.jpg)
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
![Page 18: Click to add Title Comunicación y Gerencia Click To add Subtitle Click to add Text Fundamentals of Assembly Language](https://reader036.vdocuments.mx/reader036/viewer/2022062301/5697bfa81a28abf838c991e3/html5/thumbnails/18.jpg)
Repetitive move instructions
TITLE A04ASM1 (EXE) Move and add operations; ---------------------------------------------STACK SEGMENT PARA STACK 'Stack'
DW 32 DUP(0)STACK ENDS; ----------------------------------------------DATASEG SEGMENT PARA 'Data' STRING1 DB "12345678","$" STRING2 DB ? DATASEG ENDS
![Page 19: Click to add Title Comunicación y Gerencia Click To add Subtitle Click to add Text Fundamentals of Assembly Language](https://reader036.vdocuments.mx/reader036/viewer/2022062301/5697bfa81a28abf838c991e3/html5/thumbnails/19.jpg)
Repetitive move instructionsCODESEG SEGMENT PARA 'Code'MAIN PROC 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 MAIN ENDP ;End of procedureCODESEG ENDSEND MAIN ;End of program
![Page 20: Click to add Title Comunicación y Gerencia Click To add Subtitle Click to add Text Fundamentals of Assembly Language](https://reader036.vdocuments.mx/reader036/viewer/2022062301/5697bfa81a28abf838c991e3/html5/thumbnails/20.jpg)
Result
![Page 21: Click to add Title Comunicación y Gerencia Click To add Subtitle Click to add Text Fundamentals of Assembly Language](https://reader036.vdocuments.mx/reader036/viewer/2022062301/5697bfa81a28abf838c991e3/html5/thumbnails/21.jpg)
Repetitive move instructions• DEC CX
ZF = 1 if CX = 0
• JNZ LABEL
if ZF = 0 then jump to the label
![Page 22: Click to add Title Comunicación y Gerencia Click To add Subtitle Click to add Text Fundamentals of Assembly Language](https://reader036.vdocuments.mx/reader036/viewer/2022062301/5697bfa81a28abf838c991e3/html5/thumbnails/22.jpg)
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
![Page 23: Click to add Title Comunicación y Gerencia Click To add Subtitle Click to add Text Fundamentals of Assembly Language](https://reader036.vdocuments.mx/reader036/viewer/2022062301/5697bfa81a28abf838c991e3/html5/thumbnails/23.jpg)
Addressing mode
• Register addressing: E.g ADD AX, BX
fastest type of operations• Immediate addressing
Immediate contains a constant value or an expressionE.g: MOV AX, 0245H
• Direct memory addressingOne of operand references a memory location and the
other operand references a registerE.G MOV FLDF, AX
![Page 24: Click to add Title Comunicación y Gerencia Click To add Subtitle Click to add Text Fundamentals of Assembly Language](https://reader036.vdocuments.mx/reader036/viewer/2022062301/5697bfa81a28abf838c991e3/html5/thumbnails/24.jpg)
Addressing mode
• Direct-Offset addressing
use arithmetic instruction to modify an address
e.g MOV CX, DATAZ+2
• Indirect memory addressing
Use BX and BP, DI and SI within [ ]
e.g. MOV [BX], CL
![Page 25: Click to add Title Comunicación y Gerencia Click To add Subtitle Click to add Text Fundamentals of Assembly Language](https://reader036.vdocuments.mx/reader036/viewer/2022062301/5697bfa81a28abf838c991e3/html5/thumbnails/25.jpg)
Addressing mode
Base Displacement AddressingUses BX, BP and DI, SI and combine with a displacement to form an effective addressE.g MOV AL,[SI+2]
Base-Index AddressingCombine BX,BP with DI,SI to form effective address
E.G MOV AL,[BX+SI]
![Page 26: Click to add Title Comunicación y Gerencia Click To add Subtitle Click to add Text Fundamentals of Assembly Language](https://reader036.vdocuments.mx/reader036/viewer/2022062301/5697bfa81a28abf838c991e3/html5/thumbnails/26.jpg)
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]
![Page 27: Click to add Title Comunicación y Gerencia Click To add Subtitle Click to add Text Fundamentals of Assembly Language](https://reader036.vdocuments.mx/reader036/viewer/2022062301/5697bfa81a28abf838c991e3/html5/thumbnails/27.jpg)
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
![Page 28: Click to add Title Comunicación y Gerencia Click To add Subtitle Click to add Text Fundamentals of Assembly Language](https://reader036.vdocuments.mx/reader036/viewer/2022062301/5697bfa81a28abf838c991e3/html5/thumbnails/28.jpg)
SEGMENT OVERRIDE PREFIX
Example:
MOV ES:[SI+2], CL ; move CL to ES:[SI+2]