Presentation is loading. Please wait.

Presentation is loading. Please wait.

ZONG Wen Department of Computer Science and Engineering The Chinese University of Hong Kong

Similar presentations


Presentation on theme: "ZONG Wen Department of Computer Science and Engineering The Chinese University of Hong Kong"— Presentation transcript:

1 ZONG Wen Department of Computer Science and Engineering The Chinese University of Hong Kong wzong@cse.cuhk.edu.hk wzong@cse.cuhk.edu.hk

2 1, IA-32 Manuals 2, Tutorial3_x86Basics 3, Assembly Language Syntax 4, Related links and exercises

3 Volume 1: Basic Architecture Volume 2A: Instruction Set Reference, A-M Volume 2B: Instruction Set Reference, N-Z

4 Download Tutorial3_x86Basics.zip http://www.cse.cuhk.edu.hk/csci2510

5 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”

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

7 .686 Target processor. Use instructions for Pentium class machines..MODEL FLAT, StdCall Use the flat memory model. Use Standard calling conventions..DATA Create a near data segment. Local variables are declared after this directive..CODE Indicates the start of a code segment.

8 option casemap:none Case sensitive to avoid messing up function names. include include\msvcrt.inc includelib lib\msvcrt.lib Include external library function definitions. MicroSoft Visual C RunTime

9 ; comment line main PROC; begin of procedure label1:; define an address label jmp label1; jump to label1, i.e., infinite loop! main ENDP; end of procedure times2 PROC; begin of procedure shl 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

10 DB, DW, DWORD, DQ Define 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: SINGLEBYTEDB12h TWOBYTEDW1234h FOURBYTEDWORD12345678h EIGHTBYTEDQ123456789abcdef0h

11 Use DB to define a string, ended with 0 (null terminator) HELLODB"Hello world!", 0 FORMATDB"ebx = %d (base 10)", 10, 0 ASCII code of new-line is 10, \n is NOT supported! SIXBYTEDB6 DUP(99h) Define 6 bytes, with 99h as the content of each byte n DUP(X) means duplicate X n times PIEQU3.14159 MYREGEQUeax Symbolic constants for MASM substitution

12

13 moveax, 0a34abcdfh; eax = 0a34abcdfh xoreax, eax; eax = 0 addMYREG, ebx; eax = eax + ebx Refer to x86Basic.asm for more details and examples.

14 Intel® 64 and IA-32 Architectures Software Developer's Manuals: http://www.intel.com/products/processor/manuals/

15 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.


Download ppt "ZONG Wen Department of Computer Science and Engineering The Chinese University of Hong Kong"

Similar presentations


Ads by Google