匯編語言——Intel格式和AT&T格式
80386指令
???觀察一下Intel 的80x86 CPU文檔手冊會發(fā)現(xiàn),Intel的80x86 CPU支持幾百條指令,如此多的指令莫說深入研究,連入門恐怕也非易事。
???幸運的是,在這幾百條的指令中,常用的也不過幾十條而已,Intel 的80x86 CPU之所以支持幾百條指令,原因在于Intel 的80x86 CPU為了保持向下兼容的問題,所以從過去到現(xiàn)在的所有指令都包含在CPU里面,例如有8086/8088、80186、80286和80386等。
?
Intel格式和AT&T格式(&在英語里讀and)
???編寫IA-32架構(gòu)的匯編語言常見有兩種格式,一種是Intel格式,另一種是AT&T格式。
(1)Intel 格式的指令格式。
?指令名稱 ?目標(biāo)操作數(shù)DST,源操作數(shù)SRC
示例代碼:
????Mov eax,[edx] ?//將內(nèi)存地址為EDX的數(shù)據(jù)放入EAX寄存器
????Xchg eax,edi ??//交換EAX和EDI寄存器的值 ??
????Add eax,ebx ???// 將EAX和EBX相加,結(jié)構(gòu)放回EAX中
????Shl eax,4 ?????//將EAX邏輯左移4位。
(2)AT&T格式的指令格式。
?指令名稱 源操作數(shù)SRC,目標(biāo)操作數(shù)DST
示例代碼:
????Mov (%EDX),%EAX ???//將內(nèi)存地址為EDX的數(shù)據(jù)放入EAX寄存器
????XCHG %EDI,%EAX ???//交換EAX和EDI寄存器的值
????ADD %EBX,%EAX ???//將EAX和EBX相加,結(jié)構(gòu)放回EAX中
????SHL $4,%EAX ???????//將EAX邏輯左移4位。
????本教程中講解的匯編語言統(tǒng)一采用Intel 格式的匯編格式。
