![2017年春季匯編語(yǔ)言第七講基礎(chǔ)指令(二)-v10_第1頁(yè)](http://file4.renrendoc.com/view/f4ecb2a5a3bb639b98c928a8995604e3/f4ecb2a5a3bb639b98c928a8995604e31.gif)
![2017年春季匯編語(yǔ)言第七講基礎(chǔ)指令(二)-v10_第2頁(yè)](http://file4.renrendoc.com/view/f4ecb2a5a3bb639b98c928a8995604e3/f4ecb2a5a3bb639b98c928a8995604e32.gif)
![2017年春季匯編語(yǔ)言第七講基礎(chǔ)指令(二)-v10_第3頁(yè)](http://file4.renrendoc.com/view/f4ecb2a5a3bb639b98c928a8995604e3/f4ecb2a5a3bb639b98c928a8995604e33.gif)
![2017年春季匯編語(yǔ)言第七講基礎(chǔ)指令(二)-v10_第4頁(yè)](http://file4.renrendoc.com/view/f4ecb2a5a3bb639b98c928a8995604e3/f4ecb2a5a3bb639b98c928a8995604e34.gif)
![2017年春季匯編語(yǔ)言第七講基礎(chǔ)指令(二)-v10_第5頁(yè)](http://file4.renrendoc.com/view/f4ecb2a5a3bb639b98c928a8995604e3/f4ecb2a5a3bb639b98c928a8995604e35.gif)
版權(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 部編版道德與法治九年級(jí)下冊(cè)第二單元第三課《與世界緊相連第2框與世界深度互動(dòng)》聽(tīng)課評(píng)課記錄
- 2022版新課標(biāo)七年級(jí)上冊(cè)道德與法治第五課交友的智慧2課時(shí)聽(tīng)課評(píng)課記錄
- 人教版數(shù)學(xué)九年級(jí)上冊(cè)《直接開(kāi)平方法解方程》聽(tīng)評(píng)課記錄3
- 人教版地理八年級(jí)下冊(cè)7.1《自然特征與農(nóng)業(yè)》聽(tīng)課評(píng)課記錄
- 環(huán)境評(píng)估服務(wù)合同(2篇)
- 湘教版數(shù)學(xué)八年級(jí)上冊(cè)2.2《命題的證明》聽(tīng)評(píng)課記錄2
- 北師大版道德與法治九年級(jí)上冊(cè)6.2《弘揚(yáng)法治精神》聽(tīng)課評(píng)課記錄
- 北京課改版歷史八年級(jí)上冊(cè)第10課《辛亥革命與中華民國(guó)建立》聽(tīng)課評(píng)課記錄
- 湘教版數(shù)學(xué)七年級(jí)上冊(cè)《2.5整式的加法和減法(1)》聽(tīng)評(píng)課記錄2
- 部編版八年級(jí)歷史上冊(cè)《第1課 鴉片戰(zhàn)爭(zhēng)》聽(tīng)課評(píng)課記錄
- 2024年臨床醫(yī)師定期考核試題中醫(yī)知識(shí)題庫(kù)及答案(共330題) (二)
- 2025-2030年中國(guó)反滲透膜行業(yè)市場(chǎng)發(fā)展趨勢(shì)展望與投資策略分析報(bào)告
- 湖北省十堰市城區(qū)2024-2025學(xué)年九年級(jí)上學(xué)期期末質(zhì)量檢測(cè)道德與法治試題 (含答案)
- 山東省濰坊市2024-2025學(xué)年高三上學(xué)期1月期末 英語(yǔ)試題
- 春節(jié)節(jié)后收心會(huì)
- 《榜樣9》觀后感心得體會(huì)四
- 七年級(jí)下冊(cè)英語(yǔ)單詞表(人教版)-418個(gè)
- 2025年山東省濟(jì)寧高新區(qū)管委會(huì)“優(yōu)才”招聘20人歷年高頻重點(diǎn)提升(共500題)附帶答案詳解
- 2025年中國(guó)社會(huì)科學(xué)評(píng)價(jià)研究院第一批專業(yè)技術(shù)人員招聘2人歷年高頻重點(diǎn)提升(共500題)附帶答案詳解
- 交警安全進(jìn)校園課件
- (2024年高考真題)2024年普通高等學(xué)校招生全國(guó)統(tǒng)一考試數(shù)學(xué)試卷-新課標(biāo)Ⅰ卷(含部分解析)
評(píng)論
0/150
提交評(píng)論