SlideShare a Scribd company logo
1 of 9
DATA TRANSFERS IN ASSEMBLY
SANGRAM KESARI RAY <SHANKAR.RAY030@GMAIL.COM>
DATA TRANSFER INSTRUCTION/S
• OPERAND TYPES
• mnemonic
• mnemonic [dest]
• mnemonic [dest], [src]
• mnemonic [dest], [src1], [src2]
MOV INSTRUCTION
• MOV INSTRUCTION FORMATS
• MOV REGISTER, REGISTER //MOV EAX, EBX
• MOV MEMORY, REGISTER //MOV NUM1, EAX
• MOV REGISTER, MEMORY //MOV EAX, NUM1
• MOV MEMORY, VALUE //MOV NUM1, 10
• MOV REGISTER, VALUE //MOV EAX, 10
MOVZX AND MOVSX INSTRUCTION
• USE THEM WHEN COPYING FROM SMALLER SOURCE TO LARGE DESTINATIONS
• num1 byte 8 //8-bit src
• num2 byte -8 //8-bit src
• eax //32-bit dest
• mov eax, num1 //don’t do this, the register gets filled with incorrect
• movzx eax, num1 //copies a un-signed byte into 16-bit destination
• movsx eax, num2 //copies a signed byte into a 16-bit destination
LAHF AND SAHF INSTRUCTION
LAHF //LOAD LOW-BYTE OF EFLAGS/RFLAGS (SIGN, ZERO, AUXILIARY, PARITY, CARRY) INTO AH REGISTER, AH IS THE HIGH-BYTE OF EAX
SAHF //LOAD AH INTO LOW-BYTE OF EFLAGS/RFLAGS
WHY BOTHER?
SUPPOSE WE WANT TO DO SOMETHING, LOOKING AT EFLAGS FOR 2 INSTRUCTIONS, BUT THIS EFLAGS KEEP CHANGING INSTRUCTION AFTER
INSTRUCTION, WE NEED A WAY TO KEEP A TRACK OF THESE CHANGING EFLAGS.
EXECUTE INSTRUCTION #1 //ELFAGS CHANGED
SAVE EFLAGS INTO AH, STORE AH INTO NUM1
EXECUTE INSTRUCTION #2 //EFLAGS CHANGED
SAVE ELFAGS INTO AH, STORE AH INTO NUM2
IF NUM1 = NUM2
EXECUTE INSTRUCTION #3 // HOPE YOU GOT THE POINT, WHY USE LAHF AND SAHF INSTRUCTIONS?
XCHG INSTRUCTION
• ITS LIKE MOV BUT SWAPS THE VALUES
• XCHG REGISTER, REGISTER //MOV EAX, EBX
• XCHG MEMORY, REGISTER //MOV NUM1, EAX
• XCHG REGISTER, MEMORY //MOV EAX, NUM1
• XCHG MEMORY, VALUE //DOESN’T WORK
• XCHG REGISTER, VALUE //DOESN’T WORK
EFFECTIVE ADDRESSING
• ACCESSING ELEMENTS IN AN ARRY //CONTIGUOUS MEMORY LOCATIONSDF
• MYARRAY DWORD 10, 20, 30
• MOV EAX, MYARRAY //GET 10
• MOV EAX, MYARRAY+1 //GET 20
• MOV EAX, [MYARRAY+1] //GET 20, USE THIS FOR CODE CLARITY WHILE USING ARRAY
I KNOW ASSEMBLY!
DEMO
DATA TRANSFERS – PART 1
https://github.com/shankar-ray/Assembly-Language-Tutorials-for-Windows

More Related Content

Similar to Data Transfers in Assembly: MOV, MOVZX, MOVSX, LAHF, SAHF, XCHG Instructions

Basic buffer overflow part1
Basic buffer overflow part1Basic buffer overflow part1
Basic buffer overflow part1Payampardaz
 
Messaging, interoperability and log aggregation - a new framework
Messaging, interoperability and log aggregation - a new frameworkMessaging, interoperability and log aggregation - a new framework
Messaging, interoperability and log aggregation - a new frameworkTomas Doran
 
Stored procedures
Stored proceduresStored procedures
Stored proceduresMuksNoor
 
Alibaba patches in MariaDB
Alibaba patches in MariaDBAlibaba patches in MariaDB
Alibaba patches in MariaDBLixun Peng
 
Pipiot - the double-architecture shellcode constructor
Pipiot - the double-architecture shellcode constructorPipiot - the double-architecture shellcode constructor
Pipiot - the double-architecture shellcode constructorMoshe Zioni
 
Intro to reverse engineering owasp
Intro to reverse engineering   owaspIntro to reverse engineering   owasp
Intro to reverse engineering owaspTsvetelin Choranov
 
Using JavaScript ES2015 (ES6), ES2016, ES2017 in production
Using JavaScript ES2015 (ES6), ES2016, ES2017 in productionUsing JavaScript ES2015 (ES6), ES2016, ES2017 in production
Using JavaScript ES2015 (ES6), ES2016, ES2017 in productionAnže Žnidaršič
 
Running & Scaling Large Elasticsearch Clusters
Running & Scaling Large Elasticsearch ClustersRunning & Scaling Large Elasticsearch Clusters
Running & Scaling Large Elasticsearch ClustersFred de Villamil
 
Message:Passing - lpw 2012
Message:Passing - lpw 2012Message:Passing - lpw 2012
Message:Passing - lpw 2012Tomas Doran
 
Where Django Caching Bust at the Seams
Where Django Caching Bust at the SeamsWhere Django Caching Bust at the Seams
Where Django Caching Bust at the SeamsConcentric Sky
 
chapter8.ppt clean code Boundary ppt Coding guide
chapter8.ppt clean code Boundary ppt Coding guidechapter8.ppt clean code Boundary ppt Coding guide
chapter8.ppt clean code Boundary ppt Coding guideSanjeevSaharan5
 

Similar to Data Transfers in Assembly: MOV, MOVZX, MOVSX, LAHF, SAHF, XCHG Instructions (14)

Basic buffer overflow part1
Basic buffer overflow part1Basic buffer overflow part1
Basic buffer overflow part1
 
Messaging, interoperability and log aggregation - a new framework
Messaging, interoperability and log aggregation - a new frameworkMessaging, interoperability and log aggregation - a new framework
Messaging, interoperability and log aggregation - a new framework
 
Stored procedures
Stored proceduresStored procedures
Stored procedures
 
Alibaba patches in MariaDB
Alibaba patches in MariaDBAlibaba patches in MariaDB
Alibaba patches in MariaDB
 
Pipiot - the double-architecture shellcode constructor
Pipiot - the double-architecture shellcode constructorPipiot - the double-architecture shellcode constructor
Pipiot - the double-architecture shellcode constructor
 
Intro to reverse engineering owasp
Intro to reverse engineering   owaspIntro to reverse engineering   owasp
Intro to reverse engineering owasp
 
EC8691-MPMC-PPT.pptx
EC8691-MPMC-PPT.pptxEC8691-MPMC-PPT.pptx
EC8691-MPMC-PPT.pptx
 
Qemu Introduction
Qemu IntroductionQemu Introduction
Qemu Introduction
 
Using JavaScript ES2015 (ES6), ES2016, ES2017 in production
Using JavaScript ES2015 (ES6), ES2016, ES2017 in productionUsing JavaScript ES2015 (ES6), ES2016, ES2017 in production
Using JavaScript ES2015 (ES6), ES2016, ES2017 in production
 
Redshift deep dive
Redshift deep diveRedshift deep dive
Redshift deep dive
 
Running & Scaling Large Elasticsearch Clusters
Running & Scaling Large Elasticsearch ClustersRunning & Scaling Large Elasticsearch Clusters
Running & Scaling Large Elasticsearch Clusters
 
Message:Passing - lpw 2012
Message:Passing - lpw 2012Message:Passing - lpw 2012
Message:Passing - lpw 2012
 
Where Django Caching Bust at the Seams
Where Django Caching Bust at the SeamsWhere Django Caching Bust at the Seams
Where Django Caching Bust at the Seams
 
chapter8.ppt clean code Boundary ppt Coding guide
chapter8.ppt clean code Boundary ppt Coding guidechapter8.ppt clean code Boundary ppt Coding guide
chapter8.ppt clean code Boundary ppt Coding guide
 

Recently uploaded

Cloud Management Software Platforms: OpenStack
Cloud Management Software Platforms: OpenStackCloud Management Software Platforms: OpenStack
Cloud Management Software Platforms: OpenStackVICTOR MAESTRE RAMIREZ
 
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASEBATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASEOrtus Solutions, Corp
 
chapter--4-software-project-planning.ppt
chapter--4-software-project-planning.pptchapter--4-software-project-planning.ppt
chapter--4-software-project-planning.pptkotipi9215
 
Cloud Data Center Network Construction - IEEE
Cloud Data Center Network Construction - IEEECloud Data Center Network Construction - IEEE
Cloud Data Center Network Construction - IEEEVICTOR MAESTRE RAMIREZ
 
MYjobs Presentation Django-based project
MYjobs Presentation Django-based projectMYjobs Presentation Django-based project
MYjobs Presentation Django-based projectAnoyGreter
 
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...stazi3110
 
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...gurkirankumar98700
 
EY_Graph Database Powered Sustainability
EY_Graph Database Powered SustainabilityEY_Graph Database Powered Sustainability
EY_Graph Database Powered SustainabilityNeo4j
 
Unveiling Design Patterns: A Visual Guide with UML Diagrams
Unveiling Design Patterns: A Visual Guide with UML DiagramsUnveiling Design Patterns: A Visual Guide with UML Diagrams
Unveiling Design Patterns: A Visual Guide with UML DiagramsAhmed Mohamed
 
Salesforce Certified Field Service Consultant
Salesforce Certified Field Service ConsultantSalesforce Certified Field Service Consultant
Salesforce Certified Field Service ConsultantAxelRicardoTrocheRiq
 
What is Fashion PLM and Why Do You Need It
What is Fashion PLM and Why Do You Need ItWhat is Fashion PLM and Why Do You Need It
What is Fashion PLM and Why Do You Need ItWave PLM
 
Implementing Zero Trust strategy with Azure
Implementing Zero Trust strategy with AzureImplementing Zero Trust strategy with Azure
Implementing Zero Trust strategy with AzureDinusha Kumarasiri
 
Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...
Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...
Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...OnePlan Solutions
 
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024StefanoLambiase
 
Asset Management Software - Infographic
Asset Management Software - InfographicAsset Management Software - Infographic
Asset Management Software - InfographicHr365.us smith
 
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed DataAlluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed DataAlluxio, Inc.
 
Unveiling the Future: Sylius 2.0 New Features
Unveiling the Future: Sylius 2.0 New FeaturesUnveiling the Future: Sylius 2.0 New Features
Unveiling the Future: Sylius 2.0 New FeaturesŁukasz Chruściel
 
Professional Resume Template for Software Developers
Professional Resume Template for Software DevelopersProfessional Resume Template for Software Developers
Professional Resume Template for Software DevelopersVinodh Ram
 
英国UN学位证,北安普顿大学毕业证书1:1制作
英国UN学位证,北安普顿大学毕业证书1:1制作英国UN学位证,北安普顿大学毕业证书1:1制作
英国UN学位证,北安普顿大学毕业证书1:1制作qr0udbr0
 
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...soniya singh
 

Recently uploaded (20)

Cloud Management Software Platforms: OpenStack
Cloud Management Software Platforms: OpenStackCloud Management Software Platforms: OpenStack
Cloud Management Software Platforms: OpenStack
 
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASEBATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
 
chapter--4-software-project-planning.ppt
chapter--4-software-project-planning.pptchapter--4-software-project-planning.ppt
chapter--4-software-project-planning.ppt
 
Cloud Data Center Network Construction - IEEE
Cloud Data Center Network Construction - IEEECloud Data Center Network Construction - IEEE
Cloud Data Center Network Construction - IEEE
 
MYjobs Presentation Django-based project
MYjobs Presentation Django-based projectMYjobs Presentation Django-based project
MYjobs Presentation Django-based project
 
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
 
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
 
EY_Graph Database Powered Sustainability
EY_Graph Database Powered SustainabilityEY_Graph Database Powered Sustainability
EY_Graph Database Powered Sustainability
 
Unveiling Design Patterns: A Visual Guide with UML Diagrams
Unveiling Design Patterns: A Visual Guide with UML DiagramsUnveiling Design Patterns: A Visual Guide with UML Diagrams
Unveiling Design Patterns: A Visual Guide with UML Diagrams
 
Salesforce Certified Field Service Consultant
Salesforce Certified Field Service ConsultantSalesforce Certified Field Service Consultant
Salesforce Certified Field Service Consultant
 
What is Fashion PLM and Why Do You Need It
What is Fashion PLM and Why Do You Need ItWhat is Fashion PLM and Why Do You Need It
What is Fashion PLM and Why Do You Need It
 
Implementing Zero Trust strategy with Azure
Implementing Zero Trust strategy with AzureImplementing Zero Trust strategy with Azure
Implementing Zero Trust strategy with Azure
 
Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...
Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...
Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...
 
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
 
Asset Management Software - Infographic
Asset Management Software - InfographicAsset Management Software - Infographic
Asset Management Software - Infographic
 
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed DataAlluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
 
Unveiling the Future: Sylius 2.0 New Features
Unveiling the Future: Sylius 2.0 New FeaturesUnveiling the Future: Sylius 2.0 New Features
Unveiling the Future: Sylius 2.0 New Features
 
Professional Resume Template for Software Developers
Professional Resume Template for Software DevelopersProfessional Resume Template for Software Developers
Professional Resume Template for Software Developers
 
英国UN学位证,北安普顿大学毕业证书1:1制作
英国UN学位证,北安普顿大学毕业证书1:1制作英国UN学位证,北安普顿大学毕业证书1:1制作
英国UN学位证,北安普顿大学毕业证书1:1制作
 
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
 

Data Transfers in Assembly: MOV, MOVZX, MOVSX, LAHF, SAHF, XCHG Instructions

  • 1. DATA TRANSFERS IN ASSEMBLY SANGRAM KESARI RAY <SHANKAR.RAY030@GMAIL.COM>
  • 2. DATA TRANSFER INSTRUCTION/S • OPERAND TYPES • mnemonic • mnemonic [dest] • mnemonic [dest], [src] • mnemonic [dest], [src1], [src2]
  • 3. MOV INSTRUCTION • MOV INSTRUCTION FORMATS • MOV REGISTER, REGISTER //MOV EAX, EBX • MOV MEMORY, REGISTER //MOV NUM1, EAX • MOV REGISTER, MEMORY //MOV EAX, NUM1 • MOV MEMORY, VALUE //MOV NUM1, 10 • MOV REGISTER, VALUE //MOV EAX, 10
  • 4. MOVZX AND MOVSX INSTRUCTION • USE THEM WHEN COPYING FROM SMALLER SOURCE TO LARGE DESTINATIONS • num1 byte 8 //8-bit src • num2 byte -8 //8-bit src • eax //32-bit dest • mov eax, num1 //don’t do this, the register gets filled with incorrect • movzx eax, num1 //copies a un-signed byte into 16-bit destination • movsx eax, num2 //copies a signed byte into a 16-bit destination
  • 5. LAHF AND SAHF INSTRUCTION LAHF //LOAD LOW-BYTE OF EFLAGS/RFLAGS (SIGN, ZERO, AUXILIARY, PARITY, CARRY) INTO AH REGISTER, AH IS THE HIGH-BYTE OF EAX SAHF //LOAD AH INTO LOW-BYTE OF EFLAGS/RFLAGS WHY BOTHER? SUPPOSE WE WANT TO DO SOMETHING, LOOKING AT EFLAGS FOR 2 INSTRUCTIONS, BUT THIS EFLAGS KEEP CHANGING INSTRUCTION AFTER INSTRUCTION, WE NEED A WAY TO KEEP A TRACK OF THESE CHANGING EFLAGS. EXECUTE INSTRUCTION #1 //ELFAGS CHANGED SAVE EFLAGS INTO AH, STORE AH INTO NUM1 EXECUTE INSTRUCTION #2 //EFLAGS CHANGED SAVE ELFAGS INTO AH, STORE AH INTO NUM2 IF NUM1 = NUM2 EXECUTE INSTRUCTION #3 // HOPE YOU GOT THE POINT, WHY USE LAHF AND SAHF INSTRUCTIONS?
  • 6. XCHG INSTRUCTION • ITS LIKE MOV BUT SWAPS THE VALUES • XCHG REGISTER, REGISTER //MOV EAX, EBX • XCHG MEMORY, REGISTER //MOV NUM1, EAX • XCHG REGISTER, MEMORY //MOV EAX, NUM1 • XCHG MEMORY, VALUE //DOESN’T WORK • XCHG REGISTER, VALUE //DOESN’T WORK
  • 7. EFFECTIVE ADDRESSING • ACCESSING ELEMENTS IN AN ARRY //CONTIGUOUS MEMORY LOCATIONSDF • MYARRAY DWORD 10, 20, 30 • MOV EAX, MYARRAY //GET 10 • MOV EAX, MYARRAY+1 //GET 20 • MOV EAX, [MYARRAY+1] //GET 20, USE THIS FOR CODE CLARITY WHILE USING ARRAY
  • 9. DEMO DATA TRANSFERS – PART 1 https://github.com/shankar-ray/Assembly-Language-Tutorials-for-Windows