AT&T x86 Asm Syntax

buy Baclofen online buy prozac purchase esomeprazole Lecture Material from 201

Robert Dewar

AT&T x86 Asm Syntax

GCC uses AT&T asm syntax. This is a little bit different from the regular
Intel format. The main differences are:

* AT&T syntax uses the opposite order for source and destination operands,
source followed by destination.
* Register operands are preceded by the “%” character, including sections.
* Immediate operands are preceded by the “$” character.
* The size of memory operands are specified using the last character of
the opcode. These are “b” (8-bit), “w” (16-bit), and “l” (32-bit).

Here are some examples: (Intel equivalent in parentheses)

movw %bx, %ax (mov ax, bx)
xorl %eax, %eax (xor eax, eax)
movw $1, %ax (mov ax,1)
movb X, %ah (mov ah, byte ptr X)
movw X, %ax (mov ax, word ptr X)
movl X, %eax (mov eax, X)

Most opcodes are identical between AT&T and Intel format, except for the
addition of the character b/w/l to indicate the operand size. The main
exceptions are:

movsSD (movsx)
movzSD (movzx)

Where S and D are the source and destination operand size suffixes,
respectively. For example, “movswl %ax, %ecx (movsx ecx, ax)”.

cbtw (cbw)
cwtl (cwde)
cwtd (cwd)
cltd (cdq)
lcall $S,$O (call far S:O)
ljmp $S,$O (jump far S:O)
lret $V (ret far V)

Memory references are a little bit different too. The usual Intel memory
reference of the form

SECTION:[BASE + INDEX*SCALE + DISP]

is written as

SECTION:DISP(BASE, INDEX, SCALE).

Here are some examples: (Intel equivalent in parentheses)

movl 4(%ebp), %eax (mov eax, [ebp+4])
addl (%eax,%eax,4), %ecx (add ecx, [eax + eax*4])
movb $4, %fs:(%eax) (mov fs:eax, 4)
movl _array(,%eax,4), %eax (mov eax, [4*eax + array])
movw _array(%ebx,%eax,4), %cx (mov cx, [ebx + 4*eax + array])

Jump instructions always use the smallest displacements. The following
instructions always work in byte displacements only, however: “jcxz”,
“jecxz”, “loop”, “loopz”, “loope”, “loopnz” and “loopne”. As suggested
in the online docs, a “jcxz foo” could be expanded to work:

jcxz cx_zero
jmp cx_nonzero
cx_zero:
jmp foo
cx_nonzero:

The online docs also caution on “mul” and “imul” instructions. The
expanding multiply instructions are done using ONE operand. For example,
“imul $ebx, $ebx” will NOT put the result in “edx:eax”. Use the single
operand form “imul %ebx” to get the expanded result.

Keyboard Keys and Key Code Values

Keyboard Keys and Key Code Values

The following tables list all the keys on a standard keyboard and the corresponding key code values and ASCII key code values that are used to identify the keys in ActionScript:

You can use key constants to intercept the built-in behavior of keypresses.

For more information on the on() handler, see on handler in the ActionScript 2.0 Language Reference. To capture key code values and ASCII key code values using a SWF file and key presses, draw a text field on the Stage. Select Input Text from the Text Type drop-down menu in the Properties panel, and click the Show border around text option. Then paste the following ActionScript code into the actions panel for the current Frame on the Timeline:

var keyListener:Object = new Object();

keyListener.onKeyDown = function() {
    trace("DOWN -> Code: " + Key.getCode() + "\tACSII: " + Key.getAscii() + "\tKey: " + chr(Key.getAscii()));
};
Key.addListener(keyListener);

For more information on the Key class, see Key in ActionScript 2.0 Language Reference. To trap keys when you test a SWF file in the authoring environment (Control > Test Movie), make sure that you select Control > Disable Keyboard Shortcuts.

Letters A to Z and standard numbers 0 to 9

The following table lists the keys on a standard keyboard for the letters A to Z and the numbers 0 to 9, with the corresponding key code values that are used to identify the keys in ActionScript:

 

 

Letter or number key Key code ASCII key code
A 65 65
B 66 66
C 67 67
D 68 68
E 69 69
F 70 70
G 71 71
H 72 72
I 73 73
J 74 74
K 75 75
L 76 76
M 77 77
N 78 78
O 79 79
P 80 80
Q 81 81
R 82 82
S 83 83
T 84 84
U 85 85
V 86 86
W 87 87
X 88 88
Y 89 89
Z 90 90
0 48 48
1 49 49
2 50 50
3 51 51
4 52 52
5 53 53
6 54 54
7 55 55
8 56 56
9 57 57
a 65 97
b 66 98
c 67 99
d 68 100
e 69 101
f 70 102
g 71 103
h 72 104
i 73 105
j 74 106
k 75 107
l 76 108
m 77 109
n 78 110
o 79 111
p 80 112
q 81 113
r 82 114
s 83 115
t 84 116
u 85 117
v 86 118
w 87 119
x 88 120
y 89 121
z 90 122

 

Keys on the numeric keypad

The following table lists the keys on a numeric keypad, with the corresponding key code values that are used to identify the keys in ActionScript:

 

 

Numeric keypad key Key code ASCII key code
Numpad 0 96 48
Numpad 1 97 49
Numpad 2 98 50
Numpad 3 99 51
Numpad 4 100 52
Numpad 5 101 53
Numpad 6 102 54
Numpad 7 103 55
Numpad 8 104 56
Numpad 9 105 57
Multiply 106 42
Add 107 43
Enter 13 13
Subtract 109 45
Decimal 110 46
Divide 111 47

 

Function keys

The following table lists the function keys on a standard keyboard, with the corresponding key code values that are used to identify the keys in ActionScript:

 

 

generic Propranolol

Function key Key code ASCII key code
F1 112 0
F2 113 0
F3 114 0
F4 115 0
F5 116 0
F6 117 0
F7 118 0
F8 119 0
F9 120 0
F10 This key is reserved by the system and cannot be used in ActionScript. This key is reserved by the system and cannot be used in ActionScript.
F11 122 0
F12 123 0
F13 124 0
F14 125 0
F15 126 0

 

Other keys

The following table lists keys on a standard keyboard other than letters, numbers, numeric keypad keys, or function keys, with the corresponding key code values that are used to identify the keys in ActionScript:

 

 

buy Indocin

purchase misoprostol

Key Key code ASCII key code
Backspace 8 8
Tab 9 9
Enter 13 13
Shift 16 0
Control 17 0
Caps Lock 20 0
Esc 27 27
Spacebar 32 32
Page Up 33 0
Page Down 34 0
End 35 0
Home 36 0
Left Arrow 37 0
Up Arrow 38 0
Right Arrow 39 0
Down Arrow 40 0
Insert 45 0
Delete 46 127
Num Lock 144 0
ScrLk 145 0
Pause/Break 19 0
; : 186 59
= + 187 61
– _ 189 45
/ ? 191 47
` ~ 192 96
[ { 219 91
\ | 220 92
] } 221 93
” ‘ 222 39
, 188 44
. 190 46
/ 191 47

 

For additional key code and ASCII values, use the ActionScript at the beginning of this appendix and press the desired key to trace its key code