版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
2022年12月13日12022年12月13日1
2022年12月13日1第6章帶符號(hào)數(shù)、字符串和表*1DECHEXBIN
6600000110
匯編語(yǔ)言與接口技術(shù)2022年12月12日12022年12月12日12022年第6章帶符號(hào)數(shù)、字符串和表學(xué)習(xí)本章后:1、會(huì)進(jìn)行帶符號(hào)數(shù)的運(yùn)算程序設(shè)計(jì)
正數(shù)、負(fù)數(shù)、正負(fù)數(shù)2、會(huì)進(jìn)行字符串的運(yùn)算程序設(shè)計(jì)
數(shù)據(jù)串、字符串、字串、字節(jié)串3、會(huì)進(jìn)行查表運(yùn)算程序設(shè)計(jì)
例如:函數(shù)表Y=f(x),Y=x22022年12月13日2第6章帶符號(hào)數(shù)、字符串和表學(xué)習(xí)本章后:2022年12月第6章帶符號(hào)數(shù)、字符串和表本章的主要內(nèi)容:6.1帶符號(hào)數(shù)的運(yùn)算
6.1.1帶符號(hào)數(shù)的概念 6.1.2帶符號(hào)數(shù)的補(bǔ)碼表示
6.1.3帶符號(hào)數(shù)的運(yùn)算 6.1.4帶符號(hào)數(shù)的加減運(yùn)算的溢出問(wèn)題6.1.5帶符號(hào)數(shù)的乘除、移位、比較運(yùn)算6.2字符串和表操作 6.2.1字符串操作 6.2.2XLAT指令和查表2022年12月13日3第6章帶符號(hào)數(shù)、字符串和表本章的主要內(nèi)容:2022年16.1帶符號(hào)數(shù)的算術(shù)運(yùn)算6.1.1帶符號(hào)數(shù)的概念
日常生活中使用的數(shù)字有正、有負(fù)(例如溫度等),計(jì)算機(jī)就必須能夠處理這樣的數(shù)值。計(jì)算機(jī)處理數(shù)據(jù)主要包括:數(shù)據(jù)表示和數(shù)據(jù)運(yùn)算。計(jì)算機(jī)只能存儲(chǔ)0,1兩種符號(hào)。
數(shù)據(jù)表示的目的是存儲(chǔ)和顯示數(shù)據(jù),存儲(chǔ)要解決將帶符號(hào)數(shù)中的“符號(hào)”數(shù)字化后才能存儲(chǔ)在計(jì)算機(jī)中。
數(shù)據(jù)運(yùn)算是使用計(jì)算機(jī)語(yǔ)言提供的指令,取得運(yùn)算的源操作數(shù),將運(yùn)算結(jié)果存儲(chǔ)在計(jì)算機(jī)中,且須判斷計(jì)算機(jī)運(yùn)算結(jié)果的正確性。2022年12月13日46.1帶符號(hào)數(shù)的算術(shù)運(yùn)算6.1.1帶符號(hào)數(shù)的概念20226.1帶符號(hào)數(shù)的算術(shù)運(yùn)算6.1.2帶符號(hào)數(shù)的補(bǔ)碼表示正數(shù)的補(bǔ)碼表示:
將數(shù)的真值形式中的正號(hào),用代碼0來(lái)表示,數(shù)值部分用二進(jìn)制數(shù)來(lái)表示。
負(fù)數(shù)的補(bǔ)碼表示:將數(shù)的真值形式中的負(fù)號(hào),用代碼1來(lái)表示,將用二進(jìn)制數(shù)表示的數(shù)值部分按位取反且在最低位加1形成。2022年12月13日56.1帶符號(hào)數(shù)的算術(shù)運(yùn)算6.1.2帶符號(hào)數(shù)的補(bǔ)碼表示206.1帶符號(hào)數(shù)的算術(shù)運(yùn)算字長(zhǎng):n位補(bǔ)碼表示一個(gè)數(shù)時(shí),最高位為符號(hào)位。符號(hào)數(shù)字化:
0---正數(shù)
1---負(fù)數(shù)數(shù)的補(bǔ)碼表示:(1)符號(hào)位為0時(shí),表示的數(shù)為正數(shù),其后面的n-1位為數(shù)值部分。(2)符號(hào)位為1時(shí),表示的數(shù)為負(fù)數(shù),其后面的n-1位按位取反且最低位加1為數(shù)值部分。n位二進(jìn)制補(bǔ)碼表示范圍:
-2n-1-
-
-
(2n-1-1)參看p154-p1556.1帶符號(hào)數(shù)的算術(shù)運(yùn)算字長(zhǎng):n位6.1帶符號(hào)數(shù)的算術(shù)運(yùn)算6.1.3帶符號(hào)數(shù)的運(yùn)算
運(yùn)算:算術(shù)運(yùn)算、邏輯運(yùn)算
算術(shù)運(yùn)算:加、減、乘、除、比較
邏輯運(yùn)算:移位運(yùn)算
本節(jié)中約定參加運(yùn)算的數(shù)字長(zhǎng):8位,16位;對(duì)應(yīng)數(shù)的表示范圍。若字長(zhǎng)確定則數(shù)的表示范圍隨之確定;若運(yùn)算結(jié)果超出數(shù)的表示范圍,則應(yīng)進(jìn)行溢出處理。2022年12月13日76.1帶符號(hào)數(shù)的算術(shù)運(yùn)算6.1.3帶符號(hào)數(shù)的運(yùn)算20226.1帶符號(hào)數(shù)的算術(shù)運(yùn)算6.1.3帶符號(hào)數(shù)的運(yùn)算(續(xù))數(shù)的運(yùn)算分類:
加法: 加法指令 ADD
減法: 減法指令 SUB
乘法: 乘法指令 IMUL
除法: 除法指令 IDIV
移位: 移位指令 SAR、SAL、SHL
比較: 比較指令 CMP簡(jiǎn)單舉例說(shuō)明運(yùn)算結(jié)果可表示,結(jié)果溢出的情況(DEBUG下演示)6.1帶符號(hào)數(shù)的算術(shù)運(yùn)算6.1.3帶符號(hào)數(shù)的運(yùn)算(續(xù))6.1帶符號(hào)數(shù)的算術(shù)運(yùn)算6.1.4帶符號(hào)數(shù)的加減運(yùn)算的溢出問(wèn)題嚴(yán)重問(wèn)題:帶符號(hào)數(shù)的溢出問(wèn)題。CPU報(bào)告溢出:產(chǎn)生溢出時(shí),CPU將標(biāo)志位OF置為1。程序員處理:程序檢測(cè),若OF=1則溢出,轉(zhuǎn)向溢出處理。例如:如下例子產(chǎn)生溢出的情況(DEBUG下演示,注意加減運(yùn)算對(duì)符號(hào)位的影響,特別是對(duì)OF標(biāo)志的影響)P155例子6.496+70p156例子6.5(-128)+(-2)P157例子6.86.1帶符號(hào)數(shù)的算術(shù)運(yùn)算6.1.4帶符號(hào)數(shù)的加減運(yùn)算的溢6.1帶符號(hào)數(shù)的算術(shù)運(yùn)算6.1.4帶符號(hào)數(shù)的加減運(yùn)算的溢出問(wèn)題(續(xù))避免結(jié)果溢出的產(chǎn)生:擴(kuò)大數(shù)據(jù)位數(shù)方法:CBW---把字節(jié)轉(zhuǎn)換為字,把AL的D7復(fù)制到AH的所有位。CWD---把字轉(zhuǎn)換為雙字,把AX的D15復(fù)制到DX的所有位。參看P158程序6.16.1帶符號(hào)數(shù)的算術(shù)運(yùn)算6.1.4帶符號(hào)數(shù)的加減運(yùn)算的溢6.1帶符號(hào)數(shù)的算術(shù)運(yùn)算6.1.5帶符號(hào)數(shù)的乘除、移位、比較運(yùn)算
(1)乘法
指令格式:IMUL寄存器/內(nèi)存 隱含操作數(shù)1:字節(jié)---AL,字---AX
(2)除法
指令格式:
IDIV 寄存器/內(nèi)存
隱含操作數(shù)1:字節(jié)---AX,字---DX:AX2022年12月13日116.1帶符號(hào)數(shù)的算術(shù)運(yùn)算6.1.5帶符號(hào)數(shù)的乘除、移位、6.1帶符號(hào)數(shù)的算術(shù)運(yùn)算(3)算術(shù)右移
指令格式:SAR目的,移位的次數(shù)
算術(shù)移位方法:目的操作數(shù)的各位右移1位,最低位進(jìn)入進(jìn)位位,空出的位用符號(hào)位填充。
(適用于帶符號(hào)數(shù),其余同第三章介紹的移位指令)
簡(jiǎn)單舉例6.1帶符號(hào)數(shù)的算術(shù)運(yùn)算(3)算術(shù)右移6.1帶符號(hào)數(shù)的算術(shù)運(yùn)算(4)帶符號(hào)數(shù)的比較
指令格式:
CMP目的操作數(shù),源操作數(shù)帶符號(hào)數(shù)比較后檢查標(biāo)志:OF、ZF、SF
用來(lái)檢查上述條件的助記符如下:
JE JGJGEJLJLE參看P161例子6.122022年12月13日136.1帶符號(hào)數(shù)的算術(shù)運(yùn)算(4)帶符號(hào)數(shù)的比較2022年122022年12月13日14第6章帶符號(hào)數(shù)、字符串和表6.1帶符號(hào)數(shù)的運(yùn)算
6.1.1帶符號(hào)數(shù)的概念 6.1.2帶符號(hào)數(shù)的補(bǔ)碼表示
6.1.3帶符號(hào)數(shù)的運(yùn)算 6.1.4帶符號(hào)數(shù)的加減運(yùn)算的溢出問(wèn)題6.1.5帶符號(hào)數(shù)的乘除、移位、比較運(yùn)算6.2字符串和表操作 6.2.1字符串操作 6.2.2XLAT指令和查表2022年12月13日142022年12月12日14第6章帶符號(hào)數(shù)、字符串和表66.2字符串和表操作6.2.1字符串操作串處理指令處理存放在存儲(chǔ)器里的數(shù)據(jù)串,串指令可以處理字節(jié)或字,386及后繼機(jī)型還可以處理雙字。
串處理指令包括:
MOVS串傳送 CMPS串比較
SCAS串掃描 LODS從串取
STOS存入串
INS串輸入(從I/O端口輸入)
OUTS串輸出(向I/O端口輸出)2022年12月13日156.2字符串和表操作6.2.1字符串操作2022年12月6.2字符串和表操作6.2.1字符串操作
使用的寄存器: DS、SI、ES、DI、CX DS:SI---指向源操作數(shù) ES:DI---指向目的操作數(shù) CX:重復(fù)執(zhí)行的次數(shù)
方向標(biāo)志的使用: DF:指字符串指令自動(dòng)使指針SI、DI遞增或者遞減 DF=0自動(dòng)增量,DF=1自動(dòng)減量 指令CLD;DF=0 指令STD;DF=16.2字符串和表操作6.2.1字符串操作6.2字符串和表操作6.2.1字符串操作串指令只能處理一個(gè)字符/字、雙字。而串指令加上重復(fù)前綴即可方便的處理一個(gè)字符串。
串處理指令使用的重復(fù)前綴如下:
REP 重復(fù) REPE/REPZ 相等/為零則重復(fù) REPNE/REPNZ 不相等/不為零則重復(fù)6.2字符串和表操作6.2.1字符串操作6.2字符串和表操作1)與REP相配合工作
MOVS,STOS,LODS,INS和OUTS指令(1)格式:REP串指令
執(zhí)行的操作①若(countreg)=0,則退出REP,否則繼續(xù)執(zhí)行。②(countreg)=(countreg)-1③執(zhí)行其后的串指令④重復(fù)①-③其中計(jì)數(shù)長(zhǎng)度為16位時(shí),用CX作為countreg,計(jì)數(shù)長(zhǎng)度為32位時(shí),用ECX作為countreg。2022年12月13日186.2字符串和表操作1)與REP相配合工作2022年16.2字符串和表操作(2) MOVS串傳送指令
MOVS DST,SRC MOVSB(字節(jié)) MOVSW(字)
MOVSD(雙字)(386及后繼機(jī)型可用)
功能:把源變址指向的寄存器數(shù)據(jù)段中的內(nèi)容傳送到目的變址寄存器指向的附加段中去。
執(zhí)行該指令前的準(zhǔn)備工作:①數(shù)據(jù)段中源串首地址②附加段中目的串首地址③數(shù)據(jù)串長(zhǎng)度④方向標(biāo)志:建立方向標(biāo)志的指令CLDSTD
參看x86-P164-el.asm2022年12月13日196.2字符串和表操作(2) MOVS串傳送指令2022年16.2字符串和表操作(3)STOS指令
STOSDSTSTOSB(字節(jié))STOSW(字)
STOSD(雙字)功能:把累加器中的內(nèi)容存入由目的變址寄存器指向的附加段的單元中。
STOS指令在初始化某一緩沖區(qū)時(shí)很有用。參看x86-P165-el.asm2022年12月13日206.2字符串和表操作(3)STOS指令2022年12月16.2字符串和表操作(4)LODS指令
LODSSRCLODSB(字節(jié))LODSW(字)
LODSD(雙字)功能:把由源變址寄存器指向的數(shù)據(jù)段的單元中內(nèi)容存入累加器中。
LODS指令用于將緩沖區(qū)中的一串字符逐次取出來(lái)測(cè)試。2022年12月13日216.2字符串和表操作(4)LODS指令2022年12月126.2字符串和表操作2)與REPE/REPZ和REPNE/REPNZ聯(lián)合工作的CMPS和SCAS指令
(1)REPE/REPZ重復(fù)串操作格式:REPE/REPZ串指令執(zhí)行的操作:①若(countreg)=0或ZF=0時(shí)則退出,否則往下繼續(xù)執(zhí)行。②(countreg)=(countreg)-1③執(zhí)行其后的串指令④重復(fù)①-③2022年12月13日226.2字符串和表操作2)與REPE/REPZ和REPNE6.2字符串和表操作(2)REPNE/REPNZ執(zhí)行的操作格式:REPNE/REPNZ串指令執(zhí)行的操作:①若(countreg)=0或ZF=1時(shí)則退出,否則往下繼續(xù)執(zhí)行。②(countreg)=(countreg)-1③執(zhí)行其后的串指令④重復(fù)①-③6.2字符串和表操作(2)REPNE/REPNZ執(zhí)行的操6.2字符串和表操作(3)CMPS指令
CMPSDST,SRC CMPSB(字節(jié)) CMPSW(字)
CMPSD(雙字)(386及后繼機(jī)型可用)
功能:把源變址指向的寄存器數(shù)據(jù)段中的內(nèi)容與目的變址寄存器指向的附加段的內(nèi)容相減,但不存結(jié)果,只根據(jù)條件置條件碼。
用來(lái)比較兩個(gè)數(shù)據(jù)串。6.2字符串和表操作(3)CMPS指令6.2字符串和表操作(4)SCAS指令
SCASDST SCASB(字節(jié)) SCASW(字)
SCASD(雙字)(386及后繼機(jī)型可用)
功能:把累加器中的內(nèi)容與目的變址寄存器指向的附加段的內(nèi)容進(jìn)行比較,并不存結(jié)果,只根據(jù)條件置條件碼。 從一個(gè)串中查找一個(gè)指定的字符。參看x86-P165-el.asm6.2字符串和表操作(4)SCAS指令6.2字符串和表操作6.2.2查表和XLAT指令1.查表在計(jì)算機(jī)中往往需要用表保存一些重要信息。例如:平方表、函數(shù)表等?如何用查表(1)已知表首址tab(2)已知待查數(shù)據(jù)x(表中的偏移地址)(3)
結(jié)果地址=tab+x(4)Y=(tab+x)0149…81tab+0表1.
Y=f(x)是一平方表tab+96.2字符串和表操作6.2.2查表和XLAT指令0149…6.2字符串和表操作2.XLAT(translate) 換碼
指令格式:XLATOPR指令的功能:
16位指令:(AL)←((BX)+(AL))
32位指令:(AL)←((EBX)+(AL))
換碼指令常用于把一種代碼轉(zhuǎn)換為另一種代碼。6.2字符串和表操作2.XLAT(transla6.2字符串和表操作3.平方表查表實(shí)戰(zhàn)舉例(1)數(shù)據(jù)段定義平方表(2)編程序查表提示查表的主要指令段:
MOVBX,OFFSETTABMOVAL,XXLAT6.2字符串和表操作3.平方表查表實(shí)戰(zhàn)舉例本章實(shí)戰(zhàn)練習(xí)
假設(shè)數(shù)據(jù)段中NUM開(kāi)始的200字節(jié)單元中的帶符號(hào)數(shù),其他條件自設(shè)。完成如下工作:1.分別統(tǒng)計(jì)這串?dāng)?shù)中的正數(shù)個(gè)數(shù)和負(fù)數(shù)個(gè)數(shù)2.將原數(shù)據(jù)串中的前100個(gè)數(shù)據(jù)傳送到附加段ENUM開(kāi)始的單元中3.求出ENUM單元的100個(gè)數(shù)中的最大數(shù)
2022年12月13日29本章實(shí)戰(zhàn)練習(xí)假設(shè)數(shù)據(jù)段中NUM開(kāi)始的200字節(jié)單元中的2022年12月13日302022年12月13日302022年12月13日302022年12月13日302022年12月13日30復(fù)習(xí)題及作業(yè)題復(fù)習(xí)題1.各節(jié)后復(fù)習(xí)題自己獨(dú)立完成2.對(duì)照章后復(fù)習(xí)答案作業(yè)題
編程題目
P1698、11、12要求:須上機(jī)調(diào)試,作業(yè)本上給出運(yùn)行結(jié)果。
*302022年12月12日302022年12月12日3020222022年12月13日312022年12月13日31
2022年12月13日31第6章帶符號(hào)數(shù)、字符串和表*31DECHEXBIN
6600000110
匯編語(yǔ)言與接口技術(shù)2022年12月12日12022年12月12日12022年第6章帶符號(hào)數(shù)、字符串和表學(xué)習(xí)本章后:1、會(huì)進(jìn)行帶符號(hào)數(shù)的運(yùn)算程序設(shè)計(jì)
正數(shù)、負(fù)數(shù)、正負(fù)數(shù)2、會(huì)進(jìn)行字符串的運(yùn)算程序設(shè)計(jì)
數(shù)據(jù)串、字符串、字串、字節(jié)串3、會(huì)進(jìn)行查表運(yùn)算程序設(shè)計(jì)
例如:函數(shù)表Y=f(x),Y=x22022年12月13日32第6章帶符號(hào)數(shù)、字符串和表學(xué)習(xí)本章后:2022年12月第6章帶符號(hào)數(shù)、字符串和表本章的主要內(nèi)容:6.1帶符號(hào)數(shù)的運(yùn)算
6.1.1帶符號(hào)數(shù)的概念 6.1.2帶符號(hào)數(shù)的補(bǔ)碼表示
6.1.3帶符號(hào)數(shù)的運(yùn)算 6.1.4帶符號(hào)數(shù)的加減運(yùn)算的溢出問(wèn)題6.1.5帶符號(hào)數(shù)的乘除、移位、比較運(yùn)算6.2字符串和表操作 6.2.1字符串操作 6.2.2XLAT指令和查表2022年12月13日33第6章帶符號(hào)數(shù)、字符串和表本章的主要內(nèi)容:2022年16.1帶符號(hào)數(shù)的算術(shù)運(yùn)算6.1.1帶符號(hào)數(shù)的概念
日常生活中使用的數(shù)字有正、有負(fù)(例如溫度等),計(jì)算機(jī)就必須能夠處理這樣的數(shù)值。計(jì)算機(jī)處理數(shù)據(jù)主要包括:數(shù)據(jù)表示和數(shù)據(jù)運(yùn)算。計(jì)算機(jī)只能存儲(chǔ)0,1兩種符號(hào)。
數(shù)據(jù)表示的目的是存儲(chǔ)和顯示數(shù)據(jù),存儲(chǔ)要解決將帶符號(hào)數(shù)中的“符號(hào)”數(shù)字化后才能存儲(chǔ)在計(jì)算機(jī)中。
數(shù)據(jù)運(yùn)算是使用計(jì)算機(jī)語(yǔ)言提供的指令,取得運(yùn)算的源操作數(shù),將運(yùn)算結(jié)果存儲(chǔ)在計(jì)算機(jī)中,且須判斷計(jì)算機(jī)運(yùn)算結(jié)果的正確性。2022年12月13日346.1帶符號(hào)數(shù)的算術(shù)運(yùn)算6.1.1帶符號(hào)數(shù)的概念20226.1帶符號(hào)數(shù)的算術(shù)運(yùn)算6.1.2帶符號(hào)數(shù)的補(bǔ)碼表示正數(shù)的補(bǔ)碼表示:
將數(shù)的真值形式中的正號(hào),用代碼0來(lái)表示,數(shù)值部分用二進(jìn)制數(shù)來(lái)表示。
負(fù)數(shù)的補(bǔ)碼表示:將數(shù)的真值形式中的負(fù)號(hào),用代碼1來(lái)表示,將用二進(jìn)制數(shù)表示的數(shù)值部分按位取反且在最低位加1形成。2022年12月13日356.1帶符號(hào)數(shù)的算術(shù)運(yùn)算6.1.2帶符號(hào)數(shù)的補(bǔ)碼表示206.1帶符號(hào)數(shù)的算術(shù)運(yùn)算字長(zhǎng):n位補(bǔ)碼表示一個(gè)數(shù)時(shí),最高位為符號(hào)位。符號(hào)數(shù)字化:
0---正數(shù)
1---負(fù)數(shù)數(shù)的補(bǔ)碼表示:(1)符號(hào)位為0時(shí),表示的數(shù)為正數(shù),其后面的n-1位為數(shù)值部分。(2)符號(hào)位為1時(shí),表示的數(shù)為負(fù)數(shù),其后面的n-1位按位取反且最低位加1為數(shù)值部分。n位二進(jìn)制補(bǔ)碼表示范圍:
-2n-1-
-
-
(2n-1-1)參看p154-p1556.1帶符號(hào)數(shù)的算術(shù)運(yùn)算字長(zhǎng):n位6.1帶符號(hào)數(shù)的算術(shù)運(yùn)算6.1.3帶符號(hào)數(shù)的運(yùn)算
運(yùn)算:算術(shù)運(yùn)算、邏輯運(yùn)算
算術(shù)運(yùn)算:加、減、乘、除、比較
邏輯運(yùn)算:移位運(yùn)算
本節(jié)中約定參加運(yùn)算的數(shù)字長(zhǎng):8位,16位;對(duì)應(yīng)數(shù)的表示范圍。若字長(zhǎng)確定則數(shù)的表示范圍隨之確定;若運(yùn)算結(jié)果超出數(shù)的表示范圍,則應(yīng)進(jìn)行溢出處理。2022年12月13日376.1帶符號(hào)數(shù)的算術(shù)運(yùn)算6.1.3帶符號(hào)數(shù)的運(yùn)算20226.1帶符號(hào)數(shù)的算術(shù)運(yùn)算6.1.3帶符號(hào)數(shù)的運(yùn)算(續(xù))數(shù)的運(yùn)算分類:
加法: 加法指令 ADD
減法: 減法指令 SUB
乘法: 乘法指令 IMUL
除法: 除法指令 IDIV
移位: 移位指令 SAR、SAL、SHL
比較: 比較指令 CMP簡(jiǎn)單舉例說(shuō)明運(yùn)算結(jié)果可表示,結(jié)果溢出的情況(DEBUG下演示)6.1帶符號(hào)數(shù)的算術(shù)運(yùn)算6.1.3帶符號(hào)數(shù)的運(yùn)算(續(xù))6.1帶符號(hào)數(shù)的算術(shù)運(yùn)算6.1.4帶符號(hào)數(shù)的加減運(yùn)算的溢出問(wèn)題嚴(yán)重問(wèn)題:帶符號(hào)數(shù)的溢出問(wèn)題。CPU報(bào)告溢出:產(chǎn)生溢出時(shí),CPU將標(biāo)志位OF置為1。程序員處理:程序檢測(cè),若OF=1則溢出,轉(zhuǎn)向溢出處理。例如:如下例子產(chǎn)生溢出的情況(DEBUG下演示,注意加減運(yùn)算對(duì)符號(hào)位的影響,特別是對(duì)OF標(biāo)志的影響)P155例子6.496+70p156例子6.5(-128)+(-2)P157例子6.86.1帶符號(hào)數(shù)的算術(shù)運(yùn)算6.1.4帶符號(hào)數(shù)的加減運(yùn)算的溢6.1帶符號(hào)數(shù)的算術(shù)運(yùn)算6.1.4帶符號(hào)數(shù)的加減運(yùn)算的溢出問(wèn)題(續(xù))避免結(jié)果溢出的產(chǎn)生:擴(kuò)大數(shù)據(jù)位數(shù)方法:CBW---把字節(jié)轉(zhuǎn)換為字,把AL的D7復(fù)制到AH的所有位。CWD---把字轉(zhuǎn)換為雙字,把AX的D15復(fù)制到DX的所有位。參看P158程序6.16.1帶符號(hào)數(shù)的算術(shù)運(yùn)算6.1.4帶符號(hào)數(shù)的加減運(yùn)算的溢6.1帶符號(hào)數(shù)的算術(shù)運(yùn)算6.1.5帶符號(hào)數(shù)的乘除、移位、比較運(yùn)算
(1)乘法
指令格式:IMUL寄存器/內(nèi)存 隱含操作數(shù)1:字節(jié)---AL,字---AX
(2)除法
指令格式:
IDIV 寄存器/內(nèi)存
隱含操作數(shù)1:字節(jié)---AX,字---DX:AX2022年12月13日416.1帶符號(hào)數(shù)的算術(shù)運(yùn)算6.1.5帶符號(hào)數(shù)的乘除、移位、6.1帶符號(hào)數(shù)的算術(shù)運(yùn)算(3)算術(shù)右移
指令格式:SAR目的,移位的次數(shù)
算術(shù)移位方法:目的操作數(shù)的各位右移1位,最低位進(jìn)入進(jìn)位位,空出的位用符號(hào)位填充。
(適用于帶符號(hào)數(shù),其余同第三章介紹的移位指令)
簡(jiǎn)單舉例6.1帶符號(hào)數(shù)的算術(shù)運(yùn)算(3)算術(shù)右移6.1帶符號(hào)數(shù)的算術(shù)運(yùn)算(4)帶符號(hào)數(shù)的比較
指令格式:
CMP目的操作數(shù),源操作數(shù)帶符號(hào)數(shù)比較后檢查標(biāo)志:OF、ZF、SF
用來(lái)檢查上述條件的助記符如下:
JE JGJGEJLJLE參看P161例子6.122022年12月13日436.1帶符號(hào)數(shù)的算術(shù)運(yùn)算(4)帶符號(hào)數(shù)的比較2022年122022年12月13日44第6章帶符號(hào)數(shù)、字符串和表6.1帶符號(hào)數(shù)的運(yùn)算
6.1.1帶符號(hào)數(shù)的概念 6.1.2帶符號(hào)數(shù)的補(bǔ)碼表示
6.1.3帶符號(hào)數(shù)的運(yùn)算 6.1.4帶符號(hào)數(shù)的加減運(yùn)算的溢出問(wèn)題6.1.5帶符號(hào)數(shù)的乘除、移位、比較運(yùn)算6.2字符串和表操作 6.2.1字符串操作 6.2.2XLAT指令和查表2022年12月13日442022年12月12日14第6章帶符號(hào)數(shù)、字符串和表66.2字符串和表操作6.2.1字符串操作串處理指令處理存放在存儲(chǔ)器里的數(shù)據(jù)串,串指令可以處理字節(jié)或字,386及后繼機(jī)型還可以處理雙字。
串處理指令包括:
MOVS串傳送 CMPS串比較
SCAS串掃描 LODS從串取
STOS存入串
INS串輸入(從I/O端口輸入)
OUTS串輸出(向I/O端口輸出)2022年12月13日456.2字符串和表操作6.2.1字符串操作2022年12月6.2字符串和表操作6.2.1字符串操作
使用的寄存器: DS、SI、ES、DI、CX DS:SI---指向源操作數(shù) ES:DI---指向目的操作數(shù) CX:重復(fù)執(zhí)行的次數(shù)
方向標(biāo)志的使用: DF:指字符串指令自動(dòng)使指針SI、DI遞增或者遞減 DF=0自動(dòng)增量,DF=1自動(dòng)減量 指令CLD;DF=0 指令STD;DF=16.2字符串和表操作6.2.1字符串操作6.2字符串和表操作6.2.1字符串操作串指令只能處理一個(gè)字符/字、雙字。而串指令加上重復(fù)前綴即可方便的處理一個(gè)字符串。
串處理指令使用的重復(fù)前綴如下:
REP 重復(fù) REPE/REPZ 相等/為零則重復(fù) REPNE/REPNZ 不相等/不為零則重復(fù)6.2字符串和表操作6.2.1字符串操作6.2字符串和表操作1)與REP相配合工作
MOVS,STOS,LODS,INS和OUTS指令(1)格式:REP串指令
執(zhí)行的操作①若(countreg)=0,則退出REP,否則繼續(xù)執(zhí)行。②(countreg)=(countreg)-1③執(zhí)行其后的串指令④重復(fù)①-③其中計(jì)數(shù)長(zhǎng)度為16位時(shí),用CX作為countreg,計(jì)數(shù)長(zhǎng)度為32位時(shí),用ECX作為countreg。2022年12月13日486.2字符串和表操作1)與REP相配合工作2022年16.2字符串和表操作(2) MOVS串傳送指令
MOVS DST,SRC MOVSB(字節(jié)) MOVSW(字)
MOVSD(雙字)(386及后繼機(jī)型可用)
功能:把源變址指向的寄存器數(shù)據(jù)段中的內(nèi)容傳送到目的變址寄存器指向的附加段中去。
執(zhí)行該指令前的準(zhǔn)備工作:①數(shù)據(jù)段中源串首地址②附加段中目的串首地址③數(shù)據(jù)串長(zhǎng)度④方向標(biāo)志:建立方向標(biāo)志的指令CLDSTD
參看x86-P164-el.asm2022年12月13日496.2字符串和表操作(2) MOVS串傳送指令2022年16.2字符串和表操作(3)STOS指令
STOSDSTSTOSB(字節(jié))STOSW(字)
STOSD(雙字)功能:把累加器中的內(nèi)容存入由目的變址寄存器指向的附加段的單元中。
STOS指令在初始化某一緩沖區(qū)時(shí)很有用。參看x86-P165-el.asm2022年12月13日506.2字符串和表操作(3)STOS指令2022年12月16.2字符串和表操作(4)LODS指令
LODSSRCLODSB(字節(jié))LODSW(字)
LODSD(雙字)功能:把由源變址寄存器指向的數(shù)據(jù)段的單元中內(nèi)容存入累加器中。
LODS指令用于將緩沖區(qū)中的一串字符逐次取出來(lái)測(cè)試。2022年12月13日516.2字符串和表操作(4)LODS指令2022年12月126.2字符串和表操作2)與REPE/REPZ和REPNE/REPNZ聯(lián)合工作的CMPS和SCAS指令
(1)REPE/REPZ重復(fù)串操作格式:REPE/REPZ串指令執(zhí)行的操作:①若(countreg)=0或ZF=0時(shí)則退出,否則往下繼續(xù)執(zhí)行。②(countreg)=(countreg)-1③執(zhí)行其后的串指令④重復(fù)①-③2022年12月13日526.2字符串和表操作2)與REPE/REPZ和REPNE6.2字符串和表操作(2)REPNE/REPNZ執(zhí)行的操作格式:REPNE/REPNZ串指令執(zhí)行的操作:①若(countreg)=0或ZF=1時(shí)則退出,否則往下繼續(xù)執(zhí)行。②(countreg)=(countreg)-1③執(zhí)行其后的串指令④重復(fù)①-③6.2字符串和表操作(2)REPNE/REPNZ執(zhí)行的操6.2字符串和表操作(3)CMPS指令
CMPSDST,SR
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年MyOracle客戶維護(hù)協(xié)議
- 2024年公司委托個(gè)人辦理業(yè)務(wù)協(xié)議
- 離婚后教育費(fèi)用分擔(dān)協(xié)議書(shū)
- 2024年個(gè)人之間分包條款協(xié)議
- 苗木采購(gòu)與銷售法律協(xié)議
- 3個(gè)課時(shí)課程設(shè)計(jì)
- 什么是高效實(shí)驗(yàn)課程設(shè)計(jì)
- 2024至2030年中國(guó)壓黃線監(jiān)測(cè)系統(tǒng)行業(yè)投資前景及策略咨詢研究報(bào)告
- 管道安裝工程課程設(shè)計(jì)
- c語(yǔ)言課程設(shè)計(jì)雪花飛舞
- 電信人工智能大學(xué)習(xí)抽測(cè)考試題庫(kù)(含答案)
- 2024年公務(wù)員政治理論知識(shí)培訓(xùn)考試題庫(kù)及答案(共四套)
- 【道法】走近老師 課件-2024-2025學(xué)年統(tǒng)編版道德與法治七年級(jí)上冊(cè)
- 2022-2023學(xué)年北京市海淀區(qū)中關(guān)村中學(xué)八年級(jí)(上)期中數(shù)學(xué)試卷【含解析】
- 小學(xué)五年級(jí)上學(xué)期信息科技《我們?nèi)ツ膬骸方虒W(xué)課件
- 2024智能變電站新一代集控站設(shè)備監(jiān)控系統(tǒng)技術(shù)規(guī)范部分
- 河北省邯鄲市思想政治高一上學(xué)期2024-2025學(xué)年測(cè)試試題及答案解析
- 2004年三中會(huì)議精神測(cè)試題及答案
- 2024年浙江省應(yīng)急管理行政執(zhí)法競(jìng)賽題庫(kù)-上(單選、多選題)
- 【2013浙G32】機(jī)械連接竹節(jié)樁圖集
- 安全生產(chǎn)法律法規(guī)清單2024.07
評(píng)論
0/150
提交評(píng)論