版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領
文檔簡介
1、返回主目錄返回主目錄 4.1 Intel x86的尋址方式的尋址方式 4.2 Intel x86指令系統(tǒng)指令系統(tǒng) 小結(jié)小結(jié)第第4 4章章 80 x8680 x86微處理器的指令系統(tǒng)微處理器的指令系統(tǒng)4.1 Intel x864.1 Intel x86的尋址方式的尋址方式 指令的一般格式指令的一般格式: 計算機中的指令由操作碼字段和操作數(shù)字段組成計算機中的指令由操作碼字段和操作數(shù)字段組成。 操作碼操作碼:指計算機所要執(zhí)行的操作指計算機所要執(zhí)行的操作,是一種助記符是一種助記符。 操作數(shù)操作數(shù):指在指令執(zhí)行操作的過程中所需要的操作在指令執(zhí)行操作的過程中所需要的操作數(shù)數(shù)。 分目標操作數(shù)分目標操作數(shù)、源
2、操作數(shù)源操作數(shù)。該字段除可以是操作該字段除可以是操作數(shù)本身外數(shù)本身外,也可以是操作數(shù)地址或是地址的一部分也可以是操作數(shù)地址或是地址的一部分,還還可以是指向操作數(shù)地址的指針或其它有關(guān)操作數(shù)的信息可以是指向操作數(shù)地址的指針或其它有關(guān)操作數(shù)的信息。操作碼操作碼操作數(shù)操作數(shù) 指令舉例:指令舉例: 尋址方式就是指令中用于說明操作數(shù)所在地址的方尋址方式就是指令中用于說明操作數(shù)所在地址的方法法,或者說是尋找操作數(shù)有效地址的方法或者說是尋找操作數(shù)有效地址的方法。尋址方式一尋址方式一般是針對源操作數(shù)而言的般是針對源操作數(shù)而言的。在在8086/8088系統(tǒng)中系統(tǒng)中,一般一般將尋址方式分為兩種不同的類型將尋址方式分
3、為兩種不同的類型,一類是尋找操作數(shù)的一類是尋找操作數(shù)的地址地址,另一類是尋找要執(zhí)行的下一條指令的地址另一類是尋找要執(zhí)行的下一條指令的地址,即程即程序的地址序的地址。 80868088的基本尋址方式有六種的基本尋址方式有六種,下面我們來面我們來討論這六種尋址方式討論這六種尋址方式。ADD CL,BH ; CLCLBH 所提供的操作數(shù)直接包含在指令中所提供的操作數(shù)直接包含在指令中,這種尋址方式這種尋址方式就叫立即尋址就叫立即尋址,這個操作數(shù)叫立即數(shù)這個操作數(shù)叫立即數(shù)。所謂立即數(shù)是指所謂立即數(shù)是指具有固定數(shù)值的操作數(shù)具有固定數(shù)值的操作數(shù),即常數(shù)即常數(shù)。它緊跟在操作碼的后它緊跟在操作碼的后面面,與操作
4、碼一起放在代碼段區(qū)域中與操作碼一起放在代碼段區(qū)域中。如圖如圖4-1所示所示。 例如例如:4.1.1 立即尋址立即尋址MOV AX,2345H ; AX2345H 立即數(shù)若是立即數(shù)若是8位的位的,可以是無符號數(shù)可以是無符號數(shù),取值范圍是取值范圍是00H-0FFH,也可以是帶符號數(shù)也可以是帶符號數(shù),取值范圍是取值范圍是80H-7FH。立即數(shù)若是立即數(shù)若是16位的位的,可以是無符號數(shù)可以是無符號數(shù),取值范圍是取值范圍是0000H-0FFFFH,也可以是帶符號數(shù)也可以是帶符號數(shù),取值范圍是取值范圍是8000H-7FFFFH。若是若是16位的位的,則存儲時低位在前則存儲時低位在前,高高位在后位在后。在指
5、令中在指令中,立即數(shù)操作數(shù)只能作源操作數(shù)立即數(shù)操作數(shù)只能作源操作數(shù),而而不能作目的操作數(shù)不能作目的操作數(shù)。 立即尋址主要用來給寄存器或存儲單元賦初值立即尋址主要用來給寄存器或存儲單元賦初值。 操作數(shù)地址的操作數(shù)地址的16位偏移量直接包含在指令中位偏移量直接包含在指令中,所以所以這種尋址方式叫直接尋址這種尋址方式叫直接尋址。16位偏移量與操作碼一起存位偏移量與操作碼一起存放在代碼段區(qū)域放在代碼段區(qū)域,操作數(shù)一般在數(shù)據(jù)段區(qū)域中操作數(shù)一般在數(shù)據(jù)段區(qū)域中,它的地它的地址為數(shù)據(jù)段寄存器址為數(shù)據(jù)段寄存器DS加上這加上這16位地址偏移量位地址偏移量。如圖如圖4-2所示所示。 例如例如: MOV AX,DS:
6、 3000H ;AX(DS:3000H) 4.1.2 直接尋址直接尋址 設設DS = 1000H。直接尋址方式如圖所示直接尋址方式如圖所示。 (對對DS來講可以省略成來講可以省略成 MOV AX,3000H,系統(tǒng)系統(tǒng)默認為數(shù)據(jù)段默認為數(shù)據(jù)段) 這種尋址方式是以數(shù)據(jù)段的地址為基礎這種尋址方式是以數(shù)據(jù)段的地址為基礎,可在多達可在多達64KB的范圍內(nèi)尋找操作數(shù)的范圍內(nèi)尋找操作數(shù)。 這種尋址方式允許段超越這種尋址方式允許段超越,即還允許操作數(shù)在以代碼即還允許操作數(shù)在以代碼段段、堆棧段或附加段為基準的區(qū)域中堆棧段或附加段為基準的區(qū)域中。此時只要在指令中此時只要在指令中指明是段超越的指明是段超越的,則則1
7、6位地址偏移量可以與位地址偏移量可以與CS或或SS或或ES相加相加,作為操作數(shù)的地址作為操作數(shù)的地址。 MOV AX,2000H ;數(shù)據(jù)段數(shù)據(jù)段 MOV BX,ES:3000H ;段超越段超越,操作數(shù)在附加段操作數(shù)在附加段 即絕對地址即絕對地址(ES) 163000H 操作數(shù)包含在操作數(shù)包含在CPU的內(nèi)部寄存器中,所以這種尋址方的內(nèi)部寄存器中,所以這種尋址方式叫寄存器尋址。它們可以是數(shù)據(jù)寄存器(式叫寄存器尋址。它們可以是數(shù)據(jù)寄存器(8位或位或16位),位),也可以是地址指針寄存器、變址寄存器或段寄存器,如寄也可以是地址指針寄存器、變址寄存器或段寄存器,如寄存器存器AX、BX、CX、DX、SI等
8、。如圖等。如圖4-3所示。所示。 例如:例如:4.1.3寄存器尋址寄存器尋址MOV BX,AX ;BXAXMOV AL,BH ;ALBH 操作數(shù)是在存儲器中,但是,操作數(shù)地址的操作數(shù)是在存儲器中,但是,操作數(shù)地址的16位偏移位偏移量包含在以下四個寄存器量包含在以下四個寄存器SI、DI、BP、BX之一中,所以之一中,所以這種尋址方式叫寄存器間接尋址??梢苑殖蓛煞N情況:這種尋址方式叫寄存器間接尋址??梢苑殖蓛煞N情況: 1) 以以SI、DI、BX間接尋址,則通常操作數(shù)在現(xiàn)行數(shù)間接尋址,則通常操作數(shù)在現(xiàn)行數(shù)據(jù)段區(qū)域中,即數(shù)據(jù)段寄存器據(jù)段區(qū)域中,即數(shù)據(jù)段寄存器(DS)16(或或10H)加上加上SI、DI
9、、BX中的中的16位偏移量,為操作數(shù)的地址,如圖位偏移量,為操作數(shù)的地址,如圖4-4所示。所示。4.1.4寄存器間接尋址寄存器間接尋址例如例如: MOV AX,SI ; 操作數(shù)地址是:操作數(shù)地址是:(DSDS)1616(SISI) 2) 以寄存器以寄存器BP間接尋址,則操作數(shù)在堆棧段區(qū)域中。即間接尋址,則操作數(shù)在堆棧段區(qū)域中。即堆棧段寄存器堆棧段寄存器(SS)16與與BP的內(nèi)容相加作為操作數(shù)的地址。的內(nèi)容相加作為操作數(shù)的地址。例如:例如: MOV AX,BP ; 操作數(shù)地址是:操作數(shù)地址是:(SSSS)1616(BPBP) 若在指令中規(guī)定是段超越的,則若在指令中規(guī)定是段超越的,則BP的內(nèi)容也可
10、以與其它的內(nèi)容也可以與其它的段寄存器相加,形成操作數(shù)地址。的段寄存器相加,形成操作數(shù)地址。例如:例如: MOV AX,DS:BP ;操作數(shù)地址是:操作數(shù)地址是:(DSDS)1616(BPBP) 由指定的寄存器內(nèi)容,加上指令中給出由指定的寄存器內(nèi)容,加上指令中給出8位或位或16位的位的偏移量(當然要由一個段寄存器作為基地址)作為操作數(shù)偏移量(當然要由一個段寄存器作為基地址)作為操作數(shù)的偏移地址,稱為變址尋址。(操作數(shù)在存儲器中)的偏移地址,稱為變址尋址。(操作數(shù)在存儲器中)可以作為變址尋址的四個寄存器是可以作為變址尋址的四個寄存器是SI、DI、BX、BP。 1) 若用若用SI、DI和和BX作為變
11、址,則與數(shù)據(jù)段寄存器相作為變址,則與數(shù)據(jù)段寄存器相加,形成操作數(shù)的地址默認在數(shù)據(jù)段。加,形成操作數(shù)的地址默認在數(shù)據(jù)段。 2) 若用若用BPBP變址,則與堆棧段寄存器相加,形成操作變址,則與堆棧段寄存器相加,形成操作數(shù)的地址默認在堆棧段。數(shù)的地址默認在堆棧段。例如:例如: MOV AXMOV AX,DATABX DATABX ;指令的執(zhí)行過程如圖指令的執(zhí)行過程如圖4-54-5所示所示 操作數(shù)地址是:操作數(shù)地址是:(DSDS) 16 16(BXBX)DATADATA 假設(假設(DSDS)= 4000H= 4000H,(,(BXBX)= 2000H= 2000H, DATA= 0020HDATA=
12、 0020H 則物理地址則物理地址= = 4000H4000H10H10H2000H2000H0020H= 42020H0020H= 42020H4.1.5變址尋址變址尋址( (又稱為寄存器相對尋址又稱為寄存器相對尋址) ) 但是,只要在指令中指定是段超越的,則可以用別但是,只要在指令中指定是段超越的,則可以用別的段寄存器作為基地址。的段寄存器作為基地址。 在匯編語言中,變址尋址指令的書寫格式允許有幾在匯編語言中,變址尋址指令的書寫格式允許有幾種不同的形式。以下幾種寫法實質(zhì)上是完全等價的:種不同的形式。以下幾種寫法實質(zhì)上是完全等價的: MOV AH , DATABXMOV AH , DATAB
13、X MOV AH , BXDATA MOV AH , BXDATA MOV AH , DATA+BX MOV AH , DATA+BX MOV AH , BX+DATA MOV AH , BX+DATA MOV AH , DATA+BX MOV AH , DATA+BX MOV AH , BX+DATA MOV AH , BX+DATA 另外,在有的教科書中,若指定的寄存器是另外,在有的教科書中,若指定的寄存器是BX,BP又稱為基址尋址方式。又稱為基址尋址方式。 把把BX(數(shù)據(jù)段)和(數(shù)據(jù)段)和BP(堆棧段)看成是基址寄存器,(堆棧段)看成是基址寄存器,把把SI、DI看著是變址寄存器,看著是變
14、址寄存器,把一個基址寄存器(把一個基址寄存器(BX或或BP)的內(nèi)容加上一個變址寄存器(的內(nèi)容加上一個變址寄存器(SI或或DI)的內(nèi)容,再加上指)的內(nèi)容,再加上指令中指定的令中指定的8位或位或16位偏移量(當然要以一個段寄存器作為位偏移量(當然要以一個段寄存器作為地址基準)作為操作數(shù)的偏移地址,稱為基址加變址尋址。地址基準)作為操作數(shù)的偏移地址,稱為基址加變址尋址。4.1.6 基址加變址尋基址加變址尋址址 操作數(shù)在存貯器中,其偏移地址由操作數(shù)在存貯器中,其偏移地址由(基址寄存器)(基址寄存器)(變址寄存器)相對偏移量(變址寄存器)相對偏移量形成。形成。 例如:例如: MOV AXMOV AX,B
15、XSIDATA BXSIDATA 或或 MOV AXMOV AX,BXBXSIDATASIDATA 操作數(shù)地址是:操作數(shù)地址是:(DSDS)1616(BXBX)()(SISI)DATADATA 假設(假設(DSDS)= 4000H= 4000H,(,(BXBX)= 2000H= 2000H,(,(SISI)= = 2000H2000H,DATA=0100HDATA=0100H 則物理地址則物理地址=4000H=4000H10H10H2000H2000H2000H2000H0100H = 0100H = 44100H44100H 指令的執(zhí)行過程如圖指令的執(zhí)行過程如圖4-6所示所示 與變址尋址方式
16、類似,基址加變址尋址指令同樣也與變址尋址方式類似,基址加變址尋址指令同樣也可以表示成多種形式,例如,以下幾種寫法實質(zhì)上是完可以表示成多種形式,例如,以下幾種寫法實質(zhì)上是完全等價的:全等價的: MOV AX , DATABXSIMOV AX , DATABXSI MOV AX , BX+DATASI MOV AX , BX+DATASI MOV AX , DATA+BX+SI MOV AX , DATA+BX+SI MOV AX , BX DATASI MOV AX , BX DATASI MOV AX , DATASI+BX MOV AX , DATASI+BX MOV AX , BXSI+D
17、ATA MOV AX , BXSI+DATA 使用基址加變址尋址時要注意,指令中不允許同時使用基址加變址尋址時要注意,指令中不允許同時出現(xiàn)兩個基址寄存器或兩個變址寄存器,例如,以下指出現(xiàn)兩個基址寄存器或兩個變址寄存器,例如,以下指令是非法的:令是非法的: MOV AX , DATASIDIMOV AX , DATASIDI MOV AX , BX+DATABP MOV AX , BX+DATABP 另外,在有的教科書中,另外,在有的教科書中,若若DATA為為0,則稱為基址,則稱為基址變址尋址方式變址尋址方式;若若DATA不為不為0,則稱為基址變址相對尋,則稱為基址變址相對尋址方式址方式?;纷?/p>
18、址相對尋址方式實為基址變址尋址方式。基址變址相對尋址方式實為基址變址尋址方式的擴充。的擴充。 若用若用BX作為基地址,則操作數(shù)在數(shù)據(jù)段區(qū)域。作為基地址,則操作數(shù)在數(shù)據(jù)段區(qū)域。 若用若用BP作為基地址,則操作數(shù)在堆棧段區(qū)域。作為基地址,則操作數(shù)在堆棧段區(qū)域。 但若在指令中規(guī)定是段超越的,則可用其它段寄存但若在指令中規(guī)定是段超越的,則可用其它段寄存器作為基地址。表器作為基地址。表4-14-1是段寄存器使用的基本約定。是段寄存器使用的基本約定。訪問存儲器類型訪問存儲器類型默認默認段寄存器段寄存器可指定可指定段寄存器段寄存器段內(nèi)段內(nèi)偏移地址來源偏移地址來源取指令碼取指令碼CS無無IP堆棧操作堆棧操作S
19、S無無SP串操作源地址串操作源地址DSCS、ES、SSSI串操作目的地址串操作目的地址ES無無DIBP用作基址寄存器用作基址寄存器SSCS、DS、ES 根據(jù)尋址方式求得有根據(jù)尋址方式求得有效地址效地址一般數(shù)據(jù)存取一般數(shù)據(jù)存取DSCS、ES、SS 根據(jù)尋址方式求得有根據(jù)尋址方式求得有效地址效地址表表4 - 1 段寄存器使用的基本約定段寄存器使用的基本約定 圖圖4 7 不同字長的指令格式不同字長的指令格式4.1.74.1.7指令格式及指令執(zhí)行時間指令格式及指令執(zhí)行時間1、指令格式指令格式 不同字長的指令格式如圖不同字長的指令格式如圖4-7所示所示 取指令,取操作數(shù),執(zhí)行指令及傳送結(jié)果所需時間取指令
20、,取操作數(shù),執(zhí)行指令及傳送結(jié)果所需時間的總和。的總和。2、指令執(zhí)行時間指令執(zhí)行時間返回本章目錄返回本章目錄 控制計算機完成指定操作的命令稱為指令。不同的控制計算機完成指定操作的命令稱為指令。不同的計算機具有各自不同的指令,其所有指令的集合,就稱計算機具有各自不同的指令,其所有指令的集合,就稱為該計算機的為該計算機的指令系統(tǒng)指令系統(tǒng)。指令系統(tǒng)不僅定義了計算機所。指令系統(tǒng)不僅定義了計算機所能執(zhí)行的指令的集合,還定義了使用這些指令的規(guī)則。能執(zhí)行的指令的集合,還定義了使用這些指令的規(guī)則。因此在使用匯編語言編寫程序時,必須要對機器的指令因此在使用匯編語言編寫程序時,必須要對機器的指令系統(tǒng)非常了解。系統(tǒng)非
21、常了解。 對指令系統(tǒng)來說,對指令系統(tǒng)來說,8086和和8088是完全相同的,因是完全相同的,因此,本章將這兩種此,本章將這兩種CPU統(tǒng)稱為統(tǒng)稱為8086。4.2 Intel 80 x864.2 Intel 80 x86指令系統(tǒng)指令系統(tǒng) 在介紹各種指令之前,先介紹一下本節(jié)中要用到的在介紹各種指令之前,先介紹一下本節(jié)中要用到的一些符號。一些符號。 OPRD指各種類型的操作數(shù)指各種類型的操作數(shù) DATA8位或位或16位操作數(shù)位操作數(shù) PROC過程或子程序的符號地址過程或子程序的符號地址 LABLE符號地址符號地址 n 輸入輸入/輸出端口地址輸出端口地址 mem存儲器操作數(shù)存儲器操作數(shù) ( )表示寄存
22、器的內(nèi)容表示寄存器的內(nèi)容 表示存儲單元的內(nèi)容表示存儲單元的內(nèi)容 8086/8088 CPU的指令系統(tǒng)共包含的指令系統(tǒng)共包含92種基本指令,種基本指令,按照功能可以分為以下六個功能組。按照功能可以分為以下六個功能組。 1) 數(shù)據(jù)傳送指令數(shù)據(jù)傳送指令 (Data Transter) 2) 算術(shù)運算指令算術(shù)運算指令 (Arithmetic) 3) 邏輯運算指令邏輯運算指令 (Logic) 4) 串操作指令串操作指令 (String Menipulation) 5) 程序控制指令程序控制指令 (Program Control) 6) 處理器控制指令處理器控制指令 (Processor Control)
23、 傳送類指令的最大特點是:傳送類指令的最大特點是:絕大多數(shù)指令執(zhí)行后不絕大多數(shù)指令執(zhí)行后不影響標志寄存器影響標志寄存器FLAGS(除標志寄存器傳送指令外)。(除標志寄存器傳送指令外)。傳送類指令按功能分為傳送類指令按功能分為4小類:小類:通用數(shù)據(jù)傳送指令通用數(shù)據(jù)傳送指令、目標目標地址傳送指令地址傳送指令、標志寄存器傳送指令標志寄存器傳送指令和和輸入輸出指令輸入輸出指令。4.2.1 數(shù)據(jù)傳送指令數(shù)據(jù)傳送指令 (1)一般傳送指令)一般傳送指令 MOV 一般格式:一般格式:MOV OPRD1,OPRD2 MOV 是操作碼,是操作碼,OPRD1和和OPRD2分別是目的操作分別是目的操作數(shù)和源操作數(shù)。數(shù)
24、和源操作數(shù)。 功能:功能:完成數(shù)據(jù)傳送,即將一個操作數(shù)從源地址傳完成數(shù)據(jù)傳送,即將一個操作數(shù)從源地址傳送到目標地址,而源地址中的操作數(shù)不變。傳送的操作送到目標地址,而源地址中的操作數(shù)不變。傳送的操作數(shù)可以是數(shù)可以是8位也可以是位也可以是16位。位。1通用數(shù)據(jù)傳送指令通用數(shù)據(jù)傳送指令 使用使用MOV 指令應注意幾個問題:指令應注意幾個問題: 1)一般一般CS和和IP的內(nèi)容不通過的內(nèi)容不通過MOV指令進行修改,它指令進行修改,它們只能作為源操作數(shù)。們只能作為源操作數(shù)。 2)兩個存儲器操作數(shù)之間不允許直接進行信息傳送,兩個存儲器操作數(shù)之間不允許直接進行信息傳送,但可以用但可以用CPU內(nèi)部寄存器為橋梁
25、來完成這樣的傳送。內(nèi)部寄存器為橋梁來完成這樣的傳送。如:如:MOV AX,SI; MOV BX,AX;借助借助AX完成傳送完成傳送 3)兩個段寄存器之間不能直接傳送信息。兩個段寄存器之間不能直接傳送信息。如:如:MOVAX,DS; MOVES,AX;借助借助AX完成傳送完成傳送 4)目的操作數(shù),不能用立即尋址方式。目的操作數(shù),不能用立即尋址方式。 5)不允許用立即尋址方式為段寄存器賦初值。不允許用立即尋址方式為段寄存器賦初值。如:如:MOVAX,DATA; MOVDS,AX ;借助借助AX完成傳送完成傳送具體來說,傳送指令可以實現(xiàn)以下各種傳送:具體來說,傳送指令可以實現(xiàn)以下各種傳送:寄存器之間
26、的傳送寄存器之間的傳送MOV BL,AL;字節(jié)傳送字節(jié)傳送MOV AX,BX;字傳送字傳送MOV DS,BX;字傳送字傳送MOV AX,CS;字傳送字傳送寄存器與存儲器之間的傳送寄存器與存儲器之間的傳送MOV AL,BUFMOV AX,SIMOV SI,DATABPMOV DS,DATASI+BXMOV DI,CXMOV DATABP+DI,ES立即數(shù)到寄存器的傳送立即數(shù)到寄存器的傳送MOV CL, 0FFH ; 將立即數(shù)將立即數(shù)0FFH送送CLMOV AX,0345H; 將立即數(shù)將立即數(shù)0345H送送AX,即即(AH)= 03H,(AL)= 45H。立即數(shù)到存儲器的傳送立即數(shù)到存儲器的傳送M
27、OV 2000H,1122H; 將立即數(shù)將立即數(shù)1122H送偏移地址為送偏移地址為 2000H和和2001H兩個存儲單元,兩個存儲單元, 低低8位送低地址單元,高位送低地址單元,高8位送高位送高 地址單元。地址單元。MOV SI,33H ; 將立即數(shù)將立即數(shù)33H送偏移地址為送偏移地址為 (SI)的存儲單元。的存儲單元。 (2)堆棧指令)堆棧指令 堆棧是人為定義的一塊連續(xù)的存儲堆棧是人為定義的一塊連續(xù)的存儲空間,用來暫存數(shù)據(jù),這些數(shù)據(jù)是按空間,用來暫存數(shù)據(jù),這些數(shù)據(jù)是按“先進后出,后進先進后出,后進先出先出”的原則存取的。堆棧指針的原則存取的。堆棧指針SP存放棧頂?shù)挠行У刂?。存放棧頂?shù)挠行У刂?/p>
28、。8086的堆棧是棧頂為低地址,棧底為高地址。的堆棧是棧頂為低地址,棧底為高地址。 堆棧指令包括堆棧指令包括進棧進棧(PUSH)和和出棧出棧(POP)指令指令兩類,且僅能進行字運算。(操作數(shù)不能是立即數(shù))兩類,且僅能進行字運算。(操作數(shù)不能是立即數(shù)) 1)進棧指令進棧指令PUSH 一般格式:一般格式:PUSH OPRD 源操作數(shù)可以是源操作數(shù)可以是CPU內(nèi)部的內(nèi)部的16位通用寄存器、段寄存位通用寄存器、段寄存器(器(CS除外)和內(nèi)存操作數(shù)(所有尋址方式)。進棧的除外)和內(nèi)存操作數(shù)(所有尋址方式)。進棧的操作對象必須是操作對象必須是16位數(shù)。位數(shù)。 功能:功能:將數(shù)據(jù)壓入堆棧將數(shù)據(jù)壓入堆棧 執(zhí)行
29、過程為:執(zhí)行過程為:操作數(shù)高操作數(shù)高8位位(SP)-1; 操作數(shù)低操作數(shù)低8位位(SP)-2; (SP)-2 (SP); 例如:例如:PUSH AX;設設(AX)=2233H 執(zhí)行過程為執(zhí)行過程為:(SP)-1(SP), (AH)SP,(SP)-1(SP), (AL)SP,PUSH AX指令執(zhí)指令執(zhí)行前后堆棧區(qū)的情況如圖行前后堆棧區(qū)的情況如圖4-8所示。所示。 圖圖4 - 9 POP BX 指令執(zhí)行指令執(zhí)行示意圖示意圖行示意圖行示意圖圖圖4 - 8 PUSH AX 指令執(zhí)指令執(zhí) 2)出棧指令出棧指令POP 一般格式:一般格式:POP OPRD 功能:功能:將數(shù)據(jù)彈出堆棧將數(shù)據(jù)彈出堆棧 執(zhí)行過程
30、為執(zhí)行過程為:SP 操作數(shù)低操作數(shù)低8位;位; (SP)+1 操作數(shù)高操作數(shù)高8位;位; (SP)+2 (SP); 例如:例如:POP BX;(BX)=2211H,則則POP BX指令指令執(zhí)行前后堆棧區(qū)的情況如圖執(zhí)行前后堆棧區(qū)的情況如圖4-9所示。所示。 在程序中,在程序中,PUSH和和POP指令一般是成對出現(xiàn),且執(zhí)指令一般是成對出現(xiàn),且執(zhí)行順序相反。行順序相反。 一般堆棧是在響應中斷或子程序調(diào)用時保護斷點地址一般堆棧是在響應中斷或子程序調(diào)用時保護斷點地址和現(xiàn)場,還可以在需要時保存一些寄存器的內(nèi)容。和現(xiàn)場,還可以在需要時保存一些寄存器的內(nèi)容。 例如:例如:PUSH AX;保護寄存器的內(nèi)容保護寄
31、存器的內(nèi)容 PUSH DX;保護寄存器的內(nèi)容保護寄存器的內(nèi)容 POP DX;恢復寄存器的內(nèi)容恢復寄存器的內(nèi)容 POP AX;恢復寄存器的內(nèi)容恢復寄存器的內(nèi)容 (3)交換指令交換指令XCHG 一般格式:一般格式:XCHG OPRD1,OPRD2 功能:功能:完成數(shù)據(jù)交換,把一個字節(jié)或一個字的源操作完成數(shù)據(jù)交換,把一個字節(jié)或一個字的源操作數(shù)與目的操作數(shù)相交換。數(shù)與目的操作數(shù)相交換。 交換指令對操作數(shù)有如下要求:交換指令對操作數(shù)有如下要求: 源操作數(shù)和目的操作數(shù)可以是寄存器或存儲器,但不源操作數(shù)和目的操作數(shù)可以是寄存器或存儲器,但不能同時為存儲器??梢栽诩拇嫫髦g、寄存器與存儲器之能同時為存儲器。可
32、以在寄存器之間、寄存器與存儲器之間進行交換,但段寄存器和立即數(shù)不能作為一個操作數(shù),間進行交換,但段寄存器和立即數(shù)不能作為一個操作數(shù),不能在累加器之間進行交換。兩個操作數(shù)字長必須相同。不能在累加器之間進行交換。兩個操作數(shù)字長必須相同。 例如:例如: XCHG AL,CL;(AL)(CL),字節(jié)交換字節(jié)交換 XCHG AX,BX;(AX)(BX),字交換字交換 XCHG AX,SI;(AX)SI,字交換,字交換 (4)查表指令查表指令 一般格式一般格式:XLAT TABLE;TABLE是要查找的表首是要查找的表首地址。地址。 或或 XLAT;(AL)(DX)16(BX)+(AL) 功能:功能:完成
33、一個字節(jié)的查表轉(zhuǎn)換。完成一個字節(jié)的查表轉(zhuǎn)換。 說明:說明:該指令只查找字節(jié)表,表的首地址的偏移地該指令只查找字節(jié)表,表的首地址的偏移地址送址送BX,要查找的字節(jié)相對于表首地址的位移量送寄存要查找的字節(jié)相對于表首地址的位移量送寄存器器AL(AL內(nèi)容即為要查找字節(jié)在表中的序號,因此表的內(nèi)容即為要查找字節(jié)在表中的序號,因此表的長度為長度為256),指令執(zhí)行后的結(jié)果存放在指令執(zhí)行后的結(jié)果存放在AL中。中。 本指令可用在數(shù)制轉(zhuǎn)換、函數(shù)表查表、代碼轉(zhuǎn)換等本指令可用在數(shù)制轉(zhuǎn)換、函數(shù)表查表、代碼轉(zhuǎn)換等場合。場合。 例如:例如:MOV BX,OFFSET TABLE ;取表首地址;取表首地址 MOV AL,5
34、;偏移量;偏移量 XLAT ;查表;查表 ,ALBX+AL 所用表如圖所用表如圖4-10所示。所示。 輸入輸出輸入輸出(I/O)指令是專門針對輸入輸出端口進行讀寫指令是專門針對輸入輸出端口進行讀寫的指令,共有兩條的指令,共有兩條IN和和OUT。輸入指令用于從。輸入指令用于從I/O端口讀數(shù)端口讀數(shù)據(jù)到據(jù)到AX或或AL中,輸出指令用于把中,輸出指令用于把AX或或AL的內(nèi)容寫到的內(nèi)容寫到I/O端端口中。口中。 (1)輸入指令輸入指令IN 一般格式:一般格式: IN AL,port ;輸入一個字節(jié),;輸入一個字節(jié),port為為8位端口地址。位端口地址。 IN AX,port ;輸入一個字,;輸入一個字
35、,port為為8位端口地址。位端口地址。 IN AL,DX ;輸入一個字節(jié),;輸入一個字節(jié),DX的內(nèi)容為的內(nèi)容為16位端口地址。位端口地址。 IN AX,DX ;輸入一個字,;輸入一個字,DX的內(nèi)容為的內(nèi)容為16位端口地址。位端口地址。2輸入輸出輸入輸出(I/O)指令指令 功能:功能:從從I/O端口輸入數(shù)據(jù)至端口輸入數(shù)據(jù)至AL或或AX。 輸入指令允許把一個字節(jié)或一個字由一個輸入端口傳輸入指令允許把一個字節(jié)或一個字由一個輸入端口傳送到送到AL或或AX中。若端口地址不超過中。若端口地址不超過255時,為直接尋址方時,為直接尋址方式;若端口地址超過式;若端口地址超過255時,則必須用時,則必須用DX
36、保存端口地址,保存端口地址,為間接尋址方式,這樣用為間接尋址方式,這樣用DX作端口尋址最多可尋找作端口尋址最多可尋找64K個個端口。端口。 例如:例如: MOV DX ,0A40H ;將;將16位端口地址送位端口地址送DX IN AL,DX ;從地址;從地址0A40H的端口輸入一個字節(jié)到的端口輸入一個字節(jié)到AL (2)輸出指令輸出指令OUT 一般格式:一般格式: OUT port,AL ;輸出一個字節(jié),;輸出一個字節(jié),port為為8位端口地址。位端口地址。 OUT port,AX ;輸出一個字,;輸出一個字,port為為8位端口地址。位端口地址。 OUT DX,AL ;輸出一個字節(jié),;輸出一個
37、字節(jié),DX的內(nèi)容為的內(nèi)容為16位端口位端口地址。地址。OUT DX,AX ;輸出一個字,;輸出一個字,DX的內(nèi)容為的內(nèi)容為16位端口地位端口地址。址。 功能:功能:將將AL或或AX的內(nèi)容輸出至的內(nèi)容輸出至I/O端口。端口。該指令將該指令將AL或或AX中的內(nèi)容傳送到一個輸出端口。端口中的內(nèi)容傳送到一個輸出端口。端口尋址方式與尋址方式與IN指令相同。指令相同。 例如:例如: MOV DX ,0A40H ;將;將16位端口地址送位端口地址送DX OUT DX ,AX ;把;把AX的內(nèi)容從地址的內(nèi)容從地址0A40H的端口輸出的端口輸出 8086/8088提供了三條把地址指針寫入寄存器或寄存提供了三條把
38、地址指針寫入寄存器或寄存器對的指令。器對的指令。 (1)取偏移地址指令取偏移地址指令LEA 一般格式:一般格式: LEA OPRD1,OPRD2 功能:功能:把源操作數(shù)把源操作數(shù)OPRD2的地址偏移量傳送至目的的地址偏移量傳送至目的操作數(shù)操作數(shù)OPRD1。3地址傳送指令地址傳送指令 源操作數(shù)必須是一個存儲器操作數(shù),目的操作數(shù)必須源操作數(shù)必須是一個存儲器操作數(shù),目的操作數(shù)必須是一個是一個16位的寄存器。這條指令通常用來建立串操作指位的寄存器。這條指令通常用來建立串操作指令所需的地址指針。令所需的地址指針。 例:例: LEA BX,BUFFER ;把;把BUFFER的偏移地址送的偏移地址送BX M
39、OV BX,BUFFER ;把存儲器;把存儲器BUFFER的內(nèi)容送的內(nèi)容送BX 下面兩條指令完全等價:下面兩條指令完全等價: LEA BX,BUFFER MOV BX,OFFSET BUFFER; 其中其中OFFSET BUFFER表示存儲器表示存儲器BUFFER的偏移的偏移地址。地址。 (2)地址指針裝入指令指令地址指針裝入指令指令LDS 一般格式:一般格式:LDS OPRD1,OPRD2 功能:功能:完成一個完成一個32位地址的傳送。地址指針包括段基位地址的傳送。地址指針包括段基址部分和偏移地址部分。指令將段基址送入址部分和偏移地址部分。指令將段基址送入DS,偏移地,偏移地址部分送入一個址
40、部分送入一個16位的指針寄存器或變址寄存器。位的指針寄存器或變址寄存器。 源操作數(shù)是一個存儲器操作數(shù),目的操作數(shù)是一個指源操作數(shù)是一個存儲器操作數(shù),目的操作數(shù)是一個指針寄存器或變址寄存器。針寄存器或變址寄存器。 例如:例如:LDS SI,100H ;將把偏移地址;將把偏移地址100H到到103H所指向的所指向的4個存儲單元的前兩個單元的內(nèi)容送個存儲單元的前兩個單元的內(nèi)容送SI,后兩個單元的內(nèi)容送后兩個單元的內(nèi)容送DS。 設設(DS)= 0B000H,(0B0100H)=10H,(0B0101H)=20H,(0B0102H)=30H,(0B0103H)=40H,則執(zhí)行上述指令后則執(zhí)行上述指令后(
41、SI)= 2010H,(DS)= 4030H。 (3)LES指令指令 一般格式:一般格式: LES OPRD1,OPRD2 這條指令除將地址指針的段基址部分送入這條指令除將地址指針的段基址部分送入ES外,其外,其它與它與LDS類似。類似。 例如:例如: LES DI,BX+DATA 標志傳送指令共標志傳送指令共4條,指令的操作數(shù)以隱含形式規(guī)定條,指令的操作數(shù)以隱含形式規(guī)定(隱含的操作數(shù)是(隱含的操作數(shù)是AH)。)。 (1)取標志指令取標志指令LAHF 一般格式:一般格式:LAHF 功能:功能:將標志寄存器中的將標志寄存器中的SF、ZF、AF、PF和和CF(即低(即低8位)分別傳送至位)分別傳送
42、至AH寄存器的指定位,寄存器的指定位,LAHF指令指令對狀態(tài)標志位無影響。如圖對狀態(tài)標志位無影響。如圖4-11所示。所示。4標志傳送指令標志傳送指令 (2)置標志指令置標志指令SAHF 一般格式:一般格式:SAHF 功能:功能:將寄存器將寄存器AH的指定位,分別送至標志寄存器的的指定位,分別送至標志寄存器的SF、ZF、AF、PF和和CF位(即低位(即低8位)。根據(jù)位)。根據(jù)AH的內(nèi)容,的內(nèi)容,影響上述標志位,對影響上述標志位,對OF、DF、IF和和TF無影響。無影響。 (3)標志壓入堆棧指令標志壓入堆棧指令 一般格式:一般格式:PUSHF 功能:功能:先將堆棧指針減先將堆棧指針減2,同時將標志
43、寄存器,同時將標志寄存器FLAGS的內(nèi)容(的內(nèi)容(16位)壓入堆棧,不影響標志位。位)壓入堆棧,不影響標志位。 (4)標志彈出堆棧指令標志彈出堆棧指令 一般格式:一般格式:POPF 功能:功能:將堆棧頂部的一個字,傳送到標志寄存器將堆棧頂部的一個字,傳送到標志寄存器FLAGS,同時堆棧指針加,同時堆棧指針加2,影響標志位。,影響標志位。 表表4-2列出了數(shù)據(jù)傳送類指令列出了數(shù)據(jù)傳送類指令 的功能與格式。的功能與格式。表表4-2 數(shù)據(jù)傳送類指令數(shù)據(jù)傳送類指令 8088提供了二進制的加、減、乘、除四種基本算術(shù)運提供了二進制的加、減、乘、除四種基本算術(shù)運算指令。這些操作都可用于字節(jié)或字的運算,也可以
44、用于算指令。這些操作都可用于字節(jié)或字的運算,也可以用于帶符號數(shù)(帶符號數(shù)用補碼表示)與無符號數(shù)的運算。同帶符號數(shù)(帶符號數(shù)用補碼表示)與無符號數(shù)的運算。同時時8088還提供了與之對應的四類十進制調(diào)整指令,故可還提供了與之對應的四類十進制調(diào)整指令,故可以進行十進制的算術(shù)運算。以進行十進制的算術(shù)運算。 說明:說明:算術(shù)運算指令有單操作數(shù)和雙操作數(shù)兩種,其算術(shù)運算指令有單操作數(shù)和雙操作數(shù)兩種,其中單操作數(shù)不能是立即數(shù),而雙操作數(shù)指令中,立即數(shù)只中單操作數(shù)不能是立即數(shù),而雙操作數(shù)指令中,立即數(shù)只能作為源操作數(shù),另外,源操作數(shù)和目的操作數(shù)不能同時能作為源操作數(shù),另外,源操作數(shù)和目的操作數(shù)不能同時為存儲器
45、。為存儲器。 算術(shù)運算指令大多會對標志位產(chǎn)生影響。下面分別介算術(shù)運算指令大多會對標志位產(chǎn)生影響。下面分別介紹這四種指令。紹這四種指令。4.2.2算術(shù)運算指令算術(shù)運算指令 (1)不帶進位的加法指令不帶進位的加法指令ADD 一般形式:一般形式:ADD OPRD1,OPRD2 功能:功能:OPRD1OPRD1+OPRD2 完成兩個字節(jié)或字操作數(shù)相加,結(jié)果送至目的操作數(shù)完成兩個字節(jié)或字操作數(shù)相加,結(jié)果送至目的操作數(shù)OPRD1。1加法運算指令加法運算指令 源操作數(shù)和目的操作數(shù)可以是寄存器以及存儲器操作源操作數(shù)和目的操作數(shù)可以是寄存器以及存儲器操作數(shù),源操作數(shù)還可以是立即數(shù);可以是無符號數(shù),也可以數(shù),源操
46、作數(shù)還可以是立即數(shù);可以是無符號數(shù),也可以是帶符號數(shù)。但源操作數(shù)和目的操作數(shù)不能同時為存儲器是帶符號數(shù)。但源操作數(shù)和目的操作數(shù)不能同時為存儲器操作數(shù),也不能對段寄存器進行運算。操作數(shù),也不能對段寄存器進行運算。 這條指令對標志位這條指令對標志位SF、ZF、AF、PF、CF和和OF有影有影響。響。 例如:例如: ADD AL,20 ;累加器;累加器AL與立即數(shù)相加與立即數(shù)相加 ADD BX,3000H ;寄存器與存儲單元內(nèi)容相加;寄存器與存儲單元內(nèi)容相加 ADD AX,SI ;寄存器之間相加;寄存器之間相加 ADD DATABX+SI,DX ;16位存儲器操作數(shù)與寄存器位存儲器操作數(shù)與寄存器 內(nèi)
47、容相加內(nèi)容相加 ADD DATASI,AL ;8位存儲器操作數(shù)與寄存器位存儲器操作數(shù)與寄存器 相加相加 (2)帶進位的加法指令帶進位的加法指令ADC 一般形式:一般形式:ADC OPRD1,OPRD2 ;帶進位的加法;帶進位的加法 功能:功能:OPRD1OPRD1+OPRD2 +CF 這條指令與上這條指令與上條指令類似,只是在兩個操作數(shù)相加時條指令類似,只是在兩個操作數(shù)相加時,要把進位標志,要把進位標志CFCF的現(xiàn)行值加上去,結(jié)果送至目的操作數(shù)。的現(xiàn)行值加上去,結(jié)果送至目的操作數(shù)。 ADC指令主要用于多字節(jié)運算中。若有兩個四字節(jié)的數(shù),指令主要用于多字節(jié)運算中。若有兩個四字節(jié)的數(shù),已分別放在自已
48、分別放在自FIRST和SECOND開始的存儲區(qū)中,每個數(shù)占開始的存儲區(qū)中,每個數(shù)占四個存儲單元。存放時,最低字節(jié)在低地址單元,則可四個存儲單元。存放時,最低字節(jié)在低地址單元,則可 用以下程序段實現(xiàn)相加。用以下程序段實現(xiàn)相加。 MOV AX,F(xiàn)IRST ADD AX,SECOND ;進行字運算;進行字運算 MOV THIRD,AX MOV AX,F(xiàn)IRST+2 ADC AX,SECOND+2 MOV THIRD+2,AX 這條指令對標志位這條指令對標志位SFSF、ZFZF、AFAF、PFPF、CFCF和和OFOF有影響。有影響。 (3)加加1指令指令INC 一般形式:一般形式:INC OPRD
49、功能:功能:OPRDOPRD+1 完成對指定的操作數(shù)完成對指定的操作數(shù)OPRD加加1,然后返回此操作數(shù)。,然后返回此操作數(shù)。 操作數(shù)操作數(shù)OPRD可以是寄存器和存儲器操作數(shù);可以是可以是寄存器和存儲器操作數(shù);可以是8位數(shù),也可以是位數(shù),也可以是16位數(shù);但不能是立即數(shù),也不能是段寄位數(shù);但不能是立即數(shù),也不能是段寄存器。此指令主要用于在循環(huán)程序中修改地址指針和循環(huán)存器。此指令主要用于在循環(huán)程序中修改地址指針和循環(huán)次數(shù)等。次數(shù)等。 這條指令執(zhí)行的結(jié)果影響標志位這條指令執(zhí)行的結(jié)果影響標志位AF、OF、PF、SF和和ZF,而對進位標志,而對進位標志CF沒有影響。沒有影響。 如:如:INC AL ;字
50、節(jié)加;字節(jié)加1 INC CX ;字加;字加1 INC BYTE PTRBX ;字節(jié)加;字節(jié)加1 INC WORD PTRSI ;字加;字加1 (1)不帶借位的減法指令不帶借位的減法指令SUB 一般形式:一般形式:SUB OPRD1,OPRD2 ; 功能:功能:OPRD1OPRD1-OPRD2 完成兩個操作數(shù)相減,也即從完成兩個操作數(shù)相減,也即從OPRD1中減去中減去OPRD2,結(jié)果放在結(jié)果放在OPRD1中。中。 源操作數(shù)和目的操作數(shù)可以是寄存器以及存儲器操作源操作數(shù)和目的操作數(shù)可以是寄存器以及存儲器操作數(shù),源操作數(shù)還可以是立即數(shù);可以是無符號數(shù),也可以數(shù),源操作數(shù)還可以是立即數(shù);可以是無符號數(shù)
51、,也可以是帶符號數(shù)。但源操作數(shù)和目的操作數(shù)不能同時為存儲器是帶符號數(shù)。但源操作數(shù)和目的操作數(shù)不能同時為存儲器操作數(shù),也不能對段寄存器進行運算。操作數(shù),也不能對段寄存器進行運算。 這條指令對標志位這條指令對標志位SFSF、ZFZF、AFAF、PFPF、CFCF和和OFOF有影響。有影響。 例如:例如:SUB AL,20H SUB AX,BX SUB BP,CL2減法指令減法指令 (2)帶借位的減法指令帶借位的減法指令SBB 一般形式:一般形式:SBB OPRD1,OPRD2 功能:功能:OPRD1OPRD1-OPRD2-CF 這條指令與這條指令與SUB類似,只是在兩個操作數(shù)相減時,還類似,只是在
52、兩個操作數(shù)相減時,還要減去借位標志要減去借位標志CF的現(xiàn)行值。同的現(xiàn)行值。同ADC指令一樣,本指令指令一樣,本指令主要用于多字節(jié)操作數(shù)相減。主要用于多字節(jié)操作數(shù)相減。 (3)減減1指令指令DEC 一般形式:一般形式:DEC OPRD ; 功能:功能:OPRDOPRD-1 對指令的操作數(shù)減對指令的操作數(shù)減1,然后送回此操作數(shù)。,然后送回此操作數(shù)。 在相減時,把操作數(shù)作為一個無符號二進制數(shù)來對待。在相減時,把操作數(shù)作為一個無符號二進制數(shù)來對待。對操作數(shù)的要求和對標志位的影響和對操作數(shù)的要求和對標志位的影響和INC指令一樣。指令一樣。 例如:例如: DEC CX DEC BYTE PTRBX ;字節(jié)
53、減;字節(jié)減1 DEC WORD PTRSI ;字減;字減1 (4)求補指令求補指令NEG 一般形式:一般形式:NEG OPRD 功能:功能:OPRD0 - OPRD 對操作數(shù)取補,即用零減去操作數(shù),再把結(jié)果送回操對操作數(shù)取補,即用零減去操作數(shù),再把結(jié)果送回操作數(shù)。作數(shù)。 操作數(shù)可以是寄存器以及存儲器操作數(shù)。指令把操作操作數(shù)可以是寄存器以及存儲器操作數(shù)。指令把操作數(shù)視為補碼表示的帶符號數(shù)。之所以把數(shù)視為補碼表示的帶符號數(shù)。之所以把NEG指令稱為求補指令稱為求補指令,是因為一個操作數(shù)取補碼就相當于用零減去此操作指令,是因為一個操作數(shù)取補碼就相當于用零減去此操作數(shù)。數(shù)。 例如:例如: NEG AL
54、設設(AL)00111010B則取補后為則取補后為11000110B 若操作數(shù)為若操作數(shù)為80H(-128)或為或為8000H(-32768)取補,取補,則操作數(shù)不變,但標志則操作數(shù)不變,但標志OF置置1,其它情況,其它情況OF置置0。 此指令影響標志此指令影響標志AF、CF、OF、PF、SF和和ZF。指令。指令的結(jié)果一般總是使標志的結(jié)果一般總是使標志CF=1。除非在操作數(shù)為零時,才使。除非在操作數(shù)為零時,才使CF=0。 (5)比較指令比較指令CMP 一般形式:一般形式:CMP OPRD1,OPRD2 功能:功能: OPRD1- OPRD2 比較指令完成兩個操作數(shù)相減,使結(jié)果反映在標志位比較指
55、令完成兩個操作數(shù)相減,使結(jié)果反映在標志位上,但并不送回結(jié)果上,但并不送回結(jié)果(即不帶回送的減法即不帶回送的減法)。指令對操作數(shù)的要求及對標志位的影響與指令對操作數(shù)的要求及對標志位的影響與SUB指令完全相指令完全相同。同。 例如:例如:CMP AL,100 CMP DX,DI CMP CX,DATABP CMP DATASI,AX 比較指令主要用于比較兩個數(shù)的大小關(guān)系。在比較指比較指令主要用于比較兩個數(shù)的大小關(guān)系。在比較指令之后,根據(jù)標志位的狀態(tài)來判斷兩個操作數(shù)誰大誰小,令之后,根據(jù)標志位的狀態(tài)來判斷兩個操作數(shù)誰大誰小,或是否相等。或是否相等。 1)若兩者相等,相減以后結(jié)果為零,若兩者相等,相減
56、以后結(jié)果為零,ZF標志為標志為1,否,否則為則為ZF標志為標志為0。 2)如果是兩個無符號數(shù)如果是兩個無符號數(shù)(如如CMP OPRD1,OPRD2)進行比較,則可以根據(jù)進行比較,則可以根據(jù)CF標志的狀態(tài)判斷兩數(shù)大小。若結(jié)標志的狀態(tài)判斷兩數(shù)大小。若結(jié)果沒有產(chǎn)生借位果沒有產(chǎn)生借位(CF=0),顯然,顯然OPRD1OPRD2;若產(chǎn)生了;若產(chǎn)生了借位借位(即即CF1),則則OPRD1OPRD2。 如果是兩個帶符號數(shù)進行比較如果是兩個帶符號數(shù)進行比較,則,則 當當OF SF=0時,被減數(shù)大于減數(shù);時,被減數(shù)大于減數(shù); 當當OF SF=1時,被減數(shù)小于減數(shù);時,被減數(shù)小于減數(shù); 一般在比較指令之后都緊跟一
57、個條件轉(zhuǎn)移指令,可根一般在比較指令之后都緊跟一個條件轉(zhuǎn)移指令,可根據(jù)比較結(jié)果決定程序的走向。據(jù)比較結(jié)果決定程序的走向。 乘法指令分為無符號乘法指令和帶符號乘法指令兩種乘法指令分為無符號乘法指令和帶符號乘法指令兩種,隱含的目的操作數(shù)為隱含的目的操作數(shù)為AX與與DX,而源操作數(shù)由指令給出。,而源操作數(shù)由指令給出。指令可完成字節(jié)與字節(jié)相乘,結(jié)果為指令可完成字節(jié)與字節(jié)相乘,結(jié)果為16位數(shù),存放在位數(shù),存放在AX中;還可以完成字與字相乘,結(jié)果為中;還可以完成字與字相乘,結(jié)果為32位數(shù),高位數(shù),高16位存放位存放在在DX中,低中,低16位存放在位存放在AX中。中。 (1) 無符號乘法指令無符號乘法指令MU
58、L 一般格式:一般格式:MUL OPRD 功能:功能:完成字節(jié)與字節(jié)相乘、字與字相乘,且默認的完成字節(jié)與字節(jié)相乘、字與字相乘,且默認的操作數(shù)放在操作數(shù)放在AL或或AX中。中。 字節(jié)相乘,字節(jié)相乘,(AX)(OPRD)X(AL) 字相乘,字相乘,(DX:AX)(OPRD)X(AX)3乘法指令乘法指令 乘法法指令要求兩個操作數(shù)的字長一樣,源操作數(shù)可以乘法法指令要求兩個操作數(shù)的字長一樣,源操作數(shù)可以是寄存器和存儲器操作數(shù),但不能為立即數(shù)。是寄存器和存儲器操作數(shù),但不能為立即數(shù)。 當乘積的高當乘積的高8位或位或16位不為位不為0時,則時,則CF=OF=1,代表,代表AH或或DX中包含乘積的有效數(shù)字;否
59、則中包含乘積的有效數(shù)字;否則CF=OF=0。對其它標志。對其它標志位無影響。位無影響。 例如:例如: MOV AL,F(xiàn)IRST ;字節(jié)相乘;字節(jié)相乘 MUL SECOND ;結(jié)果為;結(jié)果為(AX)(FIRST)X(SECOND) MOV AX,THIRD ;字相乘;字相乘 MUL AX ;結(jié)果;結(jié)果(DX:AX)(THIRD)X(THIRD) MOV AL,90H CBW ;字擴展;字擴展AX=30H MOV CX,1000H MUL CX (2) 帶符號數(shù)乘法指令帶符號數(shù)乘法指令IMUL 一般格式:一般格式:IMUL OPRD 這是一條帶符號數(shù)的乘法指令,在功能上和這是一條帶符號數(shù)的乘法指令
60、,在功能上和MUL類似。類似。區(qū)別為當結(jié)果的高半部分不是低半部分的符號位擴展時,區(qū)別為當結(jié)果的高半部分不是低半部分的符號位擴展時,則則CF=OF=1,否則,否則CF=OF=0。 除法指令分為無符號除法指令和帶符號除法指令兩除法指令分為無符號除法指令和帶符號除法指令兩種,隱含了被除數(shù)種,隱含了被除數(shù)AX與與DX,而除數(shù)由指令給出。在除法,而除數(shù)由指令給出。在除法指令中,字節(jié)運算時被除數(shù)在指令中,字節(jié)運算時被除數(shù)在AX中;運算結(jié)果商在中;運算結(jié)果商在AL中,中,余數(shù)在余數(shù)在AH中。字運算時被除數(shù)為中。字運算時被除數(shù)為DX:AX構(gòu)成的構(gòu)成的32位數(shù),位數(shù),運算結(jié)果商在運算結(jié)果商在AX中,余數(shù)在中,余
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 助理工程師年終工作總結(jié)15篇
- 2025年安防電子項目提案報告
- 2024-2025學年西藏日喀則地區(qū)康馬縣數(shù)學三年級第一學期期末監(jiān)測試題含解析
- 2025年VSAT網(wǎng)絡管理系統(tǒng)項目提案報告模范
- 2025年混凝土泵車項目立項申請報告模范
- 愛國主義演講稿三分鐘
- 會計類自薦信范文集合七篇
- 感恩父母的演講稿范文集錦八篇
- 寫景的作文300字集合8篇
- 你的名字動畫電影觀看感想
- 【企業(yè)杜邦分析國內(nèi)外文獻綜述6000字】
- 2023-2024學年浙江省富陽市小學數(shù)學五年級上冊期末通關(guān)試題
- GB/T 5343.2-2007可轉(zhuǎn)位車刀及刀夾第2部分:可轉(zhuǎn)位車刀型式尺寸和技術(shù)條件
- GB/T 32285-2015熱軋H型鋼樁
- 中考數(shù)學真題變式題庫
- FZ/T 91019-1998染整機械導布輥制造工藝規(guī)范
- 主持人培訓 課件
- SHSG0522003 石油化工裝置工藝設計包(成套技術(shù))內(nèi)容規(guī)定
- 制造部年終總結(jié)報告課件
- 企業(yè)大學商學院建設方案
- 粵科版高中通用技術(shù)選修1:電子控制技術(shù)全套課件
評論
0/150
提交評論