2017年春季匯編語(yǔ)言第七講基礎(chǔ)指令(二)-v10_第1頁(yè)
2017年春季匯編語(yǔ)言第七講基礎(chǔ)指令(二)-v10_第2頁(yè)
2017年春季匯編語(yǔ)言第七講基礎(chǔ)指令(二)-v10_第3頁(yè)
2017年春季匯編語(yǔ)言第七講基礎(chǔ)指令(二)-v10_第4頁(yè)
2017年春季匯編語(yǔ)言第七講基礎(chǔ)指令(二)-v10_第5頁(yè)
已閱讀5頁(yè),還剩90頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

匯編語(yǔ)言第七講基礎(chǔ)指令(二)第七講基礎(chǔ)指令(二)一、移位指令二、乘除指令三、雜項(xiàng)指令四、字節(jié)指令五、程序?qū)嵗?、移位指令SHL:邏輯左移SHR:邏輯右移SAL:算術(shù)左移SAR:算術(shù)右移SHLD:雙精度左移SHRD:雙精度右移SHL/SALSHL/SAL:邏輯左移/算術(shù)左移指令格式(Intel):SHLdest,count/SALdest,count語(yǔ)義:將dest操作數(shù)向左移動(dòng)count位,CF位保存最后移出的一位,右側(cè)低位補(bǔ)count個(gè)0標(biāo)志位影響當(dāng)count=0時(shí),所有標(biāo)志位不受影響當(dāng)count>0時(shí),CF位等于最后移出的一位,SF、ZF、PF根據(jù)移位結(jié)果設(shè)置,AF未定義當(dāng)count=1時(shí),如果移位前dest的最高2位相同,OF=0,否則OF=1;當(dāng)count>1時(shí),OF未定義SHL/SAL移位工作原理SHL/SAL指令基本格式指令格式(Intelsyntax)說(shuō)明sal

r/m,18/16/32寄存器或內(nèi)存單元左移1位sal

r/m,imm88/16/32寄存器或內(nèi)存單元左移imm8位sal

r/m,cl8/16/32寄存器或內(nèi)存單元左移,位數(shù)為cl寄存器的值shl

r/m,18/16/32寄存器或內(nèi)存單元左移1位shl

r/m,imm88/16/32寄存器或內(nèi)存單元左移imm8位shl

r/m,cl8/16/32寄存器或內(nèi)存單元左移,位數(shù)為cl寄存器的值注意imm8或者cl寄存器的內(nèi)容只使用低5位,即移位的位數(shù)是0~31左移操作相當(dāng)于N次×2操作,N是移位位數(shù)SHRSHR:邏輯右移指令格式(Intel):SHRdest,count

語(yǔ)義:將dest操作數(shù)向右移動(dòng)count位,CF位保存最后移出的一位,左側(cè)高位補(bǔ)count個(gè)0標(biāo)志位影響當(dāng)count=0時(shí),所有標(biāo)志位不受影響當(dāng)count>0時(shí),CF位等于最后移出的一位,SF、ZF、PF根據(jù)移位結(jié)果設(shè)置,AF未定義當(dāng)count=1時(shí),OF=移位前dest的最高位;當(dāng)count>1時(shí),OF未定義SHR移位工作原理SHR指令基本格式指令格式(Intelsyntax)說(shuō)明shr

r/m,18/16/32寄存器或內(nèi)存單元邏輯右移1位shr

r/m,imm88/16/32寄存器或內(nèi)存單元邏輯右移imm8位shr

r/m,cl8/16/32寄存器或內(nèi)存單元邏輯右移,位數(shù)為cl寄存器的值注意imm8或者cl寄存器的內(nèi)容只使用低5位,即移位的位數(shù)是0~31邏輯右移操作相當(dāng)于無(wú)符號(hào)數(shù)的N次÷2操作,N是移位位數(shù)SARSAR:算術(shù)右移指令格式(Intel):SARdest,count

語(yǔ)義:將dest操作數(shù)向右移動(dòng)count位,CF位保存最后移出的一位,左側(cè)高位補(bǔ)count個(gè)原符號(hào)位標(biāo)志位影響當(dāng)count=0時(shí),所有標(biāo)志位不受影響當(dāng)count>0時(shí),CF位等于最后移出的一位,SF、ZF、PF根據(jù)移位結(jié)果設(shè)置,AF未定義當(dāng)count=1時(shí),OF=0;當(dāng)count>1時(shí),OF未定義SAR移位工作原理SAR指令基本格式指令格式(Intelsyntax)說(shuō)明sar

r/m,18/16/32寄存器或內(nèi)存單元算術(shù)右移1位sar

r/m,imm88/16/32寄存器或內(nèi)存單元算術(shù)右移imm8位sar

r/m,cl8/16/32寄存器或內(nèi)存單元算術(shù)右移,位數(shù)為cl寄存器的值注意imm8或者cl寄存器的內(nèi)容只使用低5位,即移位的位數(shù)是0~31算術(shù)右移操作相當(dāng)于有符號(hào)數(shù)的N次÷2操作,N是移位位數(shù)SHLDSHLD:雙精度左移指令格式(Intel):SHLDdest,src,count語(yǔ)義:將dest操作數(shù)向左移動(dòng)count位,CF位保存最后移出的一位,右側(cè)低位補(bǔ)充來(lái)自src的count個(gè)高位標(biāo)志位影響當(dāng)count=0時(shí),所有標(biāo)志位不受影響當(dāng)count>0時(shí),CF位等于最后移出的一位,SF、ZF、PF根據(jù)移位結(jié)果設(shè)置,AF未定義當(dāng)count=1時(shí),如果移位前后dest的符號(hào)位發(fā)生變化,OF=1,否則OF=0;當(dāng)count>1時(shí),OF未定義SHLD移位工作原理另一個(gè)例子destsrc9BA6AC36Beforeshift:count=4BA6AAC36Aftershift:CFX1SHLD指令基本格式指令格式(Intelsyntax)說(shuō)明shldr/m16,r16,imm816位寄存器或內(nèi)存單元雙精度左移imm8位shldr/m16,r16,cl16位寄存器或內(nèi)存單元雙精度左移,位數(shù)為cl寄存器的值shldr/m32,r32,imm832位寄存器或內(nèi)存單元雙精度左移imm8位shldr/m32,r32,cl32位寄存器或內(nèi)存單元雙精度左移,位數(shù)為cl寄存器的值注意imm8或者cl寄存器的內(nèi)容只使用低5位,即移位的位數(shù)是0~31src操作數(shù)只能是寄存器SHRDSHRD:雙精度右移指令格式(Intel):SHRDdest,src,count語(yǔ)義:將dest操作數(shù)向右移動(dòng)count位,CF位保存最后移出的一位,左側(cè)高位補(bǔ)充來(lái)自src的count個(gè)低位標(biāo)志位影響當(dāng)count=0時(shí),所有標(biāo)志位不受影響當(dāng)count>0時(shí),CF位等于最后移出的一位,SF、ZF、PF根據(jù)移位結(jié)果設(shè)置,AF未定義當(dāng)count=1時(shí),如果移位前后dest符號(hào)位發(fā)生變化,OF=1,否則OF=0;當(dāng)count>1時(shí),OF未定義SHRD移位工作原理另一個(gè)例子destCF234BXBeforeshift:count=442341Aftershift:src76547654SHRD指令基本格式指令格式(Intelsyntax)說(shuō)明shrdr/m16,r16,imm816位寄存器或內(nèi)存單元雙精度右移imm8位shrdr/m16,r16,cl16位寄存器或內(nèi)存單元雙精度右移,位數(shù)為cl寄存器的值shrdr/m32,r32,imm832位寄存器或內(nèi)存單元雙精度右移imm8位shrdr/m32,r32,cl32位寄存器或內(nèi)存單元雙精度右移,位數(shù)為cl寄存器的值注意imm8或者cl寄存器的內(nèi)容只使用低5位,即移位的位數(shù)是0~31Src操作數(shù)只能是寄存器SHLD/SHRD的AT&T指令格式shldx

count,src,destshrdx count,src,dest指令后綴x可要可不要因?yàn)閟rc是寄存器,可確定指令的操作數(shù)大小指令示例(AT&T).section.data

var:.int0xafc05679.section.text.globl_start_start:

movw$0xac19,%ax

shlw$1,%ax

shrw$1,%ax

sal$5,%ax

sar$6,%ax

movb$10,%cl

shll%cl,var

movb$14,%cl

sarl%cl,var

movl$0x13579bdf,%eax

shrdl$4,%eax,var

shld%cl,%eax,var

shrd$33,%eax,var

sal$32,%eax

……

ax=0xac19 eflags=[IF]指令示例(AT&T).section.data

var:.int0xafc05679.section.text.globl_start_start:

movw$0xac19,%ax

shlw$1,%ax

shrw$1,%ax

sal$5,%ax

sar$6,%ax

movb$10,%cl

shll%cl,var

movb$14,%cl

sarl%cl,var

movl$0x13579bdf,%eax

shrdl$4,%eax,var

shld%cl,%eax,var

shrd$33,%eax,var

sal$32,%eax

……ax=0xac19 eflags=[IF]

ax=0x5832 eflags=[CFIFOF]指令示例(AT&T).section.data

var:.int0xafc05679.section.text.globl_start_start:

movw$0xac19,%ax

shlw$1,%ax

shrw$1,%ax

sal$5,%ax

sar$6,%ax

movb$10,%cl

shll%cl,var

movb$14,%cl

sarl%cl,var

movl$0x13579bdf,%eax

shrdl$4,%eax,var

shld%cl,%eax,var

shrd$33,%eax,var

sal$32,%eax

……ax=0xac19 eflags=[IF]ax=0x5832 eflags=[CFIFOF]ax=0x2c19 eflags=[IF]指令示例(AT&T).section.data

var:.int0xafc05679.section.text.globl_start_start:

movw$0xac19,%ax

shlw$1,%ax

shrw$1,%ax

sal$5,%ax

sar$6,%ax

movb$10,%cl

shll%cl,var

movb$14,%cl

sarl%cl,var

movl$0x13579bdf,%eax

shrdl$4,%eax,var

shld%cl,%eax,var

shrd$33,%eax,var

sal$32,%eax

……ax=0xac19 eflags=[IF]ax=0x5832 eflags=[CFIFOF]ax=0x2c19 eflags=[IF]ax=0x8320 eflags=[CFSFIF]指令示例(AT&T).section.data

var:.int0xafc05679.section.text.globl_start_start:

movw$0xac19,%ax

shlw$1,%ax

shrw$1,%ax

sal$5,%ax

sar$6,%ax

movb$10,%cl

shll%cl,var

movb$14,%cl

sarl%cl,var

movl$0x13579bdf,%eax

shrdl$4,%eax,var

shld%cl,%eax,var

shrd$33,%eax,var

sal$32,%eax

……ax=0xac19 eflags=[IF]ax=0x5832 eflags=[CFIFOF]ax=0x2c19 eflags=[IF]ax=0x8320 eflags=[CFSFIF]ax=0xfe0c eflags=[CFPFSFIF]指令示例(AT&T).section.data

var:.int0xafc05679.section.text.globl_start_start:

movw$0xac19,%ax

shlw$1,%ax

shrw$1,%ax

sal$5,%ax

sar$6,%ax

movb$10,%cl

shll%cl,var

movb$14,%cl

sarl%cl,var

movl$0x13579bdf,%eax

shrdl$4,%eax,var

shld%cl,%eax,var

shrd$33,%eax,var

sal$32,%eax

……ax=0xac19 eflags=[IF]ax=0x5832 eflags=[CFIFOF]ax=0x2c19 eflags=[IF]ax=0x8320 eflags=[CFSFIF]ax=0xfe0c eflags=[CFPFSFIF]var=0xafc05679 eflags=[CFPFSFIF]指令示例(AT&T).section.data

var:.int0xafc05679.section.text.globl_start_start:

movw$0xac19,%ax

shlw$1,%ax

shrw$1,%ax

sal$5,%ax

sar$6,%ax

movb$10,%cl

shll%cl,var

movb$14,%cl

sarl%cl,var

movl$0x13579bdf,%eax

shrdl$4,%eax,var

shld%cl,%eax,var

shrd$33,%eax,var

sal$32,%eax

……ax=0xac19 eflags=[IF]ax=0x5832 eflags=[CFIFOF]ax=0x2c19 eflags=[IF]ax=0x8320 eflags=[CFSFIF]ax=0xfe0c eflags=[CFPFSFIF]var=0xafc05679 eflags=[CFPFSFIF]var=0x0159e400eflags=[CFPFIF]指令示例(AT&T).section.data

var:.int0xafc05679.section.text.globl_start_start:

movw$0xac19,%ax

shlw$1,%ax

shrw$1,%ax

sal$5,%ax

sar$6,%ax

movb$10,%cl

shll%cl,var

movb$14,%cl

sarl%cl,var

movl$0x13579bdf,%eax

shrdl$4,%eax,var

shld%cl,%eax,var

shrd$33,%eax,var

sal$32,%eax

……ax=0xac19 eflags=[IF]ax=0x5832 eflags=[CFIFOF]ax=0x2c19 eflags=[IF]ax=0x8320 eflags=[CFSFIF]ax=0xfe0c eflags=[CFPFSFIF]var=0xafc05679 eflags=[CFPFSFIF]var=0x0159e400eflags=[CFPFIF]var=0x00000567eflags=[CFIF]指令示例(AT&T).section.data

var:.int0xafc05679.section.text.globl_start_start:

movw$0xac19,%ax

shlw$1,%ax

shrw$1,%ax

sal$5,%ax

sar$6,%ax

movb$10,%cl

shll%cl,var

movb$14,%cl

sarl%cl,var

movl$0x13579bdf,%eax

shrdl$4,%eax,var

shld%cl,%eax,var

shrd$33,%eax,var

sal$32,%eax

……ax=0xac19 eflags=[IF]ax=0x5832 eflags=[CFIFOF]ax=0x2c19 eflags=[IF]ax=0x8320 eflags=[CFSFIF]ax=0xfe0c eflags=[CFPFSFIF]var=0xafc05679 eflags=[CFPFSFIF]var=0x0159e400eflags=[CFPFIF]var=0x00000567eflags=[CFIF]eax=0x13579bdfeflags=[CFIF]指令示例(AT&T).section.data

var:.int0xafc05679.section.text.globl_start_start:

movw$0xac19,%ax

shlw$1,%ax

shrw$1,%ax

sal$5,%ax

sar$6,%ax

movb$10,%cl

shll%cl,var

movb$14,%cl

sarl%cl,var

movl$0x13579bdf,%eax

shrdl$4,%eax,var

shld%cl,%eax,var

shrd$33,%eax,var

sal$32,%eax

……ax=0xac19 eflags=[IF]ax=0x5832 eflags=[CFIFOF]ax=0x2c19 eflags=[IF]ax=0x8320 eflags=[CFSFIF]ax=0xfe0c eflags=[CFPFSFIF]var=0xafc05679 eflags=[CFPFSFIF]var=0x0159e400eflags=[CFPFIF]var=0x00000567eflags=[CFIF]eax=0x13579bdf eflags=[CFIF]eax=0x13579bdf var=0xf0000056 eflags=[PFSFIF]指令示例(AT&T).section.data

var:.int0xafc05679.section.text.globl_start_start:

movw$0xac19,%ax

shlw$1,%ax

shrw$1,%ax

sal$5,%ax

sar$6,%ax

movb$10,%cl

shll%cl,var

movb$14,%cl

sarl%cl,var

movl$0x13579bdf,%eax

shrdl$4,%eax,var

shld%cl,%eax,var

shrd$33,%eax,var

sal$32,%eax

……ax=0xac19 eflags=[IF]ax=0x5832 eflags=[CFIFOF]ax=0x2c19 eflags=[IF]ax=0x8320 eflags=[CFSFIF]ax=0xfe0c eflags=[CFPFSFIF]var=0xafc05679 eflags=[CFPFSFIF]var=0x0159e400eflags=[CFPFIF]var=0x00000567eflags=[CFIF]eax=0x13579bdf eflags=[CFIF]eax=0x13579bdf var=0xf0000056 eflags=[PFSFIF]var=0x001584d5eflags=[IF]指令示例(AT&T).section.data

var:.int0xafc05679.section.text.globl_start_start:

movw$0xac19,%ax

shlw$1,%ax

shrw$1,%ax

sal$5,%ax

sar$6,%ax

movb$10,%cl

shll%cl,var

movb$14,%cl

sarl%cl,var

movl$0x13579bdf,%eax

shrdl$4,%eax,var

shld%cl,%eax,var

shrd$33,%eax,var

sal$32,%eax

……ax=0xac19 eflags=[IF]ax=0x5832 eflags=[CFIFOF]ax=0x2c19 eflags=[IF]ax=0x8320 eflags=[CFSFIF]ax=0xfe0c eflags=[CFPFSFIF]var=0xafc05679 eflags=[CFPFSFIF]var=0x0159e400eflags=[CFPFIF]var=0x00000567eflags=[CFIF]eax=0x13579bdf eflags=[CFIF]eax=0x13579bdf var=0xf0000056 eflags=[PFSFIF]var=0x001584d5eflags=[IF]var=0x800ac26a eflags=[CFPFSFIFOF]指令示例(AT&T).section.data

var:.int0xafc05679.section.text.globl_start_start:

movw$0xac19,%ax

shlw$1,%ax

shrw$1,%ax

sal$5,%ax

sar$6,%ax

movb$10,%cl

shll%cl,var

movb$14,%cl

sarl%cl,var

movl$0x13579bdf,%eax

shrdl$4,%eax,var

shld%cl,%eax,var

shrd$33,%eax,var

sal$32,%eax

……ax=0xac19 eflags=[IF]ax=0x5832 eflags=[CFIFOF]ax=0x2c19 eflags=[IF]ax=0x8320 eflags=[CFSFIF]ax=0xfe0c eflags=[CFPFSFIF]var=0xafc05679 eflags=[CFPFSFIF]var=0x0159e400eflags=[CFPFIF]var=0x00000567eflags=[CFIF]eax=0x13579bdf eflags=[CFIF]eax=0x13579bdf var=0xf0000056 eflags=[PFSFIF]var=0x001584d5eflags=[IF]var=0x800ac26a eflags=[CFPFSFIFOF]eax=0x13579bdfeflags=[CFPFSFIFOF]未定義標(biāo)志位

……

mov$0x7f,%aladd$1,%al

sal$5,%ax

…………eax=0x7f eflags=[IF]eax=0x80 eflags=[AFSFIFOF]eax=0x1000 eflags=[PFAFIFOF]……未定義標(biāo)志位的行為不確定,不能使用!第七講基礎(chǔ)指令(二)一、移位指令二、乘除指令三、雜項(xiàng)指令四、字節(jié)指令五、程序?qū)嵗?、乘除指令MULDIVIMULIDIVCBW/CWDECWD/CDQMULMUL:無(wú)符號(hào)數(shù)乘法指令格式(Intel):MULsrc語(yǔ)義:src與隱含操作數(shù)累加器(AL/AX/EAX)相乘,結(jié)果存放在(AX/DX:AX/EDX:EAX),其中高位部分存放在AH/DX/EDX標(biāo)志位如果高位部分為0,CF=OF=0,否則,CF=OF=1SF、ZF、PF、AF未定義MUL指令基本格式指令格式(Intelsyntax)說(shuō)明mulr/m88位無(wú)符號(hào)乘法,結(jié)果為16位(AX<-AL*r/m8)mulr/m1616位無(wú)符號(hào)乘法,結(jié)果為32位(DX:AX<-AX*r/m16)mulr/m3232位無(wú)符號(hào)乘法,結(jié)果為64位(EDX:EAX<-EAX*r/m32)注意乘法的結(jié)果存放在寄存器對(duì)中,AX相當(dāng)于8位寄存器對(duì)AH:ALDIVDIV:無(wú)符號(hào)數(shù)除法指令格式(Intel):DIVsrc語(yǔ)義:隱含dest(AX/DX:AX/EDX:EAX)除以src,結(jié)果存放在dest(AH:AL/DX:AX/EDX:EAX),其中商放在低位寄存器,余數(shù)放在高位寄存器除法錯(cuò)例外(#DE)除數(shù)為0或者商的大小超過(guò)低位寄存器的大小標(biāo)志位CF、OF、SF、ZF、PF、AF未定義DIV指令基本格式指令格式(Intelsyntax)說(shuō)明divr/m88位無(wú)符號(hào)除法,AX÷r/m8(AL<-商,AH<-余數(shù))divr/m1616位無(wú)符號(hào)除法,(DX:AX)÷r/m16(AX<-商,DX<-余數(shù))divr/m3232位無(wú)符號(hào)除法,(EDX:EAX)÷r/m32(EAX<-商,EDX<-余數(shù))注意8位除法被除數(shù)是16位,16位除法被除數(shù)是32位,32位除法被除數(shù)是64位當(dāng)不能整除時(shí),商的截取趨向0IMULIMUL:有符號(hào)數(shù)乘法指令格式(Intel)imul

srcimul

dest,srcimul

dest,src1,src2語(yǔ)義單操作數(shù):

src與隱含操作數(shù)累加器(AL/AX/EAX)相乘,結(jié)果存放在(AX/DX:AX/EDX:EAX),其中高位部分存放在AH/DX/EDX雙操作數(shù):src與dest相乘,結(jié)果截?cái)嗪蟠娣興est三操作數(shù):src1與src2相乘,結(jié)果截?cái)嗪蟠娣興est標(biāo)志位SF=MSB(dest)ZF、PF、AF未定義對(duì)于單操作數(shù),如果高位寄存器的內(nèi)容不是低位寄存器結(jié)果的符號(hào)擴(kuò)展,則CF=OF=1,否則CF=OF=0;對(duì)于雙操作數(shù)/三操作數(shù),如果中間計(jì)算結(jié)果不是dest存放結(jié)果的符號(hào)擴(kuò)展,則CF=OF=1,否則CF=OF=0IMUL指令基本格式指令格式(Intelsyntax)說(shuō)明imulr/m88位有符號(hào)乘法,結(jié)果為16位(AX<-AL*r/m8)imulr/m1616位有符號(hào)乘法,結(jié)果為32位(DX:AX<-AX*r/m16)imulr/m3232位有符號(hào)乘法,結(jié)果為64位(EDX:EAX<-EAX*r/m32)imulr16,r/m16r16<-r16*r/m16(16位有符號(hào)乘法,結(jié)果為16位)imulr32,r/m32r32<-r32*r/m32(32位有符號(hào)乘法,結(jié)果為32位)imulr16,r/m16,imm8r16<-r/m16*sign-extendedimm8(16位有符號(hào)乘法,結(jié)果為16位)imulr32,r/m32,imm8r32<-r/m32*sign-extendedimm8(32位有符號(hào)乘法,結(jié)果為32位)imulr16,r/m16,imm16r16<-r/m16*imm16(16位有符號(hào)乘法,結(jié)果為16位)imulr32,r/m32,imm32r32<-r/m32*imm32(32位有符號(hào)乘法,結(jié)果為32位)注意:dest操作數(shù)是寄存器IDIVIDIV:有符號(hào)數(shù)除法指令格式(Intel):IDIVsrc語(yǔ)義:隱含dest(AX/DX:AX/EDX:EAX)除以src,結(jié)果存放在dest(AH:AL/DX:AX/EDX:EAX),其中商放在低位寄存器,余數(shù)放在高位寄存器除法錯(cuò)例外(#DE)除數(shù)為0或者商的大小超過(guò)低位寄存器可表示的有符號(hào)數(shù)的大小標(biāo)志位CF、OF、SF、ZF、PF、AF未定義IDIV指令基本格式指令格式(Intelsyntax)說(shuō)明idivr/m88位有符號(hào)除法,AX÷r/m8(AL<-商,AH<-余數(shù))idivr/m1616位有符號(hào)除法,(DX:AX)÷r/m16(AX<-商,DX<-余數(shù))idivr/m3232位有符號(hào)除法,(EDX:EAX)÷r/m32(EAX<-商,EDX<-余數(shù))注意8位除法被除數(shù)是16位,16位除法被除數(shù)是32位,32位除法被除數(shù)是64位當(dāng)不能整除時(shí),商的截取趨向0如-5÷3,商=-1,余數(shù)=-2CBWCBW:字節(jié)擴(kuò)展為字指令格式(Intel):CBW語(yǔ)義:將隱含源操作數(shù)AL的字節(jié)數(shù)據(jù)符號(hào)擴(kuò)展為隱含目的操作數(shù)AX的字?jǐn)?shù)據(jù)AX<-signed-extend(AL)指令格式(AT&T):CBTWas匯編器也能正確識(shí)別CBWCWDECWDE:字?jǐn)U展為雙字指令格式(Intel):CWDE語(yǔ)義:將隱含源操作數(shù)AX的字?jǐn)?shù)據(jù)符號(hào)擴(kuò)展為隱含目的操作數(shù)EAX的雙字?jǐn)?shù)據(jù)EAX<-signed-extend(AX)指令格式(AT&T):CWTLas匯編器也能正確識(shí)別CWDECWDCWD:字?jǐn)U展為雙字指令格式(Intel):CWD語(yǔ)義:將隱含源操作數(shù)AX的字?jǐn)?shù)據(jù)符號(hào)擴(kuò)展為隱含目的操作數(shù)DX:AX的雙字?jǐn)?shù)據(jù)DX:AX<-signed-extend(AX)指令格式(AT&T):CWTDas匯編器也能正確識(shí)別CWDCDQCDQ:雙字?jǐn)U展為四字指令格式(Intel):CDQ語(yǔ)義:將隱含源操作數(shù)EAX的雙字?jǐn)?shù)據(jù)符號(hào)擴(kuò)展為隱含目的操作數(shù)EDX:EAX的四字?jǐn)?shù)據(jù)EDX:EAX<-signed-extend(EAX)指令格式(AT&T):CLTDas匯編器也能正確識(shí)別CDQmul/div/imul指令示例(AT&T)#mul_div.S.section.datamultiplier:.int16.section.text.globl_start_start:

mov$0xfc,%al

mov$3,%bl

mul%bl

mov$11,%bldiv%bl

mov$0xfffc,%ax

mov$3,%bx

imul%bx

mov$0x12345678,%eax

imulmultiplier,%eax……eax=0xfcedx=0x0eflags=[IF]mul/div/imul指令示例(AT&T)#mul_div.S.section.datamultiplier:.int16.section.text.globl_start_start:

mov$0xfc,%al

mov$3,%bl

mul%bl

mov$11,%bldiv%bl

mov$0xfffc,%ax

mov$3,%bx

imul%bx

mov$0x12345678,%eax

imulmultiplier,%eax……eax=0xfcedx=0x0eflags=[IF]eax=0x2f4edx=0x0eflags=[CFIFOF]mul/div/imul指令示例(AT&T)#mul_div.S.section.datamultiplier:.int16.section.text.globl_start_start:

mov$0xfc,%al

mov$3,%bl

mul%bl

mov$11,%bl

div%bl

mov$0xfffc,%ax

mov$3,%bx

imul%bx

mov$0x12345678,%eax

imulmultiplier,%eax……eax=0x2f4edx=0x0eflags=[CFIFOF]eax=0x844edx=0x0eflags=[CFIFOF]mul/div/imul指令示例(AT&T)#mul_div.S.section.datamultiplier:.int16.section.text.globl_start_start:

mov$0xfc,%al

mov$3,%bl

mul%bl

mov$11,%bldiv%bl

mov$0xfffc,%ax

mov$3,%bx

imul%bx

mov$0x12345678,%eax

imulmultiplier,%eax……eax=0x844edx=0x0eflags=[CFIFOF]eax=0xfffcedx=0x0eflags=[CFIFOF]mul/div/imul指令示例(AT&T)#mul_div.S.section.datamultiplier:.int16.section.text.globl_start_start:

mov$0xfc,%al

mov$3,%bl

mul%bl

mov$11,%bldiv%bl

mov$0xfffc,%ax

mov$3,%bx

imul%bx

mov$0x12345678,%eax

imulmultiplier,%eax……eax=0xfffcedx=0x0eflags=[CFIFOF]eax=0xfff4edx=0xffffeflags=[IF]mul/div/imul指令示例(AT&T)#mul_div.S.section.datamultiplier:.int16.section.text.globl_start_start:

mov$0xfc,%al

mov$3,%bl

mul%bl

mov$11,%bldiv%bl

mov$0xfffc,%ax

mov$3,%bx

imul%bx

mov$0x12345678,%eax

imulmultiplier,%eax……eax=0xfff4edx=0xffffeflags=[IF]eax=0x12345678edx=0xffffeflags=[IF]mul/div/imul指令示例(AT&T)#mul_div.S.section.datamultiplier:.int16.section.text.globl_start_start:

mov$0xfc,%al

mov$3,%bl

mul%bl

mov$11,%bldiv%bl

mov$0xfffc,%ax

mov$3,%bx

imul%bx

mov$0x12345678,%eax

imulmultiplier,%eax……eax=0x12345678edx=0xffffeflags=[IF]eax=0x23456780edx=0xffffeflags=[CFIFOF]idiv/cbw指令示例(AT&T).section.datadivisor:.int-7.section.text.globl_start_start:

mov$0xfc,%al

mov$3,%bl

cbw

idiv%bl

mov$0x1234,%ax

mov$0x12,%cx

cwd

idiv%cx

mov$0x1234,%eax

mov$-0x12,%ecx

cdq

idiv%ecx

mov$-32,%eax

cltd

idivldivisoreax=0xfc edx=0x0idiv/cbw指令示例(AT&T).section.datadivisor:.int-7.section.text.globl_start_start:

mov$0xfc,%al

mov$3,%bl

cbw

idiv%bl

mov$0x1234,%ax

mov$0x12,%cx

cwd

idiv%cx

mov$0x1234,%eax

mov$-0x12,%ecx

cdq

idiv%ecx

mov$-32,%eax

cltd

idivldivisoreax=0xfc edx=0x0eax=0xfffc edx=0x0idiv/cbw指令示例(AT&T).section.datadivisor:.int-7.section.text.globl_start_start:

mov$0xfc,%al

mov$3,%bl

cbw

idiv%bl

mov$0x1234,%ax

mov$0x12,%cx

cwd

idiv%cx

mov$0x1234,%eax

mov$-0x12,%ecx

cdq

idiv%ecx

mov$-32,%eax

cltd

idivldivisoreax=0xfc edx=0x0eax=0xfffc edx=0x0eax=0xffff edx=0x0idiv/cbw指令示例(AT&T).section.datadivisor:.int-7.section.text.globl_start_start:

mov$0xfc,%al

mov$3,%bl

cbw

idiv%bl

mov$0x1234,%ax

mov$0x12,%cx

cwd

idiv%cx

mov$0x1234,%eax

mov$-0x12,%ecx

cdq

idiv%ecx

mov$-32,%eax

cltd

idivldivisoreax=0xfc edx=0x0eax=0xfffc edx=0x0eax=0xffff edx=0x0eax=0x1234 edx=0x0idiv/cbw指令示例(AT&T).section.datadivisor:.int-7.section.text.globl_start_start:

mov$0xfc,%al

mov$3,%bl

cbw

idiv%bl

mov$0x1234,%ax

mov$0x12,%cx

cwd

idiv%cx

mov$0x1234,%eax

mov$-0x12,%ecx

cdq

idiv%ecx

mov$-32,%eax

cltd

idivldivisoreax=0xfc edx=0x0eax=0xfffc edx=0x0eax=0xffff edx=0x0eax=0x1234 edx=0x0eax=0x102 edx=0x10idiv/cbw指令示例(AT&T).section.datadivisor:.int-7.section.text.globl_start_start:

mov$0xfc,%al

mov$3,%bl

cbw

idiv%bl

mov$0x1234,%ax

mov$0x12,%cx

cwd

idiv%cx

mov$0x1234,%eax

mov$-0x12,%ecx

cdq

idiv%ecx

mov$-32,%eax

cltd

idivldivisoreax=0xfc edx=0x0eax=0xfffc edx=0x0eax=0xffff edx=0x0eax=0x1234 edx=0x0eax=0x102 edx=0x10eax=0x1234 edx=0x0idiv/cbw指令示例(AT&T).section.datadivisor:.int-7.section.text.globl_start_start:

mov$0xfc,%al

mov$3,%bl

cbw

idiv%bl

mov$0x1234,%ax

mov$0x12,%cx

cwd

idiv%cx

mov$0x1234,%eax

mov$-0x12,%ecx

cdq

idiv%ecx

mov$-32,%eax

cltd

idivldivisoreax=0xfc edx=0x0eax=0xfffc edx=0x0eax=0xffff edx=0x0eax=0x1234 edx=0x0eax=0x102 edx=0x10eax=0x1234 edx=0x0eax=0xfffffefe edx=0x10idiv/cbw指令示例(AT&T).section.datadivisor:.int-7.section.text.globl_start_start:

mov$0xfc,%al

mov$3,%bl

cbw

idiv%bl

mov$0x1234,%ax

mov$0x12,%cx

cwd

idiv%cx

mov$0x1234,%eax

mov$-0x12,%ecx

cdq

idiv%ecx

mov$-32,%eax

cltd

idivldivisoreax=0xfc edx=0x0eax=0xfffc edx=0x0eax=0xffff edx=0x0eax=0x1234 edx=0x0eax=0x102 edx=0x10eax=0x1234 edx=0x0eax=0xfffffefe edx=0x10eax=0xffffffe0 edx=0x10idiv/cbw指令示例(AT&T).section.datadivisor:.int-7.section.text.globl_start_start:

mov$0xfc,%al

mov$3,%bl

cbw

idiv%bl

mov$0x1234,%ax

mov$0x12,%cx

cwd

idiv%cx

mov$0x1234,%eax

mov$-0x12,%ecx

cdq

idiv%ecx

mov$-32,%eax

cltd

idivldivisoreax=0xfc edx=0x0eax=0xfffc edx=0x0eax=0xffff edx=0x0eax=0x1234 edx=0x0eax=0x102 edx=0x10eax=0x1234 edx=0x0eax=0xfffffefe edx=0x10eax=0xffffffe0 edx=0x10eax=0xffffffe0 edx=0xffffffffidiv/cbw指令示例(AT&T).section.datadivisor:.int-7.section.text.globl_start_start:

mov$0xfc,%al

mov$3,%bl

cbw

idiv%bl

mov$0x1234,%ax

mov$0x12,%cx

cwd

idiv%cx

mov$0x1234,%eax

mov$-0x12,%ecx

cdq

idiv%ecx

mov$-32,%eax

cltd

idivldivisoreax=0xfc edx=0x0eax=0xfffc edx=0x0eax=0xffff edx=0x0eax=0x1234 edx=0x0eax=0x102 edx=0x10eax=0x1234 edx=0x0eax=0xfffffefe edx=0x10eax=0xffffffe0 edx=0x10eax=0xffffffe0 edx=0xffffffffeax=0x4 edx=0xfffffffc第七講基礎(chǔ)指令(二)一、移位指令二、乘除指令三、雜項(xiàng)指令四、字節(jié)指令五、程序?qū)嵗齃EA指令LEA:裝載有效地址指令格式(Intel):LEAdest,src語(yǔ)義:dest<-effectiveaddress(src),src是內(nèi)存操作數(shù),dest是寄存器操作數(shù)LEA指令常被用作計(jì)算指令LEA指令基本格式指令格式(Intelsyntax)說(shuō)明lear16,mr16<-effectiveaddress(m)Effectiveaddress可以是16位或者32位lear32,mr32<-effective

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論