匯編語言課件第6章帶符號數(shù)字符串和表_第1頁
匯編語言課件第6章帶符號數(shù)字符串和表_第2頁
匯編語言課件第6章帶符號數(shù)字符串和表_第3頁
匯編語言課件第6章帶符號數(shù)字符串和表_第4頁
匯編語言課件第6章帶符號數(shù)字符串和表_第5頁
已閱讀5頁,還剩55頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

2022年12月13日12022年12月13日1

2022年12月13日1第6章帶符號數(shù)、字符串和表*1DECHEXBIN

6600000110

匯編語言與接口技術(shù)2022年12月12日12022年12月12日12022年第6章帶符號數(shù)、字符串和表學(xué)習(xí)本章后:1、會進行帶符號數(shù)的運算程序設(shè)計

正數(shù)、負數(shù)、正負數(shù)2、會進行字符串的運算程序設(shè)計

數(shù)據(jù)串、字符串、字串、字節(jié)串3、會進行查表運算程序設(shè)計

例如:函數(shù)表Y=f(x),Y=x22022年12月13日2第6章帶符號數(shù)、字符串和表學(xué)習(xí)本章后:2022年12月第6章帶符號數(shù)、字符串和表本章的主要內(nèi)容:6.1帶符號數(shù)的運算

6.1.1帶符號數(shù)的概念 6.1.2帶符號數(shù)的補碼表示

6.1.3帶符號數(shù)的運算 6.1.4帶符號數(shù)的加減運算的溢出問題6.1.5帶符號數(shù)的乘除、移位、比較運算6.2字符串和表操作 6.2.1字符串操作 6.2.2XLAT指令和查表2022年12月13日3第6章帶符號數(shù)、字符串和表本章的主要內(nèi)容:2022年16.1帶符號數(shù)的算術(shù)運算6.1.1帶符號數(shù)的概念

日常生活中使用的數(shù)字有正、有負(例如溫度等),計算機就必須能夠處理這樣的數(shù)值。計算機處理數(shù)據(jù)主要包括:數(shù)據(jù)表示和數(shù)據(jù)運算。計算機只能存儲0,1兩種符號。

數(shù)據(jù)表示的目的是存儲和顯示數(shù)據(jù),存儲要解決將帶符號數(shù)中的“符號”數(shù)字化后才能存儲在計算機中。

數(shù)據(jù)運算是使用計算機語言提供的指令,取得運算的源操作數(shù),將運算結(jié)果存儲在計算機中,且須判斷計算機運算結(jié)果的正確性。2022年12月13日46.1帶符號數(shù)的算術(shù)運算6.1.1帶符號數(shù)的概念20226.1帶符號數(shù)的算術(shù)運算6.1.2帶符號數(shù)的補碼表示正數(shù)的補碼表示:

將數(shù)的真值形式中的正號,用代碼0來表示,數(shù)值部分用二進制數(shù)來表示。

負數(shù)的補碼表示:將數(shù)的真值形式中的負號,用代碼1來表示,將用二進制數(shù)表示的數(shù)值部分按位取反且在最低位加1形成。2022年12月13日56.1帶符號數(shù)的算術(shù)運算6.1.2帶符號數(shù)的補碼表示206.1帶符號數(shù)的算術(shù)運算字長:n位補碼表示一個數(shù)時,最高位為符號位。符號數(shù)字化:

0---正數(shù)

1---負數(shù)數(shù)的補碼表示:(1)符號位為0時,表示的數(shù)為正數(shù),其后面的n-1位為數(shù)值部分。(2)符號位為1時,表示的數(shù)為負數(shù),其后面的n-1位按位取反且最低位加1為數(shù)值部分。n位二進制補碼表示范圍:

-2n-1-

-

-

(2n-1-1)參看p154-p1556.1帶符號數(shù)的算術(shù)運算字長:n位6.1帶符號數(shù)的算術(shù)運算6.1.3帶符號數(shù)的運算

運算:算術(shù)運算、邏輯運算

算術(shù)運算:加、減、乘、除、比較

邏輯運算:移位運算

本節(jié)中約定參加運算的數(shù)字長:8位,16位;對應(yīng)數(shù)的表示范圍。若字長確定則數(shù)的表示范圍隨之確定;若運算結(jié)果超出數(shù)的表示范圍,則應(yīng)進行溢出處理。2022年12月13日76.1帶符號數(shù)的算術(shù)運算6.1.3帶符號數(shù)的運算20226.1帶符號數(shù)的算術(shù)運算6.1.3帶符號數(shù)的運算(續(xù))數(shù)的運算分類:

加法: 加法指令 ADD

減法: 減法指令 SUB

乘法: 乘法指令 IMUL

除法: 除法指令 IDIV

移位: 移位指令 SAR、SAL、SHL

比較: 比較指令 CMP簡單舉例說明運算結(jié)果可表示,結(jié)果溢出的情況(DEBUG下演示)6.1帶符號數(shù)的算術(shù)運算6.1.3帶符號數(shù)的運算(續(xù))6.1帶符號數(shù)的算術(shù)運算6.1.4帶符號數(shù)的加減運算的溢出問題嚴重問題:帶符號數(shù)的溢出問題。CPU報告溢出:產(chǎn)生溢出時,CPU將標(biāo)志位OF置為1。程序員處理:程序檢測,若OF=1則溢出,轉(zhuǎn)向溢出處理。例如:如下例子產(chǎn)生溢出的情況(DEBUG下演示,注意加減運算對符號位的影響,特別是對OF標(biāo)志的影響)P155例子6.496+70p156例子6.5(-128)+(-2)P157例子6.86.1帶符號數(shù)的算術(shù)運算6.1.4帶符號數(shù)的加減運算的溢6.1帶符號數(shù)的算術(shù)運算6.1.4帶符號數(shù)的加減運算的溢出問題(續(xù))避免結(jié)果溢出的產(chǎn)生:擴大數(shù)據(jù)位數(shù)方法:CBW---把字節(jié)轉(zhuǎn)換為字,把AL的D7復(fù)制到AH的所有位。CWD---把字轉(zhuǎn)換為雙字,把AX的D15復(fù)制到DX的所有位。參看P158程序6.16.1帶符號數(shù)的算術(shù)運算6.1.4帶符號數(shù)的加減運算的溢6.1帶符號數(shù)的算術(shù)運算6.1.5帶符號數(shù)的乘除、移位、比較運算

(1)乘法

指令格式:IMUL寄存器/內(nèi)存 隱含操作數(shù)1:字節(jié)---AL,字---AX

(2)除法

指令格式:

IDIV 寄存器/內(nèi)存

隱含操作數(shù)1:字節(jié)---AX,字---DX:AX2022年12月13日116.1帶符號數(shù)的算術(shù)運算6.1.5帶符號數(shù)的乘除、移位、6.1帶符號數(shù)的算術(shù)運算(3)算術(shù)右移

指令格式:SAR目的,移位的次數(shù)

算術(shù)移位方法:目的操作數(shù)的各位右移1位,最低位進入進位位,空出的位用符號位填充。

(適用于帶符號數(shù),其余同第三章介紹的移位指令)

簡單舉例6.1帶符號數(shù)的算術(shù)運算(3)算術(shù)右移6.1帶符號數(shù)的算術(shù)運算(4)帶符號數(shù)的比較

指令格式:

CMP目的操作數(shù),源操作數(shù)帶符號數(shù)比較后檢查標(biāo)志:OF、ZF、SF

用來檢查上述條件的助記符如下:

JE JGJGEJLJLE參看P161例子6.122022年12月13日136.1帶符號數(shù)的算術(shù)運算(4)帶符號數(shù)的比較2022年122022年12月13日14第6章帶符號數(shù)、字符串和表6.1帶符號數(shù)的運算

6.1.1帶符號數(shù)的概念 6.1.2帶符號數(shù)的補碼表示

6.1.3帶符號數(shù)的運算 6.1.4帶符號數(shù)的加減運算的溢出問題6.1.5帶符號數(shù)的乘除、移位、比較運算6.2字符串和表操作 6.2.1字符串操作 6.2.2XLAT指令和查表2022年12月13日142022年12月12日14第6章帶符號數(shù)、字符串和表66.2字符串和表操作6.2.1字符串操作串處理指令處理存放在存儲器里的數(shù)據(jù)串,串指令可以處理字節(jié)或字,386及后繼機型還可以處理雙字。

串處理指令包括:

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:指字符串指令自動使指針SI、DI遞增或者遞減 DF=0自動增量,DF=1自動減量 指令CLD;DF=0 指令STD;DF=16.2字符串和表操作6.2.1字符串操作6.2字符串和表操作6.2.1字符串操作串指令只能處理一個字符/字、雙字。而串指令加上重復(fù)前綴即可方便的處理一個字符串。

串處理指令使用的重復(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ù)①-③其中計數(shù)長度為16位時,用CX作為countreg,計數(shù)長度為32位時,用ECX作為countreg。2022年12月13日186.2字符串和表操作1)與REP相配合工作2022年16.2字符串和表操作(2) MOVS串傳送指令

MOVS DST,SRC MOVSB(字節(jié)) MOVSW(字)

MOVSD(雙字)(386及后繼機型可用)

功能:把源變址指向的寄存器數(shù)據(jù)段中的內(nèi)容傳送到目的變址寄存器指向的附加段中去。

執(zhí)行該指令前的準(zhǔn)備工作:①數(shù)據(jù)段中源串首地址②附加段中目的串首地址③數(shù)據(jù)串長度④方向標(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ū)時很有用。參看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ū)中的一串字符逐次取出來測試。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時則退出,否則往下繼續(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時則退出,否則往下繼續(xù)執(zhí)行。②(countreg)=(countreg)-1③執(zhí)行其后的串指令④重復(fù)①-③6.2字符串和表操作(2)REPNE/REPNZ執(zhí)行的操6.2字符串和表操作(3)CMPS指令

CMPSDST,SRC CMPSB(字節(jié)) CMPSW(字)

CMPSD(雙字)(386及后繼機型可用)

功能:把源變址指向的寄存器數(shù)據(jù)段中的內(nèi)容與目的變址寄存器指向的附加段的內(nèi)容相減,但不存結(jié)果,只根據(jù)條件置條件碼。

用來比較兩個數(shù)據(jù)串。6.2字符串和表操作(3)CMPS指令6.2字符串和表操作(4)SCAS指令

SCASDST SCASB(字節(jié)) SCASW(字)

SCASD(雙字)(386及后繼機型可用)

功能:把累加器中的內(nèi)容與目的變址寄存器指向的附加段的內(nèi)容進行比較,并不存結(jié)果,只根據(jù)條件置條件碼。 從一個串中查找一個指定的字符。參看x86-P165-el.asm6.2字符串和表操作(4)SCAS指令6.2字符串和表操作6.2.2查表和XLAT指令1.查表在計算機中往往需要用表保存一些重要信息。例如:平方表、函數(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.平方表查表實戰(zhàn)舉例(1)數(shù)據(jù)段定義平方表(2)編程序查表提示查表的主要指令段:

MOVBX,OFFSETTABMOVAL,XXLAT6.2字符串和表操作3.平方表查表實戰(zhàn)舉例本章實戰(zhàn)練習(xí)

假設(shè)數(shù)據(jù)段中NUM開始的200字節(jié)單元中的帶符號數(shù),其他條件自設(shè)。完成如下工作:1.分別統(tǒng)計這串?dāng)?shù)中的正數(shù)個數(shù)和負數(shù)個數(shù)2.將原數(shù)據(jù)串中的前100個數(shù)據(jù)傳送到附加段ENUM開始的單元中3.求出ENUM單元的100個數(shù)中的最大數(shù)

2022年12月13日29本章實戰(zhàn)練習(xí)假設(shè)數(shù)據(jù)段中NUM開始的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í)題自己獨立完成2.對照章后復(fù)習(xí)答案作業(yè)題

編程題目

P1698、11、12要求:須上機調(diào)試,作業(yè)本上給出運行結(jié)果。

*302022年12月12日302022年12月12日3020222022年12月13日312022年12月13日31

2022年12月13日31第6章帶符號數(shù)、字符串和表*31DECHEXBIN

6600000110

匯編語言與接口技術(shù)2022年12月12日12022年12月12日12022年第6章帶符號數(shù)、字符串和表學(xué)習(xí)本章后:1、會進行帶符號數(shù)的運算程序設(shè)計

正數(shù)、負數(shù)、正負數(shù)2、會進行字符串的運算程序設(shè)計

數(shù)據(jù)串、字符串、字串、字節(jié)串3、會進行查表運算程序設(shè)計

例如:函數(shù)表Y=f(x),Y=x22022年12月13日32第6章帶符號數(shù)、字符串和表學(xué)習(xí)本章后:2022年12月第6章帶符號數(shù)、字符串和表本章的主要內(nèi)容:6.1帶符號數(shù)的運算

6.1.1帶符號數(shù)的概念 6.1.2帶符號數(shù)的補碼表示

6.1.3帶符號數(shù)的運算 6.1.4帶符號數(shù)的加減運算的溢出問題6.1.5帶符號數(shù)的乘除、移位、比較運算6.2字符串和表操作 6.2.1字符串操作 6.2.2XLAT指令和查表2022年12月13日33第6章帶符號數(shù)、字符串和表本章的主要內(nèi)容:2022年16.1帶符號數(shù)的算術(shù)運算6.1.1帶符號數(shù)的概念

日常生活中使用的數(shù)字有正、有負(例如溫度等),計算機就必須能夠處理這樣的數(shù)值。計算機處理數(shù)據(jù)主要包括:數(shù)據(jù)表示和數(shù)據(jù)運算。計算機只能存儲0,1兩種符號。

數(shù)據(jù)表示的目的是存儲和顯示數(shù)據(jù),存儲要解決將帶符號數(shù)中的“符號”數(shù)字化后才能存儲在計算機中。

數(shù)據(jù)運算是使用計算機語言提供的指令,取得運算的源操作數(shù),將運算結(jié)果存儲在計算機中,且須判斷計算機運算結(jié)果的正確性。2022年12月13日346.1帶符號數(shù)的算術(shù)運算6.1.1帶符號數(shù)的概念20226.1帶符號數(shù)的算術(shù)運算6.1.2帶符號數(shù)的補碼表示正數(shù)的補碼表示:

將數(shù)的真值形式中的正號,用代碼0來表示,數(shù)值部分用二進制數(shù)來表示。

負數(shù)的補碼表示:將數(shù)的真值形式中的負號,用代碼1來表示,將用二進制數(shù)表示的數(shù)值部分按位取反且在最低位加1形成。2022年12月13日356.1帶符號數(shù)的算術(shù)運算6.1.2帶符號數(shù)的補碼表示206.1帶符號數(shù)的算術(shù)運算字長:n位補碼表示一個數(shù)時,最高位為符號位。符號數(shù)字化:

0---正數(shù)

1---負數(shù)數(shù)的補碼表示:(1)符號位為0時,表示的數(shù)為正數(shù),其后面的n-1位為數(shù)值部分。(2)符號位為1時,表示的數(shù)為負數(shù),其后面的n-1位按位取反且最低位加1為數(shù)值部分。n位二進制補碼表示范圍:

-2n-1-

-

-

(2n-1-1)參看p154-p1556.1帶符號數(shù)的算術(shù)運算字長:n位6.1帶符號數(shù)的算術(shù)運算6.1.3帶符號數(shù)的運算

運算:算術(shù)運算、邏輯運算

算術(shù)運算:加、減、乘、除、比較

邏輯運算:移位運算

本節(jié)中約定參加運算的數(shù)字長:8位,16位;對應(yīng)數(shù)的表示范圍。若字長確定則數(shù)的表示范圍隨之確定;若運算結(jié)果超出數(shù)的表示范圍,則應(yīng)進行溢出處理。2022年12月13日376.1帶符號數(shù)的算術(shù)運算6.1.3帶符號數(shù)的運算20226.1帶符號數(shù)的算術(shù)運算6.1.3帶符號數(shù)的運算(續(xù))數(shù)的運算分類:

加法: 加法指令 ADD

減法: 減法指令 SUB

乘法: 乘法指令 IMUL

除法: 除法指令 IDIV

移位: 移位指令 SAR、SAL、SHL

比較: 比較指令 CMP簡單舉例說明運算結(jié)果可表示,結(jié)果溢出的情況(DEBUG下演示)6.1帶符號數(shù)的算術(shù)運算6.1.3帶符號數(shù)的運算(續(xù))6.1帶符號數(shù)的算術(shù)運算6.1.4帶符號數(shù)的加減運算的溢出問題嚴重問題:帶符號數(shù)的溢出問題。CPU報告溢出:產(chǎn)生溢出時,CPU將標(biāo)志位OF置為1。程序員處理:程序檢測,若OF=1則溢出,轉(zhuǎn)向溢出處理。例如:如下例子產(chǎn)生溢出的情況(DEBUG下演示,注意加減運算對符號位的影響,特別是對OF標(biāo)志的影響)P155例子6.496+70p156例子6.5(-128)+(-2)P157例子6.86.1帶符號數(shù)的算術(shù)運算6.1.4帶符號數(shù)的加減運算的溢6.1帶符號數(shù)的算術(shù)運算6.1.4帶符號數(shù)的加減運算的溢出問題(續(xù))避免結(jié)果溢出的產(chǎn)生:擴大數(shù)據(jù)位數(shù)方法:CBW---把字節(jié)轉(zhuǎn)換為字,把AL的D7復(fù)制到AH的所有位。CWD---把字轉(zhuǎn)換為雙字,把AX的D15復(fù)制到DX的所有位。參看P158程序6.16.1帶符號數(shù)的算術(shù)運算6.1.4帶符號數(shù)的加減運算的溢6.1帶符號數(shù)的算術(shù)運算6.1.5帶符號數(shù)的乘除、移位、比較運算

(1)乘法

指令格式:IMUL寄存器/內(nèi)存 隱含操作數(shù)1:字節(jié)---AL,字---AX

(2)除法

指令格式:

IDIV 寄存器/內(nèi)存

隱含操作數(shù)1:字節(jié)---AX,字---DX:AX2022年12月13日416.1帶符號數(shù)的算術(shù)運算6.1.5帶符號數(shù)的乘除、移位、6.1帶符號數(shù)的算術(shù)運算(3)算術(shù)右移

指令格式:SAR目的,移位的次數(shù)

算術(shù)移位方法:目的操作數(shù)的各位右移1位,最低位進入進位位,空出的位用符號位填充。

(適用于帶符號數(shù),其余同第三章介紹的移位指令)

簡單舉例6.1帶符號數(shù)的算術(shù)運算(3)算術(shù)右移6.1帶符號數(shù)的算術(shù)運算(4)帶符號數(shù)的比較

指令格式:

CMP目的操作數(shù),源操作數(shù)帶符號數(shù)比較后檢查標(biāo)志:OF、ZF、SF

用來檢查上述條件的助記符如下:

JE JGJGEJLJLE參看P161例子6.122022年12月13日436.1帶符號數(shù)的算術(shù)運算(4)帶符號數(shù)的比較2022年122022年12月13日44第6章帶符號數(shù)、字符串和表6.1帶符號數(shù)的運算

6.1.1帶符號數(shù)的概念 6.1.2帶符號數(shù)的補碼表示

6.1.3帶符號數(shù)的運算 6.1.4帶符號數(shù)的加減運算的溢出問題6.1.5帶符號數(shù)的乘除、移位、比較運算6.2字符串和表操作 6.2.1字符串操作 6.2.2XLAT指令和查表2022年12月13日442022年12月12日14第6章帶符號數(shù)、字符串和表66.2字符串和表操作6.2.1字符串操作串處理指令處理存放在存儲器里的數(shù)據(jù)串,串指令可以處理字節(jié)或字,386及后繼機型還可以處理雙字。

串處理指令包括:

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:指字符串指令自動使指針SI、DI遞增或者遞減 DF=0自動增量,DF=1自動減量 指令CLD;DF=0 指令STD;DF=16.2字符串和表操作6.2.1字符串操作6.2字符串和表操作6.2.1字符串操作串指令只能處理一個字符/字、雙字。而串指令加上重復(fù)前綴即可方便的處理一個字符串。

串處理指令使用的重復(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ù)①-③其中計數(shù)長度為16位時,用CX作為countreg,計數(shù)長度為32位時,用ECX作為countreg。2022年12月13日486.2字符串和表操作1)與REP相配合工作2022年16.2字符串和表操作(2) MOVS串傳送指令

MOVS DST,SRC MOVSB(字節(jié)) MOVSW(字)

MOVSD(雙字)(386及后繼機型可用)

功能:把源變址指向的寄存器數(shù)據(jù)段中的內(nèi)容傳送到目的變址寄存器指向的附加段中去。

執(zhí)行該指令前的準(zhǔn)備工作:①數(shù)據(jù)段中源串首地址②附加段中目的串首地址③數(shù)據(jù)串長度④方向標(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ū)時很有用。參看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ū)中的一串字符逐次取出來測試。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時則退出,否則往下繼續(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時則退出,否則往下繼續(xù)執(zhí)行。②(countreg)=(countreg)-1③執(zhí)行其后的串指令④重復(fù)①-③6.2字符串和表操作(2)REPNE/REPNZ執(zhí)行的操6.2字符串和表操作(3)CMPS指令

CMPSDST,SR

溫馨提示

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

評論

0/150

提交評論