快捷搜索:  as  2018  FtCWSyGV  С˵  test  xxx  Ψһ  w3viyKQx

和记娱乐下载官方平台_机器人论坛



DJGPP应用AT&T款式的汇编语法,和一样平常的intel款式的语法有点不合。主要不合点如下:

AT&T语法倒置了源和目的操作数的位置, 目的操作数在源操作数之后。寄存器操作数要有个%的前缀,急速数操作数要有个$符号的前缀。存储器操作数的大年夜小取决于操作码的着末一个字符。 它们是b(8-bit), w(16-bit)和l(32-bit)。

这里有一些例子。左边部分是at&t款式,右边是intel指令款式。

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

大年夜部分操作指令,at&t和intel都是差不多的,除了这些:

movsSD // movsx

movzSD // movz

S和D分辨代表源和目的操作数后和记娱乐下载官方平台缀。

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

操作嘛,前缀不能与它们感化的指令写在同一行。例如rep和stosd应该是两个互相自力的指令, 存储器的环境也有一点不合。平日intel款式的如下:

section:[base + index*scale + disp]

被写成:

section:disp(base, index, scale)

这里有些例子:

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 指令平日是个短跳转。可是, 下面这些指令都是只能在一个字节的范围内跳转: jcxz,jecxz,loop,loopz和记娱乐下载官方平台,loope,loopnz和loopne。象在线文档所说的那样,一个jcxz foo可以扩展成以下事情:

jcxz cx_zero

jmp cx_nonzero

cx_zero:

jmp foo

cx_nonzero:

文档也留意到了m和记娱乐下载官方平台ul和imul指令。 扩展的乘法指令只用一个操作数,例如, imul $ebx, $ebx将不会把结果放入edx:eax。应用imul %e和记娱乐下载官方平台bx中的单操作数来得到扩展结果。

您可能还会对下面的文章感兴趣: