csci 2510 tutorial 3 a “tutorial3_x86basics” program in assembly language

15
CSCI 2510 Tutorial 3 A “Tutorial3_x86Basics” Program in Assembly Language ZONG Wen Department of Computer Science and Engineering The Chinese University of Hong Kong [email protected]

Upload: burian

Post on 23-Feb-2016

59 views

Category:

Documents


0 download

DESCRIPTION

CSCI 2510 Tutorial 3 A “Tutorial3_x86Basics” Program in Assembly Language. ZONG Wen Department of Computer Science and Engineering The Chinese University of Hong Kong [email protected]. Main topic:. 1, IA-32 Manuals 2, Tutorial3_x86Basics 3, Assembly Language Syntax - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: CSCI 2510 Tutorial 3 A “Tutorial3_x86Basics” Program in Assembly Language

CSCI 2510 Tutorial 3A “Tutorial3_x86Basics” Program in Assembly

Language

ZONG Wen

Department of Computer Science and EngineeringThe Chinese University of Hong Kong

[email protected]

Page 2: CSCI 2510 Tutorial 3 A “Tutorial3_x86Basics” Program in Assembly Language

Main topic:

1, IA-32 Manuals

2, Tutorial3_x86Basics

3, Assembly Language Syntax

4, Related links and exercises

Page 3: CSCI 2510 Tutorial 3 A “Tutorial3_x86Basics” Program in Assembly Language

IA-32 Manuals

Volume 1: Basic ArchitectureVolume 2A: Instruction Set Reference, A-MVolume 2B: Instruction Set Reference, N-Z

Page 4: CSCI 2510 Tutorial 3 A “Tutorial3_x86Basics” Program in Assembly Language

Tutorial3_x86Basics

Download Tutorial3_x86Basics.ziphttp://www.cse.cuhk.edu.hk/csci2510

Page 5: CSCI 2510 Tutorial 3 A “Tutorial3_x86Basics” Program in Assembly Language

Tutorial3_x86Basics

Extract Tutorial3_x86Basics.zip

Open Tutorial3_x86Basics.sln (Visual Studio Solution file) in Visual C++ 2008

Press F7 to Build Solution (assemble)Antivirus software may need to be temporarily shutdown to avoid false alarm

Add a Break Point . Press F10 to Start Debugging

Right click on Editor Window (assembly code,) click “Go to Disassembly”

Page 6: CSCI 2510 Tutorial 3 A “Tutorial3_x86Basics” Program in Assembly Language

Tutorial3_x86Basics

View the values of variables in Registers, Memory 1 and Watch windows.(in Debug->Window)

Page 7: CSCI 2510 Tutorial 3 A “Tutorial3_x86Basics” Program in Assembly Language

Assembly Language Syntax

.686Target processor. Use instructions for Pentium class machines.

.MODEL FLAT, StdCallUse the flat memory model. Use Standard calling conventions.

.DATACreate a near data segment. Local variables are declared after this directive.

.CODEIndicates the start of a code segment.

Page 8: CSCI 2510 Tutorial 3 A “Tutorial3_x86Basics” Program in Assembly Language

Assembly Language Syntax

option casemap:noneCase sensitive to avoid messing up function names.

include include\msvcrt.incincludelib lib\msvcrt.lib

Include external library function definitions.MicroSoft Visual C RunTime

Page 9: CSCI 2510 Tutorial 3 A “Tutorial3_x86Basics” Program in Assembly Language

Assembly Language Syntax

; comment linemain PROC ; begin of procedurelabel1: ; define an address label

jmp label1 ; jump to label1, i.e., infinite loop!main ENDP ; end of procedure

times2 PROC ; begin of procedureshl eax, 1 ; shift left by 1 bit, i.e., multiply by 2 in binary!ret ; return

times2 ENDP ; end of procedure

END times2 ; end of this assembly file AND define entry point

Page 10: CSCI 2510 Tutorial 3 A “Tutorial3_x86Basics” Program in Assembly Language

Assembly Language Syntax

DB, DW, DWORD, DQDefine 1-byte, 2-byte, 4-byte, 8-byte data items.Intel uses little-endian, i.e. the least significant byte of a word is stored at its lowest address.

Examples:SINGLEBYTE DB 12hTWOBYTE DW 1234hFOURBYTE DWORD 12345678h EIGHTBYTE DQ 123456789abcdef0h

Page 11: CSCI 2510 Tutorial 3 A “Tutorial3_x86Basics” Program in Assembly Language

Assembly Language Syntax

Use DB to define a string, ended with 0 (null terminator)HELLO DB "Hello world!", 0FORMAT DB "ebx = %d (base 10)", 10, 0ASCII code of new-line is 10, \n is NOT supported!

SIXBYTE DB 6 DUP(99h)Define 6 bytes, with 99h as the content of each byten DUP(X) means duplicate X n times

PI EQU 3.14159MYREG EQU eax

Symbolic constants for MASM substitution

Page 12: CSCI 2510 Tutorial 3 A “Tutorial3_x86Basics” Program in Assembly Language

Assembly Language Syntax

Page 13: CSCI 2510 Tutorial 3 A “Tutorial3_x86Basics” Program in Assembly Language

Assembly Language Syntax

mov eax, 0a34abcdfh ; eax = 0a34abcdfhxor eax, eax ; eax = 0add MYREG, ebx ; eax = eax + ebx

Refer to x86Basic.asm for more details and examples.

Page 14: CSCI 2510 Tutorial 3 A “Tutorial3_x86Basics” Program in Assembly Language

Related link

Intel® 64 and IA-32 Architectures Software Developer's Manuals:

http://www.intel.com/products/processor/manuals/

Page 15: CSCI 2510 Tutorial 3 A “Tutorial3_x86Basics” Program in Assembly Language

Exercises

Define two 32-bit integers in data segment, compute their average (floored to integer), and use crt_printf() to output the result.

Try to use crt_scanf() to read a 32-bit integer from user, multiply it by 2, and output the result.