Download presentation
Presentation is loading. Please wait.
Published byMyron Greene Modified over 9 years ago
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
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.
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.