æµè§ˆx86 Assembly Language Reference Manual时,我é‡åˆ°äº†ç«‹å³æ“作数的定义:
 Âæ“作数å¯ä»¥æ˜¯ç«‹å³çš„(å³ï¼Œè¯„估为内è”值的常é‡è¡¨è¾¾å¼ï¼‰ï¼Œ[...]
如果我说得对,表达å¼ä¼šè¿”回一个值。那么常é‡è¡¨è¾¾å¼æ˜¯å¦ä¼šè¿”回一个常é‡å€¼ï¼Ÿ 内è”值是å¦æ„味ç€åœ¨ç»åŽ†äº†æ±‡ç¼–过程åŽå®ƒå°†è¢«å…¶ä»–一些值替æ¢ï¼Ÿ
ç”案 0 :(得分:5)
 Â常é‡è¡¨è¾¾å¼æ˜¯å¦ä¼šè¿”回一个常é‡å€¼ï¼Ÿ
是。立å³æ“作数在æ“作ç ä¸åˆ›å»ºä¸€ä¸ªå¸¸é‡å€¼ã€‚åƒmov eax, 3
ä¸€æ ·ï¼Œæ ¹æ®x32/x64 Intel Manualåˆ›å»ºä¸€ä¸ªç”±å‡ ä¸ªå—节组æˆçš„æ“作ç 。
B0+ rb ib MOV r8, imm8 OI Valid Valid Move imm8 to r8.
B8+ rw iw MOV r16, imm16 OI Valid Valid Move imm16 to r16.
B8+ rd id MOV r32, imm32 OI Valid Valid Move imm32 to r32.
C6 /0 ib MOV r/m8, imm8 MI Valid Valid Move imm8 to r/m8.
C7 /0 iw MOV r/m16, imm16 MI Valid Valid Move imm16 to r/m16.
C7 /0 id MOV r/m32, imm32 MI Valid Valid Move imm32 to r/m32.
例如:对于32ä½æ¨¡å¼ï¼Œä»¥ä¸‹å—节组åˆç¡®å®žä»£è¡¨æœ‰æ•ˆçš„æ“作ç 。这æ„味ç€mov destination, 3
æœ‰å‡ ç§å¯èƒ½æ€§ï¼š
b0 03 mov al, 3
66 b8 03 00 mov ax, 3
b8 03 00 00 00 mov eax, 3
c6 45 00 03 mov byte ptr [xxx], 3
66 c7 45 00 03 00 mov word ptr [xxx], 3
c7 45 00 03 00 00 00 mov dword ptr [xxx], 3
B0hå’ŒB8h表示å•å—节æ“作ç ,C6hå’ŒC7h表示由æ“​​作ç å—节和编ç 寻å€æ¨¡å¼çš„Mod / RMå—节组æˆçš„åŒå—节æ“作ç - 在本例ä¸ä¸ºindirect addressing
。 66h
指定Operand-Size Prefix
表示以下指令使用16ä½ï¼ˆåœ°å€æ¨¡å¼å¤–)æ“作数 - 与普通32ä½æ¨¡å¼æ“作数相比是一个异常。 8ä½æ“作数用å¦ä¸€ä¸ªæ“作ç ç¼–ç 。其余å—节是8/16/32ä½å€¼3
çš„ç¼–ç 。
 Â内è”值是å¦æ„味ç€åœ¨ç»åŽ†äº†æ±‡ç¼–过程åŽå®ƒä¼šè¢«å…¶ä»–一些值替æ¢ï¼Ÿ
没有。 Assembl(y | ing)是将常é‡å€¼åˆå¹¶åˆ°ç»“æžœæ“作ç ä¸çš„过程(å—节åºåˆ—)。在æŸç§ç¨‹åº¦ä¸Šï¼Œä¸€åˆ‡éƒ½æ˜¯å†…è”的。
ç”案 1 :(得分:1)
è¿™åªæ„味ç€è¡¨è¾¾å¼å¿…须是å¯ä»¥åœ¨æ±‡ç¼–期间计算的值。常é‡è¡¨è¾¾å¼çš„示例包括:
5
5+5
5*5
MyConstant (where this constant is defined somewhere else)
MyConstant*4
以上所有值都å¯ä»¥ç”±æ±‡ç¼–程åºç¡®å®šï¼Œå¹¶ç”¨è¡¨è¾¾å¼çš„值替æ¢ã€‚
相å,éžå¸¸é‡è¡¨è¾¾å¼å…·æœ‰åœ¨æ±‡ç¼–æœŸé—´æ— æ³•ç¡®å®šçš„å€¼ã€‚ä¾‹å包括:
ah (a register)
ah*al (expression containing registers)
[0x800] (a memory location)