




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、第第3章章 80 x86的指令系統(tǒng)和尋址方式的指令系統(tǒng)和尋址方式 3.180 x86的尋址方式的尋址方式 3.3 80 x86的指令系統(tǒng)的指令系統(tǒng) 3.4 80 x86的機(jī)器語(yǔ)言指令概況的機(jī)器語(yǔ)言指令概況基本概念指令系統(tǒng)每一種計(jì)算機(jī)都有一組指令集供用戶使用,這組指令集稱(chēng)為該計(jì)算機(jī)的指令系統(tǒng)。指令集中的每條指令在匯編語(yǔ)言中都是用助記符來(lái)表示的。基本概念指令的構(gòu)成w 指令由操作碼和操作數(shù)兩部分組成w 操作碼說(shuō)明計(jì)算機(jī)要執(zhí)行哪種操作,如傳送、運(yùn)算、移位、跳轉(zhuǎn)等操作,它是指令中不可缺少的組成部分w 操作數(shù)是指令執(zhí)行的參與者,即各種操作的對(duì)象w 有些指令不需要操作數(shù),通常的指令都有一個(gè)或兩個(gè)操作數(shù),也有
2、個(gè)別指令有3個(gè)甚至4個(gè)操作數(shù)操作碼操作碼操作數(shù)操作數(shù)基本概念8086指令的基本格式w 操作碼 目的操作數(shù),源操作數(shù) ;注釋DESTSRCw 內(nèi)的內(nèi)容可缺省w 書(shū)寫(xiě)注意事項(xiàng): 操作碼與操作數(shù)至少有一個(gè)空格或制表符分隔 操作數(shù)之間必須用“,”相分隔, DEST在前, SRC在后w 每種指令的操作碼:n用一個(gè)唯一的助記符表示(指令功能的英文縮寫(xiě))n對(duì)應(yīng)著機(jī)器指令的一個(gè)二進(jìn)制編碼操作數(shù)類(lèi)型操作數(shù)類(lèi)型w按照指令處理的操作數(shù)存放位置分:按照指令處理的操作數(shù)存放位置分:n存儲(chǔ)器類(lèi)型:存儲(chǔ)器類(lèi)型:操作數(shù)存放在主存中,操作數(shù)存放在主存中,A為其地址信息為其地址信息n寄存器類(lèi)型:寄存器類(lèi)型:操作數(shù)存放在操作數(shù)存放
3、在CPU的通用寄存器中,的通用寄存器中,A為寄為寄存器號(hào)存器號(hào)n立即數(shù)類(lèi)型:立即數(shù)類(lèi)型:操作數(shù)存放在指令(地址字段)中操作數(shù)存放在指令(地址字段)中指令中的指令中的操作數(shù)操作數(shù): 可以是一個(gè)具體的數(shù)值可以是一個(gè)具體的數(shù)值 可以是存放數(shù)據(jù)的寄存器可以是存放數(shù)據(jù)的寄存器 或指明數(shù)據(jù)在主存位置的存儲(chǔ)器地址或指明數(shù)據(jù)在主存位置的存儲(chǔ)器地址基本概念尋址方式w 在指令中為了取得操作數(shù)地址所使用的方式w 尋找操作數(shù)的過(guò)程就是操作數(shù)的尋址w 不同的指令系統(tǒng)都規(guī)定一些尋址方式供編程時(shí)選用w 指令的尋址方式主要由操作數(shù)的形式表示出來(lái)w 操作數(shù)采取哪一種尋址方式,會(huì)影響機(jī)器運(yùn)行的速度和效率 3.1 80 x86的尋
4、址方式的尋址方式一、與數(shù)據(jù)有關(guān)的尋址方式一、與數(shù)據(jù)有關(guān)的尋址方式二、與轉(zhuǎn)移地址有關(guān)的尋址方式二、與轉(zhuǎn)移地址有關(guān)的尋址方式1.立即(數(shù))尋址立即(數(shù))尋址2.寄存器尋址寄存器尋址3.直接尋址直接尋址4.寄存器間接尋址寄存器間接尋址5.寄存器相對(duì)尋址寄存器相對(duì)尋址6.基址變址尋址基址變址尋址7.相對(duì)基址變址尋址相對(duì)基址變址尋址8.串操作尋址串操作尋址9.端口尋址端口尋址操作數(shù)操作數(shù)可以是一個(gè)具體的數(shù)值可以是一個(gè)具體的數(shù)值可以是存放數(shù)據(jù)的寄存器可以是存放數(shù)據(jù)的寄存器指明數(shù)據(jù)在主存位置的存儲(chǔ)器地址指明數(shù)據(jù)在主存位置的存儲(chǔ)器地址位移量:指令中給出位移量:指令中給出16位數(shù)(常數(shù)、符號(hào))位數(shù)(常數(shù)、符號(hào))
5、 EA 基地址:由基址寄存器基地址:由基址寄存器BX或基址指針或基址指針BP給出給出 變址:由變址寄存器(變址:由變址寄存器(SI或或DI)給出給出1.立即(數(shù))尋址立即(數(shù))尋址w 指令中的操作數(shù)直接存放在機(jī)器代碼中,緊跟在操作碼之后(操作數(shù)作為指令的一部分存放在操作碼之后的主存單元中)w 這種操作數(shù)被稱(chēng)為立即數(shù)immn它可以是8位數(shù)值i8(00HFFH)n也可以是16位數(shù)值i16(0000HFFFFH)w 立即數(shù)尋址方式常用來(lái)給R/M賦值w 立即數(shù)只能用于源操作數(shù)立即數(shù)尋址指令MOV AL,05H ;AL05HMOV AX,0102H;AX0102H立即數(shù)尋址的功能立即數(shù)尋址的執(zhí)行例例、
6、MOV AX, 3064HMOV AX, 3064H指令執(zhí)行后,(指令執(zhí)行后,(AXAX)= 3064H= 3064H 下圖表示了它的執(zhí)行情況,圖中指令存放在代碼段下圖表示了它的執(zhí)行情況,圖中指令存放在代碼段中,中,OPOP表示該指令的操作碼部分,表示該指令的操作碼部分,30643064H H為立即數(shù),為立即數(shù),它是指令的一個(gè)組成部分。它是指令的一個(gè)組成部分。 2. 寄存器尋址:寄存器尋址:它使用它使用CPU的內(nèi)部寄存器來(lái)存放要處理來(lái)存放要處理的操作數(shù),寄存器號(hào)由指令指定。的操作數(shù),寄存器號(hào)由指令指定。 w 可以是:n8位寄存器:AH、AL、BH、BL、CH、CL、DH、DLn16位寄存器:A
7、X、BX、CX、DX、SI、DI、BP、SPn4個(gè)段寄存器seg:CS、DS、SS、ESMOV AX,1234H ;AX1234HMOV BX,AX;BXAX寄存器尋址的功能寄存器尋址的執(zhí)行存儲(chǔ)器操作數(shù)的尋址w 當(dāng)操作數(shù)存放在內(nèi)存中時(shí),尋找操作數(shù)歸結(jié)為當(dāng)操作數(shù)存放在內(nèi)存中時(shí),尋找操作數(shù)歸結(jié)為如何確定存儲(chǔ)單元的地址如何確定存儲(chǔ)單元的地址w 邏輯地址邏輯地址段基值:偏移量段基值:偏移量由段寄存器的內(nèi)容給出由段寄存器的內(nèi)容給出 主要確定該部分的內(nèi)容主要確定該部分的內(nèi)容(EA)w 物理地址物理地址=(段寄存器)(段寄存器) 16 + EA位移量:指令中給出位移量:指令中給出16位數(shù)(常數(shù)、符號(hào))位數(shù)(
8、常數(shù)、符號(hào)) EA 基地址:由基址寄存器基地址:由基址寄存器BX或基址指針或基址指針BP給出給出 變址:由變址寄存器(變址:由變址寄存器(SI或或DI)給出給出 在實(shí)際尋址過(guò)程中,可能包含不同部分,在實(shí)際尋址過(guò)程中,可能包含不同部分,EA為它們的相加之和,可在為它們的相加之和,可在64KB范圍內(nèi)尋范圍內(nèi)尋址。構(gòu)成址。構(gòu)成EA的的3個(gè)分量的不同組合,形成了個(gè)分量的不同組合,形成了不同的尋址方式。不同的尋址方式。3. 直接尋址:直接尋址:w 有效地址在指令中直接給出有效地址在指令中直接給出操作數(shù)的操作數(shù)的16位偏移量直接包含在指令中,與操作碼位偏移量直接包含在指令中,與操作碼一起放在代碼段中一起放
9、在代碼段中w 用符號(hào)表示的位移量用符號(hào)表示的位移量MOV BX,VAR MOV BX,DS:VAR;表示將用符號(hào)表示將用符號(hào)VAR表示的字單元的內(nèi)容表示的字單元的內(nèi)容 AX;不聲明段則默認(rèn)為數(shù)據(jù)段,指明段寄存器則可實(shí)現(xiàn);不聲明段則默認(rèn)為數(shù)據(jù)段,指明段寄存器則可實(shí)現(xiàn)段跨越段跨越w 用常數(shù)表示的位移量用常數(shù)表示的位移量MOV AX,DS:2000H;表示將數(shù)據(jù)段偏移表示將數(shù)據(jù)段偏移2000H字節(jié)的字單元的內(nèi)容字節(jié)的字單元的內(nèi)容 AX在這種尋址方式中,操作數(shù)存放在存儲(chǔ)單元中,而這個(gè)在這種尋址方式中,操作數(shù)存放在存儲(chǔ)單元中,而這個(gè)存儲(chǔ)單元的有效地址就在指令的操作碼之后,操作數(shù)的存儲(chǔ)單元的有效地址就在指
10、令的操作碼之后,操作數(shù)的物理地址可通過(guò)段基地址再加上這個(gè)有效地址形成。物理地址可通過(guò)段基地址再加上這個(gè)有效地址形成。直接尋址的功能MOV AX,DS:2000H直接尋址的執(zhí)行MOV AX,DS:2000H 例:例:MOV AX, 2000H MOV AX, 2000H EA=2000H, EA=2000H, 假設(shè)假設(shè)( (DS)=3000H, DS)=3000H, 那么那么PA=32000HPA=32000H 5030AH AL50(AX)= 3050 H3200030例如:例如: MOV AX, DATA或或 MOV AX, DATA這里這里DATA是存放操作數(shù)單元的符號(hào)地址。是存放操作數(shù)單
11、元的符號(hào)地址。 直接尋址方式默認(rèn)操作數(shù)在數(shù)據(jù)段中,如果操作數(shù)直接尋址方式默認(rèn)操作數(shù)在數(shù)據(jù)段中,如果操作數(shù)定義在其它段中,則應(yīng)在指令中指定段跨越前綴。定義在其它段中,則應(yīng)在指令中指定段跨越前綴。 例如:例如: MOV AX, ES:NUMBER或或 MOV AX, ES:NUMBER這里這里NUMBER是附加段中的字變量。是附加段中的字變量。 (2)所使用的寄存器相當(dāng)于地址指針,當(dāng)修改其內(nèi)容所使用的寄存器相當(dāng)于地址指針,當(dāng)修改其內(nèi)容后可指向不同的存儲(chǔ)單元后可指向不同的存儲(chǔ)單元(3)書(shū)寫(xiě)時(shí)用書(shū)寫(xiě)時(shí)用括住寄存器名,以區(qū)別于寄存器尋址括住寄存器名,以區(qū)別于寄存器尋址.4. 寄存器間接尋址:寄存器間接尋
12、址:寄存器間接尋址得到的操作數(shù)存放在內(nèi)存儲(chǔ)器中,而操寄存器間接尋址得到的操作數(shù)存放在內(nèi)存儲(chǔ)器中,而操作數(shù)的偏移地址作數(shù)的偏移地址EA在指令指明的寄存器中,即寄存器的在指令指明的寄存器中,即寄存器的內(nèi)容為操作數(shù)的偏移地址內(nèi)容為操作數(shù)的偏移地址EA。(1)(1)操作數(shù)的偏移地址包含在變址寄存器(操作數(shù)的偏移地址包含在變址寄存器(DI或或SI)、)、基址寄基址寄存器(存器(BX或或BP)之一中之一中; ;當(dāng)以當(dāng)以SI、DI、BX間接尋址,間接尋址,操作數(shù)默認(rèn)在數(shù)據(jù)段,操作數(shù)默認(rèn)在數(shù)據(jù)段,操作數(shù)物理操作數(shù)物理地址由數(shù)據(jù)段寄存器地址由數(shù)據(jù)段寄存器DS與與SI或或DI或或BX中的偏移地址構(gòu)成;中的偏移地址
13、構(gòu)成;當(dāng)以當(dāng)以BP間接尋址,間接尋址,操作數(shù)默認(rèn)在堆棧段操作數(shù)默認(rèn)在堆棧段,操作數(shù)物理地址由堆,操作數(shù)物理地址由堆棧段寄存器棧段寄存器SS與與BP中的偏移地址構(gòu)成。中的偏移地址構(gòu)成。使用段超越前綴改變段。使用段超越前綴改變段。即:即:若用寄存器若用寄存器SI,DI,BX間接尋址,則操作數(shù)在當(dāng)前數(shù)據(jù)段中。間接尋址,則操作數(shù)在當(dāng)前數(shù)據(jù)段中。 PA=(DS)10H+EA 若用寄存器若用寄存器BP間接尋址,則操作數(shù)在當(dāng)前堆棧段中。間接尋址,則操作數(shù)在當(dāng)前堆棧段中。 PA=(SS)10H+EA 寄存器間接尋址的功能寄存器間接尋址的執(zhí)行例:例:MOV AX, BX PA = 16d (DS) + (BX)
14、MOV AX, ES:BX PA = 16d (ES) + (BX)MOV AX, BP PA = 16d (SS) + (BP)* 不允許使用不允許使用AX、CX、DX 存放存放 EA 5.寄存器相對(duì)尋址方式寄存器相對(duì)尋址方式w 直接變址尋址,基址尋址,變址尋址直接變址尋址,基址尋址,變址尋址w 有效地址是寄存器內(nèi)容與有符號(hào)有效地址是寄存器內(nèi)容與有符號(hào)8位或位或16位位移位位移量之和,寄存器可以是量之和,寄存器可以是BX、BP或或SI、DIEA BX/BP 或或 SI/DI 0/8/16位位移量位位移量w 段地址對(duì)應(yīng)段地址對(duì)應(yīng)BX/SI/DI寄存器默認(rèn)是寄存器默認(rèn)是DS,對(duì)應(yīng)對(duì)應(yīng)BP寄存器默
15、認(rèn)是寄存器默認(rèn)是SS;可用段超越前綴改變可用段超越前綴改變w 該方式不僅可以修改指針,還可以修改位移量,該方式不僅可以修改指針,還可以修改位移量,對(duì)數(shù)組操作十分方便對(duì)數(shù)組操作十分方便基址尋址基址尋址變址尋址變址尋址基址尋址:基址尋址:偏移地址是指令中給定的偏移量和寄存器偏移地址是指令中給定的偏移量和寄存器BXBX或基數(shù)指針或基數(shù)指針BPBP的內(nèi)容之和;的內(nèi)容之和;BXBX作為基址寄存器時(shí)且無(wú)作為基址寄存器時(shí)且無(wú)段超越時(shí),物理地址由段超越時(shí),物理地址由DSDS和偏移地址形成;和偏移地址形成;BPBP作為基址作為基址寄存器時(shí)且無(wú)段超越時(shí),物理地址由寄存器時(shí)且無(wú)段超越時(shí),物理地址由SSSS和偏移地址
16、形成。和偏移地址形成。 例如:例如:MOV BXMOV BX,DELTABP DELTABP 變址尋址:變址尋址:操作數(shù)的偏移地址為指令中給定的操作數(shù)的偏移地址為指令中給定的8 8位或位或1616位偏移量和變址寄存器位偏移量和變址寄存器SISI或或DIDI內(nèi)容之和;操作數(shù)的物理內(nèi)容之和;操作數(shù)的物理地址由地址由DSDS和偏移地址形成。若指明是段超越的,則以指和偏移地址形成。若指明是段超越的,則以指令中指定的段寄存器為基準(zhǔn)。令中指定的段寄存器為基準(zhǔn)。 例如:例如:MOV AXMOV AX,COUNTDI COUNTDI 5.寄存器相對(duì)尋址方式寄存器相對(duì)尋址方式MOV AX,10HSI MOV A
17、X,DS:10HSIMOV AX,ARRAYBX MOV AX,DS:ARRAYBXMOV TABLEDI,AL MOV DS:TABLEDI,ALMOV TABZBP,BL MOV SS:TABZBP,BL 寄存器相對(duì)尋址的功能寄存器相對(duì)尋址的執(zhí)行代碼段DS數(shù)據(jù)段操作碼24H00H12H34H56H78H9AHMOV AL,0024HSI0024H(SI)=0(AL)=12H(SI)=1(AL)=34H(SI)=2(AL)=56H(SI)=3(AL)=78H(SI)=4(AL)=9AHEA=24H+(SI)(SI)可看作數(shù)據(jù)起始單元可看作數(shù)據(jù)起始單元的偏移量的偏移量數(shù)組內(nèi)某元素距數(shù)組數(shù)組內(nèi)某
18、元素距數(shù)組起始單元的偏移起始單元的偏移通過(guò)修改通過(guò)修改SI可遍歷整個(gè)數(shù)組可遍歷整個(gè)數(shù)組6.基址變址尋址方式:基址變址尋址方式:操作數(shù)的偏移地址為基址寄存器操作數(shù)的偏移地址為基址寄存器BXBX或或BPBP的內(nèi)容加上變址的內(nèi)容加上變址寄存器寄存器SISI或或DIDI的內(nèi)容之和;的內(nèi)容之和;若用若用BX作為基址寄存器,則操作數(shù)在數(shù)據(jù)段中;若用作為基址寄存器,則操作數(shù)在數(shù)據(jù)段中;若用BP作為基址寄存器,則操作數(shù)在堆棧段中。作為基址寄存器,則操作數(shù)在堆棧段中。 w 有效地址由基址寄存器(有效地址由基址寄存器(BX或或BP)的內(nèi)容加上的內(nèi)容加上變址寄存器(變址寄存器(SI或或DI)的內(nèi)容構(gòu)成:的內(nèi)容構(gòu)成:
19、w 段地址對(duì)應(yīng)段地址對(duì)應(yīng)BX基址寄存器默認(rèn)是基址寄存器默認(rèn)是DS,對(duì)應(yīng)對(duì)應(yīng)BP基址寄存器默認(rèn)是基址寄存器默認(rèn)是SS;可用段超越前綴改變可用段超越前綴改變6.基址變址尋址方式基址變址尋址方式MOV AX,BXSI MOV AX,DS:BX+SIMOV AX,BPDI MOV AX,SS:BP+DIMOV AX,DS:BPDI MOV AX, DS:BP+DI基址變址尋址的功能請(qǐng)請(qǐng)指指出出圖圖中中的的錯(cuò)錯(cuò)誤誤!基址變址尋址的執(zhí)行例、例、MOV AX, BXDI (或?qū)憺榛驅(qū)憺?MOV AX, BX+DI)設(shè)設(shè) (DS ) = 2100H,(,(BX)= 0158H,(,(DI)= 10A5H則則
20、EA = 0158H +10A5H = 11FDH物理地址物理地址 = 21000H +11FDH = 221FDH指令執(zhí)行情況如下圖所示,最后的執(zhí)行結(jié)果是(指令執(zhí)行情況如下圖所示,最后的執(zhí)行結(jié)果是(AX)= 1234H。 7.相對(duì)基址變址尋址方式:相對(duì)基址變址尋址方式:w 有效地址是基址寄存器(有效地址是基址寄存器(BX/BP)、)、變址寄存變址寄存器(器(SI/DI)與一個(gè)與一個(gè)8位或位或16位位移量之和:位位移量之和:EABX/BPSI/DI8/16位位移量位位移量w 該方式中,該方式中,BX/BP選一,選一,SI/DI選一選一w 段地址對(duì)應(yīng)段地址對(duì)應(yīng)BX基址寄存器默認(rèn)是基址寄存器默認(rèn)是
21、DS,對(duì)應(yīng)對(duì)應(yīng)BP基址寄存器默認(rèn)是基址寄存器默認(rèn)是SS;可用段超越前綴改變可用段超越前綴改變7.相對(duì)基址變址尋址方式相對(duì)基址變址尋址方式MOV AX, 06HBX+SI MOV AX, DS:BX+SI+06HMOV AL,TABBXDI MOV AL,DS:TABLEBXDI MOV DWORDBPSI,DX MOV SS:DWORDBPSI,DX MOV AX,ARRAYBXBP MOV AX,DASIDI 31A003000:1A00例如:例如:MOV AXMOV AX,MASKBXSI MASKBXSI BX、SI分別存放數(shù)組的腳標(biāo)MOV AL,ARRAYBXSIDS數(shù)據(jù)段ARRAYS
22、IBX二維數(shù)組起始單元二維數(shù)組起始單元 EA 之間表示相加的關(guān)系之間表示相加的關(guān)系BXSI BX+SI二、與轉(zhuǎn)移地址有關(guān)的尋址方式二、與轉(zhuǎn)移地址有關(guān)的尋址方式 程序代碼亦存放在存儲(chǔ)器中,如程序代碼亦存放在存儲(chǔ)器中,如何控制程序的走向(轉(zhuǎn)移位置的地何控制程序的走向(轉(zhuǎn)移位置的地址址CS:IP)是本部分所涉及的內(nèi)容,是本部分所涉及的內(nèi)容,由于它們與具體的指令相關(guān),他們由于它們與具體的指令相關(guān),他們的介紹放在指令中講解。的介紹放在指令中講解。 3.3 80 x86的指令系統(tǒng)的指令系統(tǒng)w 指令分類(lèi)指令分類(lèi)n功能功能n格式格式w 數(shù)據(jù)傳送指令數(shù)據(jù)傳送指令w 算術(shù)運(yùn)算指令算術(shù)運(yùn)算指令w 邏輯指令邏輯指令w
23、 串操作指令串操作指令w 程序轉(zhuǎn)移指令程序轉(zhuǎn)移指令w 處理器控制指令處理器控制指令w 雙操作數(shù)指令(雙操作數(shù)指令(DEST,SRC)w 單操作數(shù)指令(單操作數(shù)指令(DEST)w 無(wú)操作數(shù)指令(隱含,按約定尋找操作數(shù))無(wú)操作數(shù)指令(隱含,按約定尋找操作數(shù))一、數(shù)據(jù)傳送指令w 數(shù)據(jù)傳送是計(jì)算機(jī)中最基本、最重要的一數(shù)據(jù)傳送是計(jì)算機(jī)中最基本、最重要的一種操作種操作w 傳送指令也是最常使用的一類(lèi)指令傳送指令也是最常使用的一類(lèi)指令w 傳送指令把數(shù)據(jù)從一個(gè)位置傳送到另一個(gè)傳送指令把數(shù)據(jù)從一個(gè)位置傳送到另一個(gè)位置位置w 除標(biāo)志寄存器傳送指令外,均除標(biāo)志寄存器傳送指令外,均不影響標(biāo)志不影響標(biāo)志位位w 重點(diǎn)掌握重
24、點(diǎn)掌握MOV XCHG XLAT PUSH POP LEA1. 通用數(shù)據(jù)傳送指令w提供方便靈活的通用傳送操作w有3條指令MOVXCHGXLAT1)傳送指令傳送指令MOV(move)w 格式:MOV DEST,SRCw 功能:將源操作數(shù)的內(nèi)容傳送至目的操作數(shù)中即(DEST) (SRC)w 說(shuō)明:nDEST可以是8/16位的R(CS、IP除外)/MnSRC可以是8/16位的R/M/立即數(shù)只能出現(xiàn)在源操只能出現(xiàn)在源操作數(shù)的位置作數(shù)的位置1)傳送指令傳送指令MOV立即數(shù)傳送立即數(shù)傳送MOV MOV reg/mem,immreg/mem,imm;立即數(shù)送寄存器或主存立即數(shù)送寄存器或主存movmov al
25、,4 al,4;(;(alal)44,字節(jié)傳送字節(jié)傳送movmov cx,0ffh cx,0ffh;(;(cxcx)00ffh00ffh,字傳字傳送送movmov si,200h si,200h;(;(sisi)0200h0200h,字傳字傳送送movmov byte byte ptrptr si,0ah si,0ah;byte byte ptrptr 說(shuō)明是字節(jié)操作說(shuō)明是字節(jié)操作movmov word word ptrptr si+2,0bh si+2,0bh;word word ptrptr 說(shuō)明是字操作說(shuō)明是字操作 注意立即數(shù)是字節(jié)量還是字量注意立即數(shù)是字節(jié)量還是字量 明確指令是字節(jié)操作
26、還是字操作明確指令是字節(jié)操作還是字操作1)傳送指令傳送指令MOV寄存器之間數(shù)據(jù)傳送寄存器之間數(shù)據(jù)傳送MOV MOV reg,regreg,regmovmov ax,bxax,bx;(ax) (ax) (bxbx) ) ,字傳送字傳送movmov ah,al ah,al;(ah) (al) (ah) (al) ,字節(jié)傳送字節(jié)傳送movmov ds,axds,ax;( (dsds) (ax) ) (ax) ,字傳送字傳送 CS只能出現(xiàn)在只能出現(xiàn)在SRC的位置的位置1)傳送指令傳送指令MOV寄存器與存儲(chǔ)器之間數(shù)據(jù)傳送寄存器與存儲(chǔ)器之間數(shù)據(jù)傳送MOV AL,D_BYTEMOV AL,D_BYTEMOV
27、 DX,BPMOV DX,BP;DXSS:BPDXSS:BPMOV DL,SIMOV DL,SI;DLDS:SIDLDS:SI1)傳送指令傳送指令MOV使用該指令應(yīng)注意的問(wèn)題使用該指令應(yīng)注意的問(wèn)題w SRC與與DEST的長(zhǎng)度必須一致的長(zhǎng)度必須一致 錯(cuò)誤示例:錯(cuò)誤示例:MOV AX,BLMOV CL,3824Hw DEST不能為不能為CS、IP及立即數(shù)及立即數(shù) 錯(cuò)誤示例:錯(cuò)誤示例: MOV VAR1,VAR2 正確實(shí)現(xiàn):正確實(shí)現(xiàn): MOV AL,VAR2MOV VAR1,ALw SRC與與DEST不能同時(shí)為存儲(chǔ)器操作數(shù)不能同時(shí)為存儲(chǔ)器操作數(shù)8086不支持兩個(gè)存儲(chǔ)單元間數(shù)據(jù)的直接傳送不支持兩個(gè)存儲(chǔ)
28、單元間數(shù)據(jù)的直接傳送w SRC與與DEST不能同時(shí)為段寄存器不能同時(shí)為段寄存器 例:例:DS ES 錯(cuò)誤:錯(cuò)誤:MOV DS,ES正確實(shí)現(xiàn):正確實(shí)現(xiàn):MOV AX,ESMOV DS,AXw 不能將立即數(shù)直接傳送到段寄存器不能將立即數(shù)直接傳送到段寄存器例:例:MOV AX,ESMOV DS,AX1)傳送指令傳送指令MOV數(shù)據(jù)傳送方向示意數(shù)據(jù)傳送方向示意立即數(shù)立即數(shù) 段寄存器段寄存器CSCS DS ES SS DS ES SS通用寄存器通用寄存器AX BX CX DXAX BX CX DXBP SP SI DIBP SP SI DI存存儲(chǔ)儲(chǔ)器器2)交換指令交換指令XCHG(exchange)w 指
29、令格式:指令格式:XCHG DEST,SRCw 指令功能:指令功能: (DEST) (SRC)n寄存器與寄存器之間對(duì)換數(shù)據(jù)寄存器與寄存器之間對(duì)換數(shù)據(jù)n寄存器與存儲(chǔ)器之間對(duì)換數(shù)據(jù)寄存器與存儲(chǔ)器之間對(duì)換數(shù)據(jù)注意:注意:不能在存儲(chǔ)器與存儲(chǔ)器之不能在存儲(chǔ)器與存儲(chǔ)器之間對(duì)換數(shù)據(jù)間對(duì)換數(shù)據(jù)2)交換指令交換指令XCHG寄存器間交換寄存器間交換movmov ax,1234h ax,1234h;ax=1234hax=1234hmovmov bx,5678h bx,5678h;bxbx=5678h=5678hxchgxchg ax,bxax,bx;ax=5678hax=5678h,bx=1234hbx=1234h
30、xchgxchg ah,al ah,al;ax=7856hax=7856h2)交換指令交換指令XCHG寄存器與存儲(chǔ)器交換寄存器與存儲(chǔ)器交換xchgxchg ax,ds:2000h ax,ds:2000h;字交換字交換;等同于;等同于 xchgxchg ds:2000h,ax ds:2000h,axxchgxchg al, ds:2000h al, ds:2000h ;字節(jié)交換字節(jié)交換;等同于;等同于 xchgxchg ds:2000h,al ds:2000h,al2)交換指令交換指令XCHG例題分析例題分析w 例例: (BX)=6F30H, (BP)=0200H, (SI)=0046H, (S
31、S)=2F00H,(2F246H)=4154H,在指令在指令 XCHG BX,BP+SI執(zhí)行后,相關(guān)寄存器和執(zhí)行后,相關(guān)寄存器和存儲(chǔ)器的內(nèi)容是什么?存儲(chǔ)器的內(nèi)容是什么?w 分析:源操作數(shù)的物理地址分析:源操作數(shù)的物理地址=(SS) 16+(BP)+(SI)=2F000H+0200H+0046H=2F246Hw 指令的功能:指令的功能:(BX) (2F246H)w 指令執(zhí)行結(jié)果:指令執(zhí)行結(jié)果:(BX)=4154H,(2F246H)=6F30H3)換碼指令換碼指令XLAT(translate)w 指令格式:指令格式: XLATw 指令功能指令功能: ALDS:BX+ALDS:BX+AL,將將BX指
32、定的緩指定的緩沖區(qū)中、沖區(qū)中、AL指定的位移處的一個(gè)字節(jié)數(shù)據(jù)取出指定的位移處的一個(gè)字節(jié)數(shù)據(jù)取出賦給賦給ALw 換碼指令執(zhí)行前:換碼指令執(zhí)行前:在主存建立一個(gè)字節(jié)量表格,內(nèi)含要轉(zhuǎn)換成的目的代碼在主存建立一個(gè)字節(jié)量表格,內(nèi)含要轉(zhuǎn)換成的目的代碼表格首地址存放于表格首地址存放于BXBX,ALAL存放相對(duì)表格首地址的位移量存放相對(duì)表格首地址的位移量w 換碼指令執(zhí)行后:換碼指令執(zhí)行后:將將ALAL寄存器的內(nèi)容轉(zhuǎn)換為目標(biāo)代碼寄存器的內(nèi)容轉(zhuǎn)換為目標(biāo)代碼movmov bx,100h bx,100hmovmov al,03h al,03hxlatxlat(BX)(AL)DS數(shù)據(jù)段12H34H56H78H9AH78
33、H(AL)=78H3)換碼指令換碼指令XLAT例題例題2.堆棧操作指令堆棧操作指令進(jìn)棧指令PUSHw 格式:格式: PUSH SRCw 功能:功能:SPSPSPSP2 2,SS:SPSS:SP(r16/m16/segr16/m16/seg)例:例:push axpush axpush DS:2000hpush DS:2000h2.堆棧操作指令堆棧操作指令出棧指令POPw 格式:格式:POP DESTw 功能:功能: (r16/m16/segr16/m16/seg) SS:SP SS:SP SPSP+2SPSP+2,例:例:pop DXpop DXpop DS:2000hpop DS:2000h
34、2.堆棧操作指令堆棧操作指令應(yīng)用舉例應(yīng)用舉例push axpush ax;進(jìn)入子程序后進(jìn)入子程序后push push bxbxpush push dsds.pop pop dsds;返回主程序前返回主程序前pop pop bxbxpop axpop ax3. 地址傳送指令地址傳送指令w地址傳送指令將存儲(chǔ)器單元的邏輯地地址傳送指令將存儲(chǔ)器單元的邏輯地址送至指定的寄存器址送至指定的寄存器n有效地址傳送指令有效地址傳送指令 LEAn指針傳送指令指針傳送指令 LDS和和LESw注意不是獲取存儲(chǔ)器單元的內(nèi)容注意不是獲取存儲(chǔ)器單元的內(nèi)容3. 地址傳送指令地址傳送指令有效地址傳送指令有效地址傳送指令LEA(
35、load EA)格式:格式:LEA DEST,SRCLEA DEST,SRC1616位寄存器位寄存器存儲(chǔ)器操作數(shù)存儲(chǔ)器操作數(shù)功能:功能:DESTDESTSRCSRC的有效地址的有效地址EAEA將存儲(chǔ)器操作數(shù)的有效地址傳送至指定的將存儲(chǔ)器操作數(shù)的有效地址傳送至指定的16位寄存器中位寄存器中LEA BX,BUFRLEA BX,BUFR9A78H(BX)=9A78H3. 地址傳送指令地址傳送指令有效地址傳送指令有效地址傳送指令LEA(例)例)23H093A0HBUFR78H9AH093AHDS093C3H(BX)=0023H錯(cuò)誤!錯(cuò)誤! 獲得主存單元的有效地址;不是獲得主存單元的有效地址;不是物理地
36、址,也不是該單元的內(nèi)容物理地址,也不是該單元的內(nèi)容 可以實(shí)現(xiàn)計(jì)算功能可以實(shí)現(xiàn)計(jì)算功能3. 地址傳送指令地址傳送指令地址地址指針指針w 存儲(chǔ)單元的邏輯地址存儲(chǔ)單元的邏輯地址段基值(段基值(16位)位)段內(nèi)偏移量(段內(nèi)偏移量(16位)位)w 地址指針(地址指針(32位)位)M的邏輯地址在的邏輯地址在M中需中需4個(gè)連續(xù)的存儲(chǔ)單元個(gè)連續(xù)的存儲(chǔ)單元段基值段基值A(chǔ)D_POINTXXXX偏移量偏移量XXXX3. 地址傳送指令地址傳送指令指針傳送指令指針傳送指令格式:格式:LDS DEST,SRCLDS DEST,SRC功能:功能: ( (DEST)(SRCDEST)(SRC) )段內(nèi)偏移量段內(nèi)偏移量 DS
37、(SRC+2 )DS (SRC+2 )段基值段基值w LDSLDS指令將主存中指令將主存中SRCSRC 指定的字送至指定的字送至1616位寄存位寄存器器DESTDEST,并將,并將SRCSRC的下的下一字送一字送DSDS寄存器寄存器格式:格式:LES DEST,SRCLES DEST,SRC功能:功能: ( (DEST)(SRCDEST)(SRC) )段內(nèi)偏移量段內(nèi)偏移量 ES (SRC+2 )ES (SRC+2 )段基值段基值w LESLES指令將主存中指令將主存中SRCSRC 指定的字送至指定的字送至1616位寄存位寄存器器DESTDEST,并將,并將SRCSRC的下的下一字送一字送ESE
38、S寄存器寄存器w 例例: (DS)=B000H, (BX)=080AH, (0B080AH)=05AEH, (0B080CH)=4000H, (405AEH)=9634H,在在執(zhí)行指令執(zhí)行指令LDS DI,BXMOV AX,DI后,后,(AX)=?BX=080AHB0000H0B080AH40000H34H96HAEH05H00H40H405AEH05AEH0B080CH( (DI)=05AEHDI)=05AEH( (DS)=4000HDS)=4000Hw 結(jié)果結(jié)果: (DS)=4000H (DI)=05AEH (AX)=9634H例、設(shè)執(zhí)行前例、設(shè)執(zhí)行前( (DS)=2000H,(DI)=1
39、050H,COUNT=100H,DS)=2000H,(DI)=1050H,COUNT=100H,執(zhí)行執(zhí)行LDS SI,COUNTDILDS SI,COUNTDI 4. 標(biāo)志寄存器傳送指令標(biāo)志寄存器傳送指令w標(biāo)志寄存器傳送指令用來(lái)傳送標(biāo)志寄標(biāo)志寄存器傳送指令用來(lái)傳送標(biāo)志寄存器存器FLAGS的內(nèi)容,方便進(jìn)行對(duì)各的內(nèi)容,方便進(jìn)行對(duì)各個(gè)標(biāo)志位的直接操作個(gè)標(biāo)志位的直接操作w有有2對(duì)對(duì)4條指令條指令n低低8位傳送:位傳送:LAHF和和SAHFn16位傳送:位傳送:PUSHF和和POPF4、標(biāo)志寄存器傳送指令、標(biāo)志寄存器傳送指令標(biāo)志低字節(jié)進(jìn)出標(biāo)志低字節(jié)進(jìn)出AH指令指令格式:格式:LAHFLAHF功能:功能:
40、( (AH)FLAGSAH)FLAGS的低字節(jié)的低字節(jié)w LAHFLAHF指令將標(biāo)志寄存器的指令將標(biāo)志寄存器的低字節(jié)送寄存器低字節(jié)送寄存器AHAHw SF/ZF/AF/PF/CFSF/ZF/AF/PF/CF狀態(tài)標(biāo)志狀態(tài)標(biāo)志位分別送入位分別送入AHAH的第的第7/6/4/2/07/6/4/2/0位,而位,而AHAH的第的第5/3/15/3/1位任意位任意格式:格式: SAHF SAHF功能:功能: FLAGS FLAGS的的低字節(jié)低字節(jié)(AH)AH)w SAHFSAHF將將AHAH寄存器內(nèi)容送寄存器內(nèi)容送FLAGSFLAGS的低字節(jié)的低字節(jié)w 用用AHAH的第的第7/6/4/2/07/6/4/2
41、/0位相應(yīng)位相應(yīng)設(shè)置設(shè)置SF/ZF/AF/ PF/CFSF/ZF/AF/ PF/CF標(biāo)志標(biāo)志4.標(biāo)志寄存器傳送指令標(biāo)志寄存器傳送指令標(biāo)志寄存器進(jìn)出堆棧指令標(biāo)志寄存器進(jìn)出堆棧指令格式:格式:PUSHFPUSHF功能:功能:SPSP-2 SPSP-2 SS:SPFLAGSSS:SPFLAGSw PUSHFPUSHF指令將標(biāo)志指令將標(biāo)志寄存器的內(nèi)容壓入寄存器的內(nèi)容壓入堆棧,同時(shí)棧頂指堆棧,同時(shí)棧頂指針針SPSP減減2 2格式:格式: POPF POPF功能:功能:FLAGSSS:SP FLAGSSS:SP SPSPSPSP2 2w POPFPOPF指令將棧頂字單指令將棧頂字單元內(nèi)容送標(biāo)志寄存器,元內(nèi)
42、容送標(biāo)志寄存器,同時(shí)棧頂指針同時(shí)棧頂指針SPSP加加2 2 4.標(biāo)志寄存器傳送指令標(biāo)志寄存器傳送指令 標(biāo)志寄存器進(jìn)出堆棧指令(標(biāo)志寄存器進(jìn)出堆棧指令(置位單步標(biāo)志)置位單步標(biāo)志)pushfpushf;保存全部標(biāo)志到堆棧保存全部標(biāo)志到堆棧pop axpop ax;從堆棧中取出全部標(biāo)志從堆棧中取出全部標(biāo)志or ax,0100hor ax,0100h;設(shè)置設(shè)置D D8 8=TF=1=TF=1,axax其它位不變其它位不變push axpush ax;將將axax壓入堆棧壓入堆棧popfpopf;FLAGSAXFLAGSAX;將堆棧內(nèi)容取到標(biāo)志寄存器將堆棧內(nèi)容取到標(biāo)志寄存器二、算術(shù)運(yùn)算指令二、算術(shù)運(yùn)算
43、指令(部分)w四則運(yùn)算是計(jì)算機(jī)經(jīng)常進(jìn)行的一種操四則運(yùn)算是計(jì)算機(jī)經(jīng)常進(jìn)行的一種操作。算術(shù)運(yùn)算指令實(shí)現(xiàn)二進(jìn)制(和十作。算術(shù)運(yùn)算指令實(shí)現(xiàn)二進(jìn)制(和十進(jìn)制)數(shù)據(jù)的四則運(yùn)算進(jìn)制)數(shù)據(jù)的四則運(yùn)算w請(qǐng)注意算術(shù)運(yùn)算類(lèi)指令對(duì)標(biāo)志的影響請(qǐng)注意算術(shù)運(yùn)算類(lèi)指令對(duì)標(biāo)志的影響1.加加/減法指令減法指令w 格式:格式:ADD DEST,SRCSUB DEST,SRCw 功能:功能:(DEST) (DEST)+/-(SRC)w 受影響標(biāo)志:受影響標(biāo)志:CF,PF,AF,ZF,SF,OFw 說(shuō)明:說(shuō)明:n操作數(shù)可以是字節(jié)或字操作數(shù)可以是字節(jié)或字nSRC可以是通用可以是通用R、M、immnDEST可以是通用可以是通用R、MnDE
44、ST和和 SRC不能同時(shí)為不能同時(shí)為M進(jìn)位標(biāo)志進(jìn)位標(biāo)志 奇偶標(biāo)志奇偶標(biāo)志 輔助進(jìn)位標(biāo)志輔助進(jìn)位標(biāo)志 零標(biāo)志零標(biāo)志 符號(hào)標(biāo)志符號(hào)標(biāo)志 溢出標(biāo)志溢出標(biāo)志 CF:當(dāng)結(jié)果的最高位產(chǎn)生進(jìn)位時(shí)當(dāng)結(jié)果的最高位產(chǎn)生進(jìn)位時(shí), ,CF=1,CF=1,否則否則CF=0CF=0。OFOF:當(dāng)帶符號(hào)數(shù)運(yùn)算的結(jié)果超出其所能表示范圍當(dāng)帶符號(hào)數(shù)運(yùn)算的結(jié)果超出其所能表示范圍, , 則則 OF=1,OF=1,否則否則OF=0OF=0。PFPF:結(jié)果中含結(jié)果中含11的個(gè)數(shù)為偶數(shù)的個(gè)數(shù)為偶數(shù), ,則則PF=1,PF=1,否則否則PF=0PF=0。 SFSF:結(jié)果最高位為結(jié)果最高位為1,1,則則SF=1,SF=1,否則否則SF=0SF
45、=0。 ZFZF:結(jié)果為零結(jié)果為零, ,則則ZF=1,ZF=1,否則否則ZF=0ZF=0。AFAF:字節(jié)運(yùn)算時(shí)字節(jié)運(yùn)算時(shí)D3D3產(chǎn)生進(jìn)位產(chǎn)生進(jìn)位; ;字運(yùn)算時(shí)字運(yùn)算時(shí)D7D7產(chǎn)生進(jìn)產(chǎn)生進(jìn)位位, , 則則AF=1,AF=1,否則否則AF=0AF=0。 1.加法指令加法指令舉例舉例ADD AX,BXADD AL,BLSUB CX,20HADD DL,DA_BYTESUB DA_WORD,DX若若(AL)=0E5H,執(zhí)行執(zhí)行ADD AL,0A4H 后,后,AL及各標(biāo)志位的情及各標(biāo)志位的情況?況?11110 01011010 01001000 1001+CF=1,AF=0,PF=0,ZF=0,SF=1
46、,OF=0w若認(rèn)為是無(wú)符號(hào)數(shù),若認(rèn)為是無(wú)符號(hào)數(shù),則為則為229+164=393=256+137229+164=393=256+137w若認(rèn)為是有符號(hào)數(shù),若認(rèn)為是有符號(hào)數(shù),則為則為(-27)+(-92)=-119(-27)+(-92)=-119例:例:ADD AX,2520HADD AX,2520H 2. 減法指令減法指令舉例舉例w 例:執(zhí)行指令例:執(zhí)行指令MOV AL,-73SUB AL,-87后,后,AL及個(gè)標(biāo)志位及個(gè)標(biāo)志位的情況的情況1011 01111010 10010000 1110CF=0,AF=1,PF=0,ZF=0,SF=0,OF=0-73的補(bǔ)碼表示的補(bǔ)碼表示14-87的補(bǔ)碼表示
47、的補(bǔ)碼表示AL=0EH2.帶進(jìn)帶進(jìn)/借位的加借位的加/減法指令減法指令w 格式:格式:ADC DEST,SRCSBB DEST,SRCw 功能:功能:(DEST) (DEST)+/-(SRC)+/-CFw 受影響標(biāo)志:受影響標(biāo)志:CF,PF,AF,ZF,SF,OFw 說(shuō)明:說(shuō)明:n操作數(shù)可以是字節(jié)或字操作數(shù)可以是字節(jié)或字nSRC可以是通用可以是通用R、M、immnDEST可以是通用可以是通用R、MnDEST和和 SRC不能同時(shí)為不能同時(shí)為M2.帶進(jìn)帶進(jìn)/借位的加借位的加/減法指令減法指令舉例舉例w 例:實(shí)現(xiàn)例:實(shí)現(xiàn)2F365H和和5E024H的加法的加法運(yùn)算運(yùn)算MOV DX,2MOV AX,0
48、F365HADD AX,0E024HADC DX,52 F3655 E0248 D389+手工計(jì)算手工計(jì)算2 F3655 E0248 D389+1F365E024D389+CF=1,AF=0,PF=0,ZF=0,SF=1,OF=0000200050008+ 0001CF=0,AF=0,PF=0,ZF=0,SF=0,OF=0AXDXAXAX 3 3A 79A 79例:設(shè)在內(nèi)存例:設(shè)在內(nèi)存BUFFER1,BUFFER2BUFFER1,BUFFER2開(kāi)始的兩個(gè)存區(qū)中分別存有兩開(kāi)始的兩個(gè)存區(qū)中分別存有兩個(gè)四字節(jié)數(shù)個(gè)四字節(jié)數(shù)( (如下圖如下圖), ), 現(xiàn)求這兩個(gè)數(shù)之和現(xiàn)求這兩個(gè)數(shù)之和, ,并并 把它們
49、的結(jié)果存入以把它們的結(jié)果存入以BUFFER3BUFFER3為首址的存區(qū)中為首址的存區(qū)中解:完成本任務(wù)的程序段如左下所示,該程序的逐條執(zhí)行過(guò)程可解:完成本任務(wù)的程序段如左下所示,該程序的逐條執(zhí)行過(guò)程可見(jiàn)下圖演示見(jiàn)下圖演示 AXAX 9090 F0 F0AXAX 3535 12 12AXAX 4040 63 633.加加/減減1指令指令w 格式:格式:INC DESTDEC DESTw 功能:功能:(DEST) (DEST)+/-1w 將將DEST指定的寄存器或存儲(chǔ)器內(nèi)容加指定的寄存器或存儲(chǔ)器內(nèi)容加1或減或減1,然后送會(huì)寄存器或存儲(chǔ)器然后送會(huì)寄存器或存儲(chǔ)器 w 受影響標(biāo)志:受影響標(biāo)志:PF,AF,
50、ZF,SF,OF;但不影響但不影響CF w 說(shuō)明:說(shuō)明:nDEST可以是字節(jié)或字可以是字節(jié)或字R、Mn功能與功能與ADD/SUB相似,但占用字節(jié)少,且不影響標(biāo)相似,但占用字節(jié)少,且不影響標(biāo)志位志位CF 。常用于修改地址指針及循環(huán)計(jì)數(shù)器。常用于修改地址指針及循環(huán)計(jì)數(shù)器。例、設(shè)例、設(shè)X、Y、Z均為雙精度數(shù),他們分別存放在地址為均為雙精度數(shù),他們分別存放在地址為X,X+2;Y,Y+2;Z,Z+2的存儲(chǔ)單元中,存放時(shí)高的存儲(chǔ)單元中,存放時(shí)高位字在高地址中,低位字在低地址中;位字在高地址中,低位字在低地址中;W,W+2單元單元存放運(yùn)算結(jié)果;編寫(xiě)實(shí)現(xiàn)下列二進(jìn)制運(yùn)算的程序段存放運(yùn)算結(jié)果;編寫(xiě)實(shí)現(xiàn)下列二進(jìn)制運(yùn)
51、算的程序段 W X+Y+24Z MOV AX, X MOV DX,X+2 ADD AX, Y ADC DX,Y+2 ADD AX, 24 ADC DX,0 SUB AX, Z SBB DX,Z+2 MOV W, AX MOV W+2,DX4.求補(bǔ)指令(求負(fù)數(shù))求補(bǔ)指令(求負(fù)數(shù))w 格式:格式:NEG DESTw 功能:功能:(DEST) 0-0-(DEST)w 受影響標(biāo)志:受影響標(biāo)志: CF ,PF,AF,ZF,SF,OFw 說(shuō)明:說(shuō)明:nDEST可以是字節(jié)或字可以是字節(jié)或字R、Mn操作對(duì)象是有符號(hào)的數(shù)操作對(duì)象是有符號(hào)的數(shù)n當(dāng)操作數(shù)取最小值(當(dāng)操作數(shù)取最小值(-128或或-32768)時(shí),執(zhí)行
52、該指令)時(shí),執(zhí)行該指令后,操作數(shù)無(wú)變化,后,操作數(shù)無(wú)變化, OF=1n當(dāng)操作數(shù)為當(dāng)操作數(shù)為0時(shí),結(jié)果為時(shí),結(jié)果為0,但,但CF=0,其他情況其他情況CF=14.求補(bǔ)指令求補(bǔ)指令(舉例)(舉例)例:例:AL=13H,執(zhí)行指令執(zhí)行指令NEG AL后后AL的值的值10000 00000001 00111110 1101ALAL=-13H1001 00100000 00011001 0011+若若AL=11010001B=47補(bǔ),補(bǔ),執(zhí)行執(zhí)行NEG AL后,后, AL=00101111B=+475.比較指令比較指令CMP(compare)w 格式:格式:CMP DEST,SRCw 功能:功能:(DES
53、T) - -(SRC)w 受影響標(biāo)志:受影響標(biāo)志: CF ,PF,AF,ZF,SF,OFw 說(shuō)明:說(shuō)明:nDEST ,SRC可以是字節(jié)或字可以是字節(jié)或字R、M,長(zhǎng)度必須一致長(zhǎng)度必須一致nSRC還可以是還可以是immnDEST和和 SRC不能同時(shí)為不能同時(shí)為Mn該指令主要用于比較兩數(shù)的關(guān)系該指令主要用于比較兩數(shù)的關(guān)系5.比較指令比較指令CMP應(yīng)用應(yīng)用w ZF=1;兩數(shù)相等兩數(shù)相等w 兩個(gè)無(wú)符號(hào)數(shù)比較兩個(gè)無(wú)符號(hào)數(shù)比較CMP AX,BX ;0 AX BX1 AX SRCSF與與OF不同,不同,(DEST)SRC5.比較指令比較指令CMP(CMP AL,BL)AL=-2BL=1271111 11100
54、111 11110111 1111-SF=0OF=1相異,相異,ALBLAL=-2BL=-111111 11101111 11111111 1111-SF=1OF=0相異,相異,ALBLAL=127BL=-210111 11111111 11101000 0001-SF=1OF=1相同,相同,ALBL6.乘法指令乘法指令MUL r8/m8MUL r8/m8;無(wú)符號(hào)字節(jié)乘法無(wú)符號(hào)字節(jié)乘法;AXALAXALr8/m8r8/m8MUL r16/m16MUL r16/m16;無(wú)符號(hào)字乘法無(wú)符號(hào)字乘法;DX.AXAXDX.AXAXr16/m16r16/m16IMUL r8/m8IMUL r8/m8;有符
55、號(hào)字節(jié)乘法有符號(hào)字節(jié)乘法;AXALAXALr8/m8r8/m8IMUL r16/m16IMUL r16/m16;有符號(hào)字乘法有符號(hào)字乘法;DX.AXAXDX.AXAXr16/m16r16/m166.乘法指令乘法指令功能功能w 乘法指令乘法指令分無(wú)符號(hào)和有符號(hào)乘法指令分無(wú)符號(hào)和有符號(hào)乘法指令w 乘法指令的源操作數(shù)顯式給出,乘法指令的源操作數(shù)顯式給出,隱含使用隱含使用另一個(gè)操作數(shù)另一個(gè)操作數(shù)AX和和DXn字節(jié)相乘:字節(jié)相乘:AL與與r8/m8相乘,得到相乘,得到16位的結(jié)位的結(jié)果,存入果,存入AXn字相乘:字相乘:AX與與r16/m16相乘,得到相乘,得到32位的結(jié)位的結(jié)果,其高字存入果,其高字存
56、入DX,低字存入低字存入AXw 乘法指令利用乘法指令利用OF和和CF判斷乘積的高一半判斷乘積的高一半是否具有有效數(shù)值是否具有有效數(shù)值6.乘法指令乘法指令對(duì)標(biāo)志的影響對(duì)標(biāo)志的影響乘法指令如下影響乘法指令如下影響OF和和CF標(biāo)志:標(biāo)志:nMUL指令指令若乘積的高一半(若乘積的高一半(AH或或DX)為為0,則,則OF=CF=0;否則否則OF=CF=1nIMUL指令指令若乘積的高一半是低一若乘積的高一半是低一半的符號(hào)擴(kuò)展,則半的符號(hào)擴(kuò)展,則OF=CF=0;否則均否則均為為1例:設(shè)在字變量例:設(shè)在字變量A1,A2中分別存有兩個(gè)中分別存有兩個(gè)16位無(wú)符號(hào)二進(jìn)位無(wú)符號(hào)二進(jìn)制數(shù),現(xiàn)在要求它們的積,并將積存入以
57、制數(shù),現(xiàn)在要求它們的積,并將積存入以BUFFER為偏移為偏移地址的連續(xù)存區(qū)中。下面是完成此過(guò)程的程序段地址的連續(xù)存區(qū)中。下面是完成此過(guò)程的程序段: MOV AX,A1 MUL A2 MOV BUFFER,AX MOV BUFFER+2,DX 6.乘法指令乘法指令(例)(例)movmov al,0b4h al,0b4h;al=b4h=180al=b4h=180movmov bl,11h bl,11h;blbl=11h=17=11h=17mulmul blbl;ax=Obf4h=3060ax=Obf4h=3060,OF=CF=1OF=CF=1,AXAX高高8 8位不為位不為0 0movmov al
58、,0b4h al,0b4h;al=b4h=al=b4h=7676movmov bl,11h bl,11h;blbl=11h=17=11h=17imulimul blbl;ax=faf4h=ax=faf4h=12921292,OF=CF=1OF=CF=1,AXAX高高8 8位有效位有效6.除法指令除法指令DIV r8/m8DIV r8/m8;無(wú)符號(hào)字節(jié)除法無(wú)符號(hào)字節(jié)除法ALAXALAXr8/m8r8/m8的商,的商,AhAXAhAXr8/m8r8/m8的余數(shù)的余數(shù)DIV r16/m16DIV r16/m16;無(wú)符號(hào)字除法無(wú)符號(hào)字除法;AXDX.AXAXDX.AXr16/m16r16/m16的商,
59、的商,DXDX.AXDXDX.AXr16/m16r16/m16的余數(shù)的余數(shù)IDIV r8/m8IDIV r8/m8;有符號(hào)字節(jié)除法:有符號(hào)字節(jié)除法:ALAXALAXr8/m8r8/m8的商,的商,AhAXAhAXr8/m8r8/m8的余數(shù)的余數(shù)IDIV r16/m16IDIV r16/m16;有符號(hào)字除法:有符號(hào)字除法:;AXDX.AXAXDX.AXr16/m16r16/m16的商,的商,DXDX.AXDXDX.AXr16/m16r16/m16的余數(shù)的余數(shù)6.除法指令除法指令功能功能w 除法指令分無(wú)符號(hào)和有符號(hào)除法指令除法指令分無(wú)符號(hào)和有符號(hào)除法指令w 除法指令的除數(shù)顯式給出,隱含使用另一除法
60、指令的除數(shù)顯式給出,隱含使用另一個(gè)操作數(shù)個(gè)操作數(shù)AX和和DX作為被除數(shù)作為被除數(shù)n字節(jié)量除法:字節(jié)量除法:AX除以除以r8/m8,8位商存入位商存入AL,8位余數(shù)存入位余數(shù)存入AHn字量除法:字量除法:DX.AX除以除以r16/m16,16位商存入位商存入AX,16位余數(shù)存入位余數(shù)存入DXw 除法指令對(duì)標(biāo)志沒(méi)有影響除法指令對(duì)標(biāo)志沒(méi)有影響w 除法指令會(huì)產(chǎn)生結(jié)果溢出除法指令會(huì)產(chǎn)生結(jié)果溢出6.除法指令除法指令除法錯(cuò)中斷除法錯(cuò)中斷w 當(dāng)被除數(shù)遠(yuǎn)大于除數(shù)時(shí),所得的商就有可當(dāng)被除數(shù)遠(yuǎn)大于除數(shù)時(shí),所得的商就有可能超出它所能表達(dá)的范圍。如果存放商的能超出它所能表達(dá)的范圍。如果存放商的寄存器寄存器AL/AX不能
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 廣東2025年01月廣州市越秀區(qū)華樂(lè)街道2025年招考1名退管助老員筆試歷年典型考題(歷年真題考點(diǎn))解題思路附帶答案詳解
- 工程量清單計(jì)價(jià)基本原理重慶市房屋建筑與市政基礎(chǔ)設(shè)施工程現(xiàn)場(chǎng)施工專(zhuān)業(yè)人員土建預(yù)算
- 四川2024年12月四川省喜德縣公開(kāi)考核招考10名緊缺專(zhuān)業(yè)技術(shù)人員筆試歷年典型考題(歷年真題考點(diǎn))解題思路附帶答案詳解
- 關(guān)于警衛(wèi)計(jì)劃實(shí)施的管理規(guī)定
- 管網(wǎng)地下敷設(shè)張志英課件
- 青島職業(yè)技術(shù)學(xué)院《泰語(yǔ)語(yǔ)音糾音》2023-2024學(xué)年第二學(xué)期期末試卷
- 日照職業(yè)技術(shù)學(xué)院《Web前端應(yīng)用開(kāi)發(fā)》2023-2024學(xué)年第二學(xué)期期末試卷
- 2024-2025學(xué)年江蘇省蘇州市金閶區(qū)小升初常考易錯(cuò)數(shù)學(xué)檢測(cè)卷含解析
- 華北水利水電大學(xué)《財(cái)政支出績(jī)效評(píng)價(jià)》2023-2024學(xué)年第二學(xué)期期末試卷
- 2025屆南召縣三年級(jí)數(shù)學(xué)第二學(xué)期期末學(xué)業(yè)質(zhì)量監(jiān)測(cè)模擬試題含解析
- 家具公司合伙協(xié)議
- DL5000-火力發(fā)電廠設(shè)計(jì)技術(shù)規(guī)程
- 《醫(yī)德醫(yī)風(fēng)學(xué)習(xí)記錄》
- 羊水穿刺的委托書(shū)
- 爆破飛石控制措施
- 2024年新疆生產(chǎn)建設(shè)兵團(tuán)興新職業(yè)技術(shù)學(xué)院?jiǎn)握新殬I(yè)適應(yīng)性測(cè)試題庫(kù)必考題
- (高清版)JTGT M72-01-2017 公路隧道養(yǎng)護(hù)工程預(yù)算定額
- DZ∕T 0130.6-2006 地質(zhì)礦產(chǎn)實(shí)驗(yàn)室測(cè)試質(zhì)量管理規(guī)范 第6部分:水樣分析(正式版)
- 2024年遼寧生態(tài)工程職業(yè)學(xué)院?jiǎn)握新殬I(yè)適應(yīng)性測(cè)試題庫(kù)一套
- 摩托車(chē)科目一題庫(kù)-共400題(附答案)
- 第一節(jié)-原核生物與真核生物DNA的復(fù)制課件
評(píng)論
0/150
提交評(píng)論