指令系統(tǒng)與匯編語言_第1頁
指令系統(tǒng)與匯編語言_第2頁
指令系統(tǒng)與匯編語言_第3頁
指令系統(tǒng)與匯編語言_第4頁
指令系統(tǒng)與匯編語言_第5頁
已閱讀5頁,還剩131頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、第第3章章 指令系統(tǒng)與匯編語言指令系統(tǒng)與匯編語言本章主要教學(xué)內(nèi)容本章主要教學(xué)內(nèi)容 1、8086指令系統(tǒng)的尋址方式、指令指令系統(tǒng)的尋址方式、指令格式及應(yīng)用格式及應(yīng)用 2、匯編語言基本格式、程序設(shè)計(jì)步驟和方法匯編語言基本格式、程序設(shè)計(jì)步驟和方法 3、順序、分支、循環(huán)、子程序的基本結(jié)構(gòu)和設(shè)計(jì)方法順序、分支、循環(huán)、子程序的基本結(jié)構(gòu)和設(shè)計(jì)方法 4、DOS和和BIOS中斷調(diào)用中斷調(diào)用 本章教學(xué)目的本章教學(xué)目的 使學(xué)生掌握指令系統(tǒng)及其應(yīng)用,學(xué)會(huì)程序設(shè)計(jì)的方法。使學(xué)生掌握指令系統(tǒng)及其應(yīng)用,學(xué)會(huì)程序設(shè)計(jì)的方法。 教學(xué)重點(diǎn):教學(xué)重點(diǎn):指令系統(tǒng)的應(yīng)用、匯編語言程序設(shè)計(jì)指令系統(tǒng)的應(yīng)用、匯編語言程序設(shè)計(jì) 教學(xué)難點(diǎn):教學(xué)

2、難點(diǎn):指令的尋址方式、程序設(shè)計(jì)技巧指令的尋址方式、程序設(shè)計(jì)技巧第第3 3章章 指令系統(tǒng)與匯編語言指令系統(tǒng)與匯編語言3.1 尋址方式尋址方式 3.2 8086指令系統(tǒng)指令系統(tǒng) 3.3 匯編語言簡(jiǎn)述匯編語言簡(jiǎn)述 3.4 匯編語言程序設(shè)計(jì)匯編語言程序設(shè)計(jì) 3.5 DOS和和BIOS中斷調(diào)用中斷調(diào)用 3.1 尋址方式尋址方式 3.1.1 基本概念基本概念1. 指令系統(tǒng)與指令格式指令系統(tǒng)與指令格式 計(jì)算機(jī)可以執(zhí)行的各種操作命令稱為指令。通常計(jì)算機(jī)可以執(zhí)行的各種操作命令稱為指令。通常一條指令對(duì)應(yīng)一種基本操作,例如加、減、傳送、一條指令對(duì)應(yīng)一種基本操作,例如加、減、傳送、移位等。計(jì)算機(jī)所能執(zhí)行的全部命令的集

3、合即為該移位等。計(jì)算機(jī)所能執(zhí)行的全部命令的集合即為該計(jì)算機(jī)的指令系統(tǒng)。計(jì)算機(jī)的指令系統(tǒng)。 計(jì)算機(jī)指令是完成特定操作的命令,計(jì)算機(jī)指令是完成特定操作的命令,CPU能直接能直接識(shí)別和執(zhí)行的指令是用二進(jìn)制代碼表示的,這種代識(shí)別和執(zhí)行的指令是用二進(jìn)制代碼表示的,這種代碼稱為機(jī)器代碼。碼稱為機(jī)器代碼。計(jì)算機(jī)中的指令由操作碼字段和操作數(shù)字段兩部分組成。計(jì)算機(jī)中的指令由操作碼字段和操作數(shù)字段兩部分組成。(1)操作碼字段)操作碼字段 說明計(jì)算機(jī)要執(zhí)行的具體操作,如傳送、運(yùn)算、移位、跳說明計(jì)算機(jī)要執(zhí)行的具體操作,如傳送、運(yùn)算、移位、跳轉(zhuǎn)等操作,是指令中必不可少的組成部分。轉(zhuǎn)等操作,是指令中必不可少的組成部分。(

4、2)操作數(shù)字段)操作數(shù)字段 說明在指令執(zhí)行的過程中需要的操作數(shù),它可以是操作數(shù)說明在指令執(zhí)行的過程中需要的操作數(shù),它可以是操作數(shù)本身,也可以是操作數(shù)地址或是地址的一部分,還可以是指本身,也可以是操作數(shù)地址或是地址的一部分,還可以是指向操作數(shù)的地址指針或其它有關(guān)操作數(shù)據(jù)的信息。單地址指向操作數(shù)的地址指針或其它有關(guān)操作數(shù)據(jù)的信息。單地址指令的操作只需一個(gè)操作數(shù),如加令的操作只需一個(gè)操作數(shù),如加1指令:指令: INC AX。大多數(shù)運(yùn)大多數(shù)運(yùn)算型指令都需要兩個(gè)操作數(shù),如加法指令:算型指令都需要兩個(gè)操作數(shù),如加法指令:ADD AX,BX ;運(yùn)算的結(jié)果送到運(yùn)算的結(jié)果送到AX中,中,AX稱為目的操作數(shù),稱為

5、目的操作數(shù),BX稱為源操作稱為源操作數(shù)。數(shù)。 2. 尋址及尋址方式的概念尋址及尋址方式的概念 計(jì)算機(jī)中的指令有些不需要操作數(shù),大多數(shù)指令采用一計(jì)算機(jī)中的指令有些不需要操作數(shù),大多數(shù)指令采用一個(gè)或兩個(gè)操作數(shù)。一般來說,操作數(shù)可以跟隨在指令操作個(gè)或兩個(gè)操作數(shù)。一般來說,操作數(shù)可以跟隨在指令操作碼之后,稱為立即數(shù);操作數(shù)也可以存放在碼之后,稱為立即數(shù);操作數(shù)也可以存放在CPU內(nèi)部的寄內(nèi)部的寄存器中,稱為寄存器操作數(shù);絕大多數(shù)的操作數(shù)存放在內(nèi)存器中,稱為寄存器操作數(shù);絕大多數(shù)的操作數(shù)存放在內(nèi)存儲(chǔ)器中,稱為存儲(chǔ)器操作數(shù)。指令指定操作數(shù)的位置,存儲(chǔ)器中,稱為存儲(chǔ)器操作數(shù)。指令指定操作數(shù)的位置,即給出地址信

6、息,在執(zhí)行時(shí)需要根據(jù)這個(gè)地址信息找到需即給出地址信息,在執(zhí)行時(shí)需要根據(jù)這個(gè)地址信息找到需要的操作數(shù)。這種尋找操作數(shù)的過程稱為尋址,而尋找操要的操作數(shù)。這種尋找操作數(shù)的過程稱為尋址,而尋找操作數(shù)的方法稱為尋址方式。作數(shù)的方法稱為尋址方式。3.1.2 8086指令系統(tǒng)的尋址方式指令系統(tǒng)的尋址方式 1. 立即尋址立即尋址 立即尋址方式中,指令操作碼和操作數(shù)都在存立即尋址方式中,指令操作碼和操作數(shù)都在存儲(chǔ)器代碼段中。儲(chǔ)器代碼段中。匯編格式:匯編格式:n n(n n為立即操作數(shù),是用為立即操作數(shù),是用8 8位或位或1616位二位二進(jìn)制補(bǔ)碼表示的有符號(hào)數(shù))進(jìn)制補(bǔ)碼表示的有符號(hào)數(shù)) 功能:操作數(shù)存放在功能:

7、操作數(shù)存放在存儲(chǔ)器,指令下一單元的存儲(chǔ)器,指令下一單元的內(nèi)容為立即操作數(shù)內(nèi)容為立即操作數(shù)n n。 圖形表示如右:圖形表示如右:2. 寄存器尋址寄存器尋址 寄存器尋址方式的操作數(shù)在指令指明的寄寄存器尋址方式的操作數(shù)在指令指明的寄存器中。存器中。 匯編格式:匯編格式:R 其中其中R表示寄存器名。表示寄存器名。 功能:操作數(shù)直接存放在寄存器功能:操作數(shù)直接存放在寄存器R中。中。 圖形表示:圖形表示: R 指令指令操作數(shù)操作數(shù)3. 3. 存儲(chǔ)器尋址存儲(chǔ)器尋址 如果操作碼所需操作數(shù)存放在內(nèi)存儲(chǔ)器中,則指令中如果操作碼所需操作數(shù)存放在內(nèi)存儲(chǔ)器中,則指令中需要給出操作數(shù)的地址信息。為了提高程序的靈活性,需要

8、給出操作數(shù)的地址信息。為了提高程序的靈活性,8086指令系統(tǒng)提供了多種存儲(chǔ)器尋址方式。指令系統(tǒng)提供了多種存儲(chǔ)器尋址方式。(1)直接尋址(2)寄存器間接尋址(3)寄存器相對(duì)尋址(4)基址變址尋址(5)與I/O端口有關(guān)的尋址方式(1) 直接尋址直接尋址匯編格式:含有變量的地址表達(dá)式。匯編格式:含有變量的地址表達(dá)式。 段寄存器名:段寄存器名:EA 。功能:指令下一字單元的內(nèi)容是操作數(shù)的偏移地功能:指令下一字單元的內(nèi)容是操作數(shù)的偏移地址址EA。圖形表示:圖形表示:(2) 寄存器間接尋址寄存器間接尋址 寄存器間接尋址方式中,寄存器的內(nèi)容為寄存器間接尋址方式中,寄存器的內(nèi)容為操作數(shù)的偏移地址操作數(shù)的偏移地

9、址EAEA,操作數(shù)在存儲(chǔ)器中。操作數(shù)在存儲(chǔ)器中。 匯編格式:匯編格式: RR 功能:操作數(shù)存放在存儲(chǔ)器,寄存器功能:操作數(shù)存放在存儲(chǔ)器,寄存器R R存放存放操作數(shù)的偏移地址操作數(shù)的偏移地址EAEA。寄存器間接尋址示意圖:寄存器間接尋址示意圖:例如:例如:MOV AX,BX若(若(DS)2000H,(,(BX)1000H,物理地址物理地址20000H1000H21000H。指令執(zhí)行前,(指令執(zhí)行前,(AX)2030H,(,(21000H)0A0H,(,(21001H)50H,指令執(zhí)行后,(指令執(zhí)行后,(AX)50A0H,(21000H)0A0H,(,(21001H)50H。指令執(zhí)行情況如下:指令

10、執(zhí)行情況如下: AX AH AL 數(shù)據(jù)段 物理地址 A0H 21000H 50H 20001H 56H 20002H 偏移地址偏移地址EA計(jì)算方法如下:計(jì)算方法如下:EA=SISI作間址寄存器。 DIDI作間址寄存器。BX BX作間址寄存器。BP BP作間址寄存器。(3) 寄存器相對(duì)尋址寄存器相對(duì)尋址 寄存器相對(duì)尋址方式是在指令中給定一個(gè)基址寄存寄存器相對(duì)尋址方式是在指令中給定一個(gè)基址寄存器(或變址寄存器)名和一個(gè)器(或變址寄存器)名和一個(gè)8 8位或位或1616位的相對(duì)偏移量,位的相對(duì)偏移量,兩者之和作為操作數(shù)的有效地址。對(duì)兩者之和作為操作數(shù)的有效地址。對(duì)BXBX、SISI、DIDI這三個(gè)這三

11、個(gè)間址寄存器,指示的是數(shù)據(jù)段中的數(shù)據(jù),而用間址寄存器,指示的是數(shù)據(jù)段中的數(shù)據(jù),而用BPBP作間址作間址寄存器,則指示的是堆棧段中的數(shù)據(jù)。寄存器,則指示的是堆棧段中的數(shù)據(jù)。 匯編格式:匯編格式:XRXR(X X表示位移量,是表示位移量,是8 8位或位或1616位二進(jìn)位二進(jìn)制補(bǔ)碼表示的有符號(hào)數(shù))。制補(bǔ)碼表示的有符號(hào)數(shù))。功能:操作數(shù)存放在存儲(chǔ)器,寄存器功能:操作數(shù)存放在存儲(chǔ)器,寄存器R R的內(nèi)容加位移量的內(nèi)容加位移量X X為操作數(shù)的偏移地址為操作數(shù)的偏移地址EAEA。偏移地址偏移地址EA計(jì)算方法如下計(jì)算方法如下:(4) 基址變址尋址基址變址尋址 基址變址尋址方式是在指令中給出一個(gè)基址寄存器名基址變

12、址尋址方式是在指令中給出一個(gè)基址寄存器名和一個(gè)變址寄存器名,兩者內(nèi)容之和作為操作數(shù)的有效地和一個(gè)變址寄存器名,兩者內(nèi)容之和作為操作數(shù)的有效地址。基址寄存器為址。基址寄存器為BXBX或或BPBP,變址寄存器為變址寄存器為SISI或或DIDI,但指令但指令中不能同時(shí)出現(xiàn)兩個(gè)基址寄存器或兩個(gè)變址寄存器。如果中不能同時(shí)出現(xiàn)兩個(gè)基址寄存器或兩個(gè)變址寄存器。如果基址寄存器為基址寄存器為BXBX,則段寄存器使用則段寄存器使用DSDS;如果基址寄存器用如果基址寄存器用BPBP,則段寄存器用則段寄存器用SSSS。 匯編格式:匯編格式: BR+IR BR+IR 功能:操作數(shù)存放在存儲(chǔ)器,功能:操作數(shù)存放在存儲(chǔ)器,

13、BRBR的內(nèi)容加的內(nèi)容加IRIR的內(nèi)容加的內(nèi)容加位移量位移量X X是操作數(shù)的偏移地址是操作數(shù)的偏移地址EAEA。操作數(shù)偏移地址操作數(shù)偏移地址EA計(jì)算方法如下計(jì)算方法如下【例】【例】 MOV AL,BXSI(MOV AL,BXSI)若指令執(zhí)行前,(若指令執(zhí)行前,(DS)1000H,(,(BX)0010H,(SI)0002H,(,(10012H)45H則則EA(BX)()(SI)0012H,PA(DS)10HEA10012H指令執(zhí)行后(指令執(zhí)行后(AL)45H。(5) I/OI/O端口尋址方式端口尋址方式 (1)直接端口尋址)直接端口尋址直接端口尋址是在指令中直接給出要訪問的端口地址,一般采直接端

14、口尋址是在指令中直接給出要訪問的端口地址,一般采用用2位十六進(jìn)制數(shù)表示,也可以用符號(hào)表示,可訪問的端口范位十六進(jìn)制數(shù)表示,也可以用符號(hào)表示,可訪問的端口范圍為圍為0255。例如:例如:IN AL,25H 表示從表示從I/O端口地址為端口地址為25H的端口中取數(shù)據(jù)送到寄存器的端口中取數(shù)據(jù)送到寄存器AL中。中。 (2)寄存器間接端口尋址)寄存器間接端口尋址若訪問的端口地址值大于若訪問的端口地址值大于255,則必須用,則必須用I/O端口的間接尋址方端口的間接尋址方式。它是把式。它是把I/O端口的地址先送到端口的地址先送到DX中,用中,用DX作為間接尋址寄作為間接尋址寄存器。此種方式可訪問的端口范圍為

15、存器。此種方式可訪問的端口范圍為065535。例如:例如:MOV DX,285H ;將端口地址將端口地址285H送到送到DX寄存器寄存器 OUT DX,AL ;將將AL中的內(nèi)容輸出到中的內(nèi)容輸出到DX指定的端口指定的端口3.2 80863.2 8086指令系統(tǒng)指令系統(tǒng) 8086CPU指令系統(tǒng)按功能可以分為以下指令系統(tǒng)按功能可以分為以下6類類指令:指令: 數(shù)據(jù)傳送類指令數(shù)據(jù)傳送類指令 算術(shù)運(yùn)算類指令算術(shù)運(yùn)算類指令 邏輯運(yùn)算(位操作)類指令邏輯運(yùn)算(位操作)類指令 串操作類指令串操作類指令 控制轉(zhuǎn)移類指令控制轉(zhuǎn)移類指令 處理器控制類指令處理器控制類指令3.2.1 數(shù)據(jù)傳送類指令數(shù)據(jù)傳送類指令1 通

16、用數(shù)據(jù)傳送指令通用數(shù)據(jù)傳送指令2 累加器專用傳送指令累加器專用傳送指令3 地址傳送指令地址傳送指令4 標(biāo)志寄存器傳送指令標(biāo)志寄存器傳送指令1. 1. 通用數(shù)據(jù)傳送指令通用數(shù)據(jù)傳送指令(1)傳送指令傳送指令MOV(2)堆棧指令堆棧指令PUSHPOP(3)數(shù)據(jù)交換指令數(shù)據(jù)交換指令XCHG(1 1)傳送指令)傳送指令MOVMOV語句格式:語句格式:MOV OPDMOV OPD,OPSOPS功能:將源操作數(shù)傳送入目的地址,源地址內(nèi)容不變。功能:將源操作數(shù)傳送入目的地址,源地址內(nèi)容不變。即(即(OPSOPS)OPDOPD。下圖描述了下圖描述了MOVMOV指令在傳送數(shù)據(jù)時(shí)允許傳送的路徑及類型。指令在傳送數(shù)

17、據(jù)時(shí)允許傳送的路徑及類型。圖圖 MOV指令所允許的數(shù)據(jù)傳送路徑及類型指令所允許的數(shù)據(jù)傳送路徑及類型MOVMOV指令的形式有如下幾種:指令的形式有如下幾種: 1)從通用寄存器到通用寄存器)從通用寄存器到通用寄存器 MOV reg1,reg22)立即數(shù)傳送到通用寄存器)立即數(shù)傳送到通用寄存器 MOV reg ,data 3)通用寄存器和存儲(chǔ)單元之間)通用寄存器和存儲(chǔ)單元之間 MOV mem (reg),reg (mem)4)立即數(shù)傳送到存儲(chǔ)單元立即數(shù)傳送到存儲(chǔ)單元 MOV mem, data5)段寄存器與通用寄存器間的數(shù)據(jù)傳送段寄存器與通用寄存器間的數(shù)據(jù)傳送 MOV seg,reg 或或 MOV

18、reg, seg 6)段寄存器與存儲(chǔ)單元間的數(shù)據(jù)傳送段寄存器與存儲(chǔ)單元間的數(shù)據(jù)傳送 MOV seg,mem 或或 MOV mem, seg 【例】【例】存儲(chǔ)器與寄存器間數(shù)據(jù)傳送。存儲(chǔ)器與寄存器間數(shù)據(jù)傳送。MOV AX,BUF ;BUF是變量,源操作數(shù)為直接尋址是變量,源操作數(shù)為直接尋址MOV BH,DI ;源操作數(shù)為寄存器間接尋址源操作數(shù)為寄存器間接尋址MOV DI,ES:3SI ;源操作數(shù)為變址尋址,使用跨段前綴源操作數(shù)為變址尋址,使用跨段前綴MOV BP,3BX+SI;源操作數(shù)為基址加變址尋址源操作數(shù)為基址加變址尋址MOV BUFA,DL;BUFA是一字節(jié)變量是一字節(jié)變量MOV BP,AX

19、;使用使用SS段寄存器段寄存器MOV DS:BP,DL;使用跨段前綴使用跨段前綴MOV BUF,DS;BUF是個(gè)字變量是個(gè)字變量MOV ES ,BUF2 2數(shù)據(jù)交換指令數(shù)據(jù)交換指令XCHGXCHG語句格式:語句格式:XCHG OPD,OPS功能:將源地址與目的地址中的內(nèi)容互換。即(功能:將源地址與目的地址中的內(nèi)容互換。即(OPD)OPS,(OPS)OPD。【例】例】寄存器與存儲(chǔ)器之間數(shù)據(jù)交換寄存器與存儲(chǔ)器之間數(shù)據(jù)交換。MOVAX,5678H;(;(AX)=5678HMOVBX,0FFFFH;(;(BX)=0FFFFHXCHG AX,BX;(;(AX)=0FFFFH ,(,( BX)=5678H

20、(2 2) 堆棧操作指令堆棧操作指令1)進(jìn)棧指令進(jìn)棧指令PUSH2)出棧指令出棧指令POP1 1)進(jìn)棧指令)進(jìn)棧指令PUSHPUSH語句格式:語句格式: PUSH OPSPUSH OPS功能:將寄存器、段寄存器或存儲(chǔ)器中的一個(gè)字功能:將寄存器、段寄存器或存儲(chǔ)器中的一個(gè)字?jǐn)?shù)據(jù)壓入堆棧,堆棧指針減數(shù)據(jù)壓入堆棧,堆棧指針減2 2。即:(即:(SPSP)SPSP(OPSOPS)158SP158SP (SPSP)SPSP (OPSOPS)70SP70SP2 2)出棧指令)出棧指令POPPOP語句格式:語句格式: POP OPDPOP OPD功能:功能: 將棧頂元素彈出送至某一寄存器、段寄存器將棧頂元素彈

21、出送至某一寄存器、段寄存器(除(除CSCS外)或存儲(chǔ)器,堆棧指針加外)或存儲(chǔ)器,堆棧指針加2 2。從從POPPOP指令功能可看出,該指令為指令功能可看出,該指令為PUSHPUSH指令的逆過程。指令的逆過程。即:(即:( SPSP)(OPDOPD)7070(SPSP)+ +SP SP (SPSP)(OPDOPD)158158(SPSP)+ +SPSP2.2.累加器專用傳送指令累加器專用傳送指令(1 1)輸入指令)輸入指令I(lǐng)NIN輸入指令用來從指定的外設(shè)寄存器取信息送入輸入指令用來從指定的外設(shè)寄存器取信息送入累加器。它有四種形式:累加器。它有四種形式:語句格式:語句格式:ININALAL,PORT

22、 PORT 功能:(功能:(PORTPORT)ALAL語句格式:語句格式:ININAXAX,PORTPORT 功能:(功能:(PORTPORT)AXAX語句格式:語句格式:ININALAL,DXDX 功能:(功能:( DXDX)ALAL語句格式:語句格式:ININAXAX,DXDX 功能:(功能:( DXDX)ALAL(2 2)輸出指令)輸出指令OUTOUT輸出指令用來把累加器的內(nèi)容送往指定的外設(shè)輸出指令用來把累加器的內(nèi)容送往指定的外設(shè)存儲(chǔ)器,它有四種形式:存儲(chǔ)器,它有四種形式:語句格式:語句格式:OUTPORT,AL 功能:(功能:(AL)PORT語句格式:語句格式:OUTPORT,AX 功

23、能:(功能:(AX)PORT語句格式:語句格式:OUTDX,AL 功能:(功能:(AL)DX語句格式:語句格式:OUTDX,AX 功能:(功能:(AX)DX(2 2)查表轉(zhuǎn)換指令)查表轉(zhuǎn)換指令 XLATXLAT語句格式:語句格式:XLAT OPSXLAT OPS或或XLATXLAT功能:將(功能:將(BXBX)為首址(為首址(ALAL)為位移量為位移量的字節(jié)存儲(chǔ)單元中的數(shù)據(jù)送的字節(jié)存儲(chǔ)單元中的數(shù)據(jù)送ALAL寄存器。寄存器。即(即( BX+ALBX+AL)ALAL。3 3地址傳送指令地址傳送指令(1 1)傳送有效地址指令)傳送有效地址指令 LEALEA語句格式:語句格式: LEA OPDLEA

24、OPD,OPSOPS功能:主存按源地址的尋址方式計(jì)算偏移地址,功能:主存按源地址的尋址方式計(jì)算偏移地址,將偏移地址送入指定寄存器。將偏移地址送入指定寄存器。【例】【例】主存偏移地址的獲取。主存偏移地址的獲取。MOV BXMOV BX,0100H0100H ;(;(BXBX)=0100H=0100HMOV SIMOV SI, 0210H 0210H;(;(SISI) =0210H =0210HLEA BXLEA BX,1234BX+SI1234BX+SI; (BXBX)=1544H=1544H(2 2)傳送有效地址及數(shù)據(jù)段首址指令)傳送有效地址及數(shù)據(jù)段首址指令LDSLDS語句格式:語句格式:LD

25、S OPDLDS OPD,OPSOPS功能:將主存中指定字單元數(shù)據(jù)送入指功能:將主存中指定字單元數(shù)據(jù)送入指定存儲(chǔ)器,下一字單元數(shù)據(jù)送定存儲(chǔ)器,下一字單元數(shù)據(jù)送DSDS寄存器。寄存器。(3 3)傳送有效地址及附加數(shù)據(jù)段指令)傳送有效地址及附加數(shù)據(jù)段指令LESLES語句格式:語句格式:LES OPDLES OPD,OPSOPS功能:將主存某字單元內(nèi)容送指定寄存器。功能:將主存某字單元內(nèi)容送指定寄存器。即(即(OPSOPS)OPDOPD,(,(OPS+2OPS+2)ESES。4 4標(biāo)志寄存器傳送指令標(biāo)志寄存器傳送指令(1 1)標(biāo)志送)標(biāo)志送AHAH指令指令LAHFLAHF語句格式:語句格式:LAHF

26、LAHF功能:將標(biāo)志寄存器的低功能:將標(biāo)志寄存器的低8 8位送入位送入AHAH寄存器。寄存器。即(即(FLAGSFLAGS)7-0AH7-0AH。該指令的執(zhí)行對(duì)標(biāo)志該指令的執(zhí)行對(duì)標(biāo)志位無影響。位無影響。【例】標(biāo)志寄存器傳送。【例】標(biāo)志寄存器傳送。執(zhí)行前:(執(zhí)行前:(FLAGSFLAGS)=0485H=0485H,(,(AXAX)=0FFFFH=0FFFFH執(zhí)行指令:執(zhí)行指令:LAHFLAHF(2 2)AHAH送標(biāo)志指令送標(biāo)志指令SAHFSAHF語句格式:語句格式:SAHFSAHF功能:將功能:將AHAH的內(nèi)容送入標(biāo)志寄存器的低的內(nèi)容送入標(biāo)志寄存器的低8 8位,高位,高8 8位不變。位不變。即(

27、即(AHAH) FLAGS7-0. FLAGS7-0.。從該指令功能可看出,從該指令功能可看出,SAHFSAHF為為L(zhǎng)AHFLAHF的逆過程。的逆過程。 (3 3)標(biāo)志寄存器進(jìn)棧指令)標(biāo)志寄存器進(jìn)棧指令PUSHFPUSHF語句格式:語句格式:PUSHFPUSHF功能:將標(biāo)志寄存器的內(nèi)容壓入堆棧。功能:將標(biāo)志寄存器的內(nèi)容壓入堆棧。即(即(FLAGSFLAGS)(SPSP)。)。(4 4)標(biāo)志寄存器出棧指令)標(biāo)志寄存器出棧指令POPFPOPF功能:功能: 將棧頂內(nèi)容彈出送入標(biāo)志寄存將棧頂內(nèi)容彈出送入標(biāo)志寄存器中。即器中。即(SPSP)FLAGSFLAGS。POPFPOPF指令與指令與PUSHFPU

28、SHF指令互為逆過程。指令互為逆過程。3.2.2 算術(shù)運(yùn)算類指令算術(shù)運(yùn)算類指令1 加法類指令加法類指令2 減運(yùn)算指令減運(yùn)算指令3 乘運(yùn)算指令乘運(yùn)算指令4 除運(yùn)算指令除運(yùn)算指令5 BCD碼調(diào)整指令碼調(diào)整指令1 加法運(yùn)算指令加法運(yùn)算指令(1)不帶進(jìn)位)不帶進(jìn)位加加法法指令指令A(yù)DD(2)帶進(jìn)位加指令帶進(jìn)位加指令A(yù)DC(3)加加1指令指令I(lǐng)NC(1 1)不帶進(jìn)位加指令)不帶進(jìn)位加指令A(yù)DDADD語句格式:語句格式:ADD OPDADD OPD, OPS OPS功能:將目的操作數(shù)與源操作數(shù)相加,結(jié)果存功能:將目的操作數(shù)與源操作數(shù)相加,結(jié)果存入目的地址中,源地址的內(nèi)容不改變。入目的地址中,源地址的內(nèi)容不

29、改變。即(即(OPDOPD)+ +(OPSOPS)OPDOPD。(2 2)帶進(jìn)位加法指令)帶進(jìn)位加法指令A(yù)DCADC語句格式:語句格式:ADC OPDADC OPD,OPSOPS功能:將目的操作數(shù)加源操作數(shù)再加低位進(jìn)位,功能:將目的操作數(shù)加源操作數(shù)再加低位進(jìn)位,結(jié)果送目的地址。結(jié)果送目的地址。即(即(OPDOPD)+ +(OPSOPS)+CF OPD+CF OPD。【例】無符號(hào)雙字加法運(yùn)算。【例】無符號(hào)雙字加法運(yùn)算。MOVMOVAXAX,4652H4652H;(;(AXAX)=4652H=4652HADDADDAXAX,0F0F0H0F0F0H;(;(AXAX)=3742H=3742H,CF=

30、1CF=1MOVMOVDXDX,0234H0234H;(;(DXDX)=0234H=0234HADCADCDXDX,0F0F0H0F0F0H;(;(DXDX)=0F325H=0F325H,CF=0CF=0(3 3)加)加1 1指令指令 INCINC語句格式:語句格式:INC OPDINC OPD功能:將目的操作數(shù)加功能:將目的操作數(shù)加1 1,結(jié)果送目的地址。即,結(jié)果送目的地址。即(OPDOPD)+1OPD+1OPD。INCINC指令是一個(gè)單操作數(shù)指令,操作數(shù)可以是寄指令是一個(gè)單操作數(shù)指令,操作數(shù)可以是寄存器或存儲(chǔ)器操作數(shù)。存器或存儲(chǔ)器操作數(shù)。如:如:INC BXINC BX,即(即(BXBX)

31、+1BX+1BX。加加1 1指令可用于對(duì)計(jì)數(shù)器和地址指針進(jìn)行調(diào)整。指令可用于對(duì)計(jì)數(shù)器和地址指針進(jìn)行調(diào)整。 2 減法運(yùn)算指令減法運(yùn)算指令(1)不帶借位減法指令不帶借位減法指令SUB(2)帶借位減指令帶借位減指令 SBB(3)減減1指令指令DEC(4)求補(bǔ)指令求補(bǔ)指令NEG(5)比較指令比較指令 CMP(1 1)不帶借位減法指令)不帶借位減法指令SUBSUB語句格式:語句格式:SUB OPDSUB OPD,OPSOPS功能:目的操作數(shù)減源操作數(shù),結(jié)果存于目的地址,功能:目的操作數(shù)減源操作數(shù),結(jié)果存于目的地址,源地址內(nèi)容不變。源地址內(nèi)容不變。即(即(OPDOPD)()(OPSOPS)OPDOPD【例

32、】減法運(yùn)算。例】減法運(yùn)算。MOVMOVAX AX ,5678H5678H;(;(AXAX)=5678H=5678HSUBSUBAX AX ,1234H1234H;(;(AXAX)=4444H=4444HMOVMOVBX BX ,3354H3354H;(;(BXBX)=3354H=3354HSUBSUBBX BX ,3340H3340H;(;(BXBX)=0014H=0014H(2 2)帶借位減指令)帶借位減指令 SBBSBB語句格式:語句格式:SBB OPD SBB OPD ,OPSOPS功能:目的操作數(shù)減源操作數(shù)再減低位借功能:目的操作數(shù)減源操作數(shù)再減低位借位位CFCF,結(jié)果送目的地址。結(jié)果

33、送目的地址。即(即(OPDOPD)(OPSOPS)CF OPDCF OPD(3 3)減)減1 1指令指令DECDEC語句格式:語句格式:DEC OPD DEC OPD 功能:將目的操作數(shù)減功能:將目的操作數(shù)減1 1,結(jié)果送目的地址。即,結(jié)果送目的地址。即(OPDOPD)1OPD1OPD。DECDEC指令是一個(gè)單操作數(shù)指令,操作數(shù)可以是寄指令是一個(gè)單操作數(shù)指令,操作數(shù)可以是寄存器或存儲(chǔ)器操作數(shù)。存器或存儲(chǔ)器操作數(shù)。如:如:DEC CXDEC CX。即(即(CXCX)1CX1CX。減減1 1指令指令DECDEC也一般用于對(duì)計(jì)數(shù)器和地址指針的調(diào)也一般用于對(duì)計(jì)數(shù)器和地址指針的調(diào)整。整。(4 4)求補(bǔ)指

34、令)求補(bǔ)指令NEGNEG語句格式:語句格式:NEG OPDNEG OPD功能:將目的操作數(shù)的每一位求反(包括符號(hào)位)后加功能:將目的操作數(shù)的每一位求反(包括符號(hào)位)后加1 1,結(jié)果送目的地址。結(jié)果送目的地址。即(即(OPDOPD)+1OPD+1OPD。【例】求補(bǔ)運(yùn)算。例】求補(bǔ)運(yùn)算。MOVMOVAXAX,0FF64H0FF64HNEGNEGALAL;(;(AXAX)=0FF9CH=0FF9CHSUBSUBALAL,9DH9DH;(;(AXAX)=0FFFFH=0FFFFHNEGNEGAXAX;(;(AXAX)=0001H=0001HDECDECALAL;(;(AXAX)=0000H=0000HN

35、EGNEGAXAX;(;(AXAX)=0000H=0000H(5 5)比較指令)比較指令 CMPCMP語句格式:語句格式:CMP OPDCMP OPD,OPSOPS功能:目的操作數(shù)減源操作數(shù),結(jié)果只影響標(biāo)志位,不送入功能:目的操作數(shù)減源操作數(shù),結(jié)果只影響標(biāo)志位,不送入目的地址。目的地址。即(即(OPDOPD)()(OPSOPS)。)。【例】比較【例】比較ALAL的內(nèi)容數(shù)值大小。的內(nèi)容數(shù)值大小。CMPCMPALAL,5050;(;(ALAL)5050JBJBBELOWBELOW ;(;(ALAL)50=50=50,(,( AL AL)50AL50ALINCINCAHAH;(;(AHAH)+1AH

36、+1AHBELOWBELOW:3 乘法運(yùn)算指令乘法運(yùn)算指令(1)無符號(hào)數(shù)乘法指令無符號(hào)數(shù)乘法指令MUL(2)有符號(hào)乘指令)有符號(hào)乘指令I(lǐng)MUL(1 1)無符號(hào)數(shù)乘法指令)無符號(hào)數(shù)乘法指令MULMUL語句格式:語句格式: MUL OPSMUL OPS功能:功能: 若是字節(jié)數(shù)據(jù)相乘,(若是字節(jié)數(shù)據(jù)相乘,(ALAL)與與OPSOPS相乘得到相乘得到字?jǐn)?shù)據(jù)存入字?jǐn)?shù)據(jù)存入AXAX中;若是字?jǐn)?shù)據(jù)相乘,則(中;若是字?jǐn)?shù)據(jù)相乘,則(AXAX)與與OPSOPS相乘得到雙字?jǐn)?shù)據(jù),高字存入相乘得到雙字?jǐn)?shù)據(jù),高字存入DXDX、低字存入低字存入AXAX中。中。即字節(jié)乘法:(即字節(jié)乘法:(ALAL)* * (OPSOPS

37、) AX AX,字乘法:字乘法:(AXAX) * * (OPSOPS) DX DX,AX AX 【例】無符號(hào)數(shù)【例】無符號(hào)數(shù)0 0A3HA3H與與1111H H相乘相乘。MOVMOVALAL,0A3H0A3H;(;(ALAL)=0A3H=0A3HMOVMOVBLBL, 11H 11H;(;(BLBL)=11H=11HMULMULBLBL ;(;(AXAX)=0AD3H=0AD3H(2 2)有符號(hào)乘指令)有符號(hào)乘指令I(lǐng)MULIMUL語句格式:語句格式:IMUL OPSIMUL OPS功能:字節(jié)乘法:(功能:字節(jié)乘法:(ALAL)* *(OPSOPS)AXAX,字乘法:(字乘法:(AXAX)* *

38、(OPSOPS)DXDX、AXAX。IMULIMUL指令除計(jì)算對(duì)象是帶符號(hào)二進(jìn)制數(shù)外,其他都與指令除計(jì)算對(duì)象是帶符號(hào)二進(jìn)制數(shù)外,其他都與MULMUL一樣,一樣,但計(jì)算結(jié)果不同。但計(jì)算結(jié)果不同。 【例】有符號(hào)數(shù)【例】有符號(hào)數(shù)0 0B4HB4H與與1111H H相乘。相乘。MOVMOVALAL,0B4H0B4H;(;(ALAL)=B4H=B4HMOVMOVBLBL,11H11H;(;(BLBL)=11H=11HIMULIMULBLBL ;(;(AXAX)=0FAF4H=0FAF4H4 除法運(yùn)算指令除法運(yùn)算指令(1)無符號(hào)除指令無符號(hào)除指令DIV(2 2)有符號(hào))有符號(hào)除指令除指令I(lǐng)DIV(3)符號(hào)

39、擴(kuò)展指令符號(hào)擴(kuò)展指令(1 1)無符號(hào)除指令)無符號(hào)除指令DIVDIV語句格式:語句格式:DIV OPSDIV OPS功能:功能: 字節(jié)除法(字節(jié)除法(AXAX)/ /(OPSOPS) AL AL(商)、商)、AHAH(余數(shù))余數(shù)) 字除法(字除法(DXDX、AXAX)/ /(OPSOPS) AX AX(商)、商)、DXDX(余數(shù))余數(shù))【例寫出實(shí)現(xiàn)無符號(hào)數(shù)【例寫出實(shí)現(xiàn)無符號(hào)數(shù)04000400H / 0B4HH / 0B4H運(yùn)算的程序段。運(yùn)算的程序段。MOVMOVAXAX,0400H0400H ;(;(AXAX)=0400H=0400HMOVMOVBLBL,0B4H0B4H;(;(BLBL)=0

40、B4H=0B4HDIVDIVBLBL ;商(商(ALAL)=05H=05H,余數(shù)(余數(shù)(AHAH)=7CH =7CH (2 2)有符號(hào)有符號(hào)除指令除指令I(lǐng)DIVIDIV語句格式:語句格式:IDIV OPSIDIV OPS功能:功能:字節(jié)除法:(字節(jié)除法:(AXAX)/ /(OPSOPS) AL AL(商)、商)、AHAH(余數(shù))余數(shù))字除法:(字除法:(DXDX,AXAX)/ /(OPSOPS) AX AX (商)、商)、DXDX(余數(shù))余數(shù))除法指令除法指令DIVDIV和和IDIVIDIV雖然對(duì)標(biāo)志的影響未定義,但可產(chǎn)生溢出。雖然對(duì)標(biāo)志的影響未定義,但可產(chǎn)生溢出。【例】寫出實(shí)現(xiàn)有符號(hào)數(shù)【例】

41、寫出實(shí)現(xiàn)有符號(hào)數(shù)04000400H /0B4HH /0B4H運(yùn)算的程序段。運(yùn)算的程序段。MOVMOVAXAX,0400H0400H;(;(AXAX)=0400H=0400HMOVMOVBXBX,0B4H0B4H;(;(BXBX)=0B4H=0B4HIDIVIDIVBXBX ;(;(ALAL)=0F3H=0F3H,(,(AHAH)=24H=24H(3 3) 符號(hào)擴(kuò)展指令符號(hào)擴(kuò)展指令 1 1)字節(jié)轉(zhuǎn)換成字指令)字節(jié)轉(zhuǎn)換成字指令CBWCBW語句格式:語句格式:CBWCBW功能:將功能:將ALAL中的符號(hào)位數(shù)據(jù)擴(kuò)展至中的符號(hào)位數(shù)據(jù)擴(kuò)展至AHAH。【例】將字節(jié)數(shù)據(jù)擴(kuò)展成字?jǐn)?shù)據(jù)。例】將字節(jié)數(shù)據(jù)擴(kuò)展成字?jǐn)?shù)據(jù)

42、。MOVMOVALAL,0A5H0A5H;(;(ALAL)=0A5H=0A5HCBWCBW ;(;(AXAX)=0FFA5H=0FFA5HADDADDALAL,70H70H;(;(ALAL)=25H=25HCBWCBW ;(;(AXAX)=0025H=0025H2 2)將字轉(zhuǎn)換成雙字指令)將字轉(zhuǎn)換成雙字指令CWDCWD語句格式:語句格式:CWDCWD功能:將功能:將AXAX中的符號(hào)位數(shù)據(jù)擴(kuò)展至中的符號(hào)位數(shù)據(jù)擴(kuò)展至DX DX 。【例】將字?jǐn)?shù)據(jù)擴(kuò)展成雙字?jǐn)?shù)據(jù)。例】將字?jǐn)?shù)據(jù)擴(kuò)展成雙字?jǐn)?shù)據(jù)。MOVMOVDXDX, 0 0;(;(DXDX)=0=0MOVMOVAXAX, 0FFABH 0FFABH;(;

43、(AXAX)=0FFABH=0FFABHCWDCWD;(;(DXDX)=0FFFFH =0FFFFH (AXAX)=0FFABH=0FFABH5 十進(jìn)制調(diào)整指令十進(jìn)制調(diào)整指令(1)加法的十進(jìn)制調(diào)整指令加法的十進(jìn)制調(diào)整指令DAA DAA (2)減法的十進(jìn)制調(diào)整指令減法的十進(jìn)制調(diào)整指令DASDAS(3)加法的非壓縮)加法的非壓縮BCD碼調(diào)整指令碼調(diào)整指令A(yù)AA(4)減)減法的非壓縮法的非壓縮BCD碼調(diào)整指令碼調(diào)整指令A(yù)AS(1 1)加法的十進(jìn)制調(diào)整指令)加法的十進(jìn)制調(diào)整指令DAA DAA 語句格式:語句格式:DAADAA功能:如果功能:如果ALAL寄存器中低寄存器中低4 4位大于位大于9 9或輔助

44、進(jìn)位(或輔助進(jìn)位(AFAF)=1=1,則(則(ALAL)= =(ALAL)+6+6且(且(AFAF)=1=1;如果(如果(ALAL)=0A0H=0A0H或(或(CFCF)=1=1,則(則(ALAL)= =(ALAL)+60H+60H且(且(CFCF)=1=1。同時(shí),同時(shí),SFSF、ZFZF、PFPF均有影響。均有影響。【例】壓縮【例】壓縮BCDBCD碼的加法運(yùn)算。碼的加法運(yùn)算。MOV ALMOV AL,68H68H ;(;(ALAL)=68H=68H,表示壓縮表示壓縮BCDBCD碼碼6868MOV BLMOV BL,28H28H ;(;(BLBL)=28H=28H,表示壓縮表示壓縮BCDBCD

45、碼碼2828ADD ALADD AL,BLBL;二進(jìn)制加法:(二進(jìn)制加法:(ALAL)=68H+28H=90H=68H+28H=90HDAADAA ;十進(jìn)制調(diào)整:(十進(jìn)制調(diào)整:(ALAL)=96H=96H ;實(shí)現(xiàn)壓縮實(shí)現(xiàn)壓縮BCDBCD碼加法:碼加法:68+28=9668+28=96(2 2)減法的十進(jìn)制調(diào)整指令)減法的十進(jìn)制調(diào)整指令DASDAS語句格式:語句格式:DASDAS功能:如果(功能:如果(AFAF)=1=1或或ALAL寄存器中低寄存器中低4 4位大于位大于9 9,則(,則(ALAL)= =(ALAL)6 6且(且(AFAF)=1=1;如果(如果(ALAL)=0A0H=0A0H或(或

46、(CFCF)=1=1,則則(ALAL)= =(ALAL)60H60H且(且(CFCF)=1=1。同時(shí)同時(shí)SFSF、ZFZF、PFPF均受影響。均受影響。【例】壓縮【例】壓縮BCDBCD碼的減法運(yùn)算。碼的減法運(yùn)算。MOVMOVALAL,68H 68H ;(;(ALAL)=68H=68H,表示壓縮表示壓縮BCDBCD碼碼6868MOVMOVBLBL,28H 28H ;(;(BLBL)=28H=28H,表示壓縮表示壓縮BCDBCD碼碼2828SUBSUBALAL,BLBL ;二進(jìn)制減法:(二進(jìn)制減法:(ALAL)=68H=68H28H=40H28H=40HDASDAS ;十進(jìn)制調(diào)整:(十進(jìn)制調(diào)整:(

47、ALAL)=40H=40H ;實(shí)現(xiàn)壓縮實(shí)現(xiàn)壓縮BCDBCD碼減法:碼減法:686828=4028=40(3)加法的非壓縮)加法的非壓縮BCD碼調(diào)整指令碼調(diào)整指令A(yù)AA語句格式:語句格式:AAA 功能:如果功能:如果AL的低的低4位大于位大于9或(或(AF)=1,則:則:(AL)=(AL)+6(AH)=(AH)+1(AF)=(CF)=1 且且AL高高4位清零。位清零。否則:(否則:(CF)=(AF)=0AL高高4位清零。位清零。(4 4)減法的非壓縮)減法的非壓縮BCDBCD碼調(diào)整指令碼調(diào)整指令A(yù)ASAAS語句格式:語句格式:AAS AAS 功能:如果功能:如果ALAL的低的低4 4位大于位大于

48、9 9或(或(AFAF)=1=1,則:則:(ALAL)= =(ALAL)6 6(AHAH)= =(AHAH)1 1(AFAF)= =(CFCF)=1=1ALAL高高4 4位清零。位清零。否則:(否則:(CFCF)= =(AFAF)=0=0 AL AL高高4 4位清零。位清零。其他標(biāo)志位其他標(biāo)志位OFOF、PFPF、SFSF、ZFZF不確定。不確定。3.2.3 邏輯運(yùn)算與移位指令邏輯運(yùn)算與移位指令1 邏輯運(yùn)算指令邏輯運(yùn)算指令2 移位指令移位指令 3 循環(huán)移位指令循環(huán)移位指令1 邏輯運(yùn)算指令邏輯運(yùn)算指令(1 1)求反指令)求反指令NOTNOT(2 2)邏輯乘指令)邏輯乘指令A(yù)NDAND(3 3)測(cè)

49、試指令)測(cè)試指令TESTTEST(4 4)邏輯加指令)邏輯加指令OROR(5 5)按位加指令)按位加指令XORXOR(1 1)求反指令)求反指令NOTNOT語句格式:語句格式:NOT OPDNOT OPD功能:將目的地址中的內(nèi)容逐位取反后送功能:將目的地址中的內(nèi)容逐位取反后送入目的地址。即(入目的地址。即(OPDOPD)OPD OPD 【例】邏輯非運(yùn)算。例】邏輯非運(yùn)算。MOVMOV AXAX,878AH878AH;(;(AXAX)=878AH=878AHNOTNOT AXAX, ;(;(AXAX)=7875H=7875H(2 2)邏輯乘指令)邏輯乘指令A(yù)NDAND語句格式:語句格式:AND O

50、PDAND OPD, OPS OPS功能:將目的操作數(shù)和源操作數(shù)進(jìn)行邏輯乘運(yùn)算,功能:將目的操作數(shù)和源操作數(shù)進(jìn)行邏輯乘運(yùn)算,結(jié)果存目的地址。結(jié)果存目的地址。即(即(OPDOPD)(OPSOPS)OPDOPD。該指令用于清除目的操作數(shù)中與源操作數(shù)置該指令用于清除目的操作數(shù)中與源操作數(shù)置0 0的對(duì)應(yīng)的對(duì)應(yīng)位。說明:邏輯乘的運(yùn)算法則為:位。說明:邏輯乘的運(yùn)算法則為:11=111=1,10=010=0,01=001=0,00=000=0【例】將【例】將ALAL中第中第3 3位和第位和第7 7位清零。位清零。 MOV MOVALAL,0FFH 0FFH AND ANDALAL,77H 77H (3 3)

51、測(cè)試指令)測(cè)試指令TESTTEST語句格式:語句格式:TEST OPDTEST OPD,OPSOPS功能:源地址和目的地址的內(nèi)容執(zhí)行按位的邏輯功能:源地址和目的地址的內(nèi)容執(zhí)行按位的邏輯乘運(yùn)算,結(jié)果不送入目的地址。乘運(yùn)算,結(jié)果不送入目的地址。即(即(OPDOPD)(OPSOPS)。)。【例】測(cè)試【例】測(cè)試AXAX中的第中的第1212位是否為位是否為0 0,不為,不為0 0則轉(zhuǎn)則轉(zhuǎn)L L。TESTTEST AXAX,1000H1000HJNEJNEL L (4 4)邏輯加指令)邏輯加指令OROR語句格式:語句格式:OR OPDOR OPD,OPSOPS功能:將目的操作數(shù)和源操作數(shù)進(jìn)行邏輯加運(yùn)算,結(jié)

52、果存目功能:將目的操作數(shù)和源操作數(shù)進(jìn)行邏輯加運(yùn)算,結(jié)果存目的地址。的地址。即(即(OPDOPD)(OPSOPS)OPDOPD。說明:邏輯加的運(yùn)算法則為:說明:邏輯加的運(yùn)算法則為:11=111=1,10=110=1,01=101=1,00=000=0。【例】將【例】將ALAL寄存器中第寄存器中第3 3位和第位和第7 7位置位置1 1。MOVMOVALAL,0 0 OR OR ALAL,88H 88H (5 5)按位加指令)按位加指令XORXOR語句格式:語句格式: XOR OPDXOR OPD,OPSOPS功能:目的操作數(shù)與源操作數(shù)做按位加運(yùn)算,結(jié)果送入目功能:目的操作數(shù)與源操作數(shù)做按位加運(yùn)算,

53、結(jié)果送入目的地址。的地址。即(即(OPDOPD)(OPS) OPD(OPS) OPD。說明:按位加的運(yùn)算法則為;說明:按位加的運(yùn)算法則為;11=011=0,10=110=1,01=101=1,00=000=0。【例】按位加運(yùn)算。【例】按位加運(yùn)算。MOVMOVALAL,45H45H;(;(ALAL)=45H=45HXORXORALAL,31H31H;(;(ALAL)=74H=74H2 2 移位指令移位指令 移位指令包括算術(shù)移位指令、邏輯移位指令和循環(huán)移位指令包括算術(shù)移位指令、邏輯移位指令和循環(huán)移位指令,分別進(jìn)行左移和右移操作。這些指令均有統(tǒng)移位指令,分別進(jìn)行左移和右移操作。這些指令均有統(tǒng)一的語句

54、格式:一的語句格式: 標(biāo)號(hào):標(biāo)號(hào): 操作符操作符OPDOPD,1 1或或 標(biāo)號(hào):標(biāo)號(hào): 操作符操作符OPDOPD,CLCL 其功能為將目的操作數(shù)的所有位按操作符規(guī)定的方其功能為將目的操作數(shù)的所有位按操作符規(guī)定的方式移動(dòng)式移動(dòng)1 1位或按寄存器位或按寄存器CLCL規(guī)定的次數(shù)(規(guī)定的次數(shù)(0 0255255)移動(dòng),)移動(dòng),結(jié)果送入目的地址。目的操作數(shù)是結(jié)果送入目的地址。目的操作數(shù)是8 8位(或位(或1616位)的寄位)的寄存器數(shù)據(jù)或存儲(chǔ)器數(shù)據(jù)。存器數(shù)據(jù)或存儲(chǔ)器數(shù)據(jù)。(1 1)算術(shù)左移和邏輯左移指令)算術(shù)左移和邏輯左移指令SALSAL(SHLSHL)語句格式:語句格式:SAL OPDSAL OPD,

55、1 1 或或SHL OPDSHL OPD,1 1 SAL OPD SAL OPD,CLCL或或SHL OPDSHL OPD,CLCL功能:將(功能:將(OPDOPD)向左移動(dòng)向左移動(dòng)CLCL指定的次數(shù),最低指定的次數(shù),最低位補(bǔ)入相應(yīng)的,的內(nèi)容為最后移入位的位補(bǔ)入相應(yīng)的,的內(nèi)容為最后移入位的值。值。(2 2)算術(shù)右移指令)算術(shù)右移指令SARSAR語句格式:語句格式:SAR OPDSAR OPD,1 1或或SAR OPDSAR OPD,CLCL功能:將(功能:將(OPDOPD)向右移動(dòng)向右移動(dòng)CLCL指定的次數(shù)且最指定的次數(shù)且最高位保持不變;高位保持不變;CFCF的內(nèi)容為最后移入位的值。的內(nèi)容為最

56、后移入位的值。【例】算術(shù)右移運(yùn)算。【例】算術(shù)右移運(yùn)算。MOVMOV BHBH,0F4H0F4H ;(;(BHBH)=0F4H=0F4HMOVMOV CLCL, 2 2;(;(CLCL)=2=2SARSAR BHBH, CL CL ;(;(BHBH)=0FDH=0FDH,(,(CFCF)=0=0該例語句該例語句“SARSARBHBH,CL”CL”實(shí)際上完成了實(shí)際上完成了(BHBH)BHBH的運(yùn)算,所以,用的運(yùn)算,所以,用SARSAR指令指令可以實(shí)現(xiàn)對(duì)有符號(hào)數(shù)除可以實(shí)現(xiàn)對(duì)有符號(hào)數(shù)除2 2n n的運(yùn)算(的運(yùn)算(n n為移位為移位次數(shù))。次數(shù))。(3 3)邏輯右移指令)邏輯右移指令SHRSHR語句格式

57、:語句格式:SHR OPDSHR OPD,1 1或或SHR OPDSHR OPD,CLCL功能:將(功能:將(OPDOPD)向右移動(dòng)向右移動(dòng)CLCL規(guī)定的次數(shù),最高位規(guī)定的次數(shù),最高位補(bǔ)入相應(yīng)個(gè)數(shù)的,補(bǔ)入相應(yīng)個(gè)數(shù)的,CFCF的內(nèi)容為最后移入位的值。的內(nèi)容為最后移入位的值。 3. 3. 循環(huán)移位指令循環(huán)移位指令(1 1)循環(huán)左移指令)循環(huán)左移指令ROLROL語句格式:語句格式:ROL OPDROL OPD,1 1或或ROL LPDROL LPD,CLCL功能:將目的操作數(shù)的最高位與最低位連成一功能:將目的操作數(shù)的最高位與最低位連成一個(gè)環(huán),將環(huán)中的所有位一起向左移動(dòng)個(gè)環(huán),將環(huán)中的所有位一起向左移動(dòng)

58、CLCL規(guī)定的規(guī)定的次數(shù)。次數(shù)。CFCF的內(nèi)容為最后移入位的值。的內(nèi)容為最后移入位的值。(2 2)循環(huán)右移指令)循環(huán)右移指令RORROR語句格式:語句格式: ROR OPDROR OPD,1 1或或ROR OPDROR OPD,CLCL功能:將目的操作數(shù)的最高位與最低位連成一功能:將目的操作數(shù)的最高位與最低位連成一個(gè)環(huán),將環(huán)中的所有位一起向右移動(dòng)個(gè)環(huán),將環(huán)中的所有位一起向右移動(dòng)CLCL規(guī)定的規(guī)定的次數(shù),次數(shù),CFCF的內(nèi)容為最后移入位的值。的內(nèi)容為最后移入位的值。(3 3)帶進(jìn)位的循環(huán)左移指令)帶進(jìn)位的循環(huán)左移指令RCLRCL語句格式:語句格式: RCL OPDRCL OPD, 1 1或或RC

59、L OPDRCL OPD,CLCL功能:將目的操作數(shù)連同功能:將目的操作數(shù)連同CFCF標(biāo)志一起向左循環(huán)標(biāo)志一起向左循環(huán)移動(dòng)移動(dòng)CLCL規(guī)定的次數(shù)。規(guī)定的次數(shù)。 (4 4)帶進(jìn)位的循環(huán)右移指令)帶進(jìn)位的循環(huán)右移指令RCRRCR語句格式:語句格式:RCR OPDRCR OPD,1 1或或RCR ODRCR OD,CLCL功能:將目的操作數(shù)連同功能:將目的操作數(shù)連同CFCF標(biāo)志一起向右循環(huán)標(biāo)志一起向右循環(huán)移動(dòng)所規(guī)定的次數(shù)。移動(dòng)所規(guī)定的次數(shù)。 3.2.4 串操作類指令串操作類指令串操作指令串操作指令 : 數(shù)據(jù)傳送類指令每次只能傳送一個(gè)數(shù)據(jù),若數(shù)據(jù)傳送類指令每次只能傳送一個(gè)數(shù)據(jù),若要傳送大批數(shù)據(jù)就需要重

60、復(fù)編程,這樣就浪費(fèi)了要傳送大批數(shù)據(jù)就需要重復(fù)編程,這樣就浪費(fèi)了大量的時(shí)間和空間。大量的時(shí)間和空間。 為此為此8086提供了一組處理主存中連續(xù)存放數(shù)提供了一組處理主存中連續(xù)存放數(shù)據(jù)串的指令據(jù)串的指令,這就是,這就是串操作指令。串操作指令。 下面流程圖總結(jié)了串操作的過程。下面流程圖總結(jié)了串操作的過程。圖圖 串操作流程圖串操作流程圖1 1傳送指令傳送指令MOVSMOVS語句格式:語句格式: MOVSBMOVSB字節(jié)串傳送字節(jié)串傳送 MOVSWMOVSW字串傳送字串傳送功能:將以功能:將以SISI為指針的源串中的一個(gè)字節(jié)(或字)為指針的源串中的一個(gè)字節(jié)(或字)存儲(chǔ)單元中的數(shù)據(jù)傳送至以存儲(chǔ)單元中的數(shù)據(jù)傳

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論