版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
《微機原理與接口技術》主講:田娟
信息工程學院電子信息教研室郵箱:jtian@電話4章指令系統4.1數據類型及其存儲規(guī)則(了解)4.2計算機指令格式(了解)4.38086的尋址方式(重點)4.48086的指令系統(重點)4.5DOS和BIOS中斷(重點)§4.1數據類型及其存儲規(guī)則
4.1.1基本數據類型及其存儲數據在存儲器中常以字節(jié)為單位進行存儲,一個字節(jié)占用內存的一個地址,稱為一個存儲單元。
8086微處理器指令系統中的基本數據類型為:字節(jié)、字。當多于一個字節(jié)的數據存儲時,其存儲規(guī)則是高位字節(jié)存儲在地址號高的存儲單元中,低位字節(jié)存儲在地址號低的存儲單元中。
圖4-1基本數據類型的結構形式§4.1數據類型及其存儲規(guī)則
4.1.2數字數據類型數字數據類型包含三部分,即:
無符號整數。當選擇字節(jié)時,范圍是0~255;當選擇字時,范圍是0~65535。
帶符號整數。當選擇字節(jié)時,范圍是-128~+127;當選擇字時,范圍是-32768~+32767。
浮點數。◆帶符號數的表示方法計算機中的帶符號的數,用二進制編碼表示,數的符號也用二進制表示。帶符號的數有三種表示方法:1、原碼2、反碼3、補碼數X的原碼記作[X]原反碼記作[X]反補碼記作[X]補在進行運算時,負數的符號位不能與其數值部分一道參加運算,而必須利用單獨的線路確定和的符號位,從而使計算機的結構變得復雜化。為了解決機器內復數的符號位參加運算的問題,引入了反碼和補碼兩種機器數形式。補充知識◆帶符號數的表示方法(續(xù))補充知識☆原碼表示法:原碼用數的最左邊一位(MSB)表示數的正負,即在D7或D15位加0或1。
符號位:0表示正,1表示負;數值位:真值的絕對值?!罘创a表示法:若X>0,則[X]反=[X]原若X<0,則[X]反=對應原碼的符號位不變,數值部分按位求反?!魩Х枖档谋硎痉椒ǎɡm(xù))補充知識☆補碼表示法:若X>0,則[X]補=[X]反=[X]原若X<0,則[X]補=[X]反+1§4.1數據類型及其存儲規(guī)則
4.1.3指針數據類型指針是內存單元的地址,在實方式下有兩種類型的指針:
近指針(near)是段內的16位偏移量(稱為有效地址)遠指針(far)是一個32位的邏輯地址,不僅包含16位有效地址,而且包含了16位段地址?!?.1數據類型及其存儲規(guī)則
4.1.4字符串、位及位串數據類型
字符串包括字節(jié)串、字串和雙字串,它們分別是字節(jié)、字和雙字的相鄰序列,其格式如圖4-4所示,其中N為地址,分別以字節(jié)、字和雙字為單位存取。§4.2計算機指令格式
引言計算機處理各種數據或完成某些其他任務都是通過執(zhí)行具體指令來實現的。指令除了說明計算機做什么,還要指出數據的來源、操作結果的去向一條指令包括兩部分:指令操作碼(OperationCode)部分和地址碼部分。指令操作碼部分是給出該指令應完成何種操作,其長度(代碼位數)取決于指令系統中的指令條數。地址碼部分是用來描述該指令的操作對象,如給出參與操作的操作數的值是多少或者指出操作數存放在何處、操作的結果應送往何處等信息。根據地址碼部分所給出地址的個數,指令格式可分為:零地址指令、一地址指令、二地址指令和三地址指令。零地址指令指只有操作碼部分,而沒有操作數的指令。一地址指令指只有目的操作數的單操作數指令。二地址指令指有兩個地址指出兩個操作數的指令,這是最常見的指令格式。三地址指令的優(yōu)點是操作結束后,原兩個操作數的內容均未被破壞;其缺點是增加一個地址后,使指令碼加長,增加了存儲空間,取指時間變長?!?.2計算機指令格式
引言(續(xù))
4.2.1指令的助記符格式§4.2計算機指令格式80x86微處理器指令的助記符格式可用以下通式表示:
L:opDl,D2,D3L是標號,在標識符后面跟有冒號(:)。
op是助記符,具有相同功能的指令操作碼的保留名。
D1、D2、D3是任選的操作數參數,可以有零至三個。參數的個數取決于指令操作碼,可形成四種指令格式(零地址指令、一地址指令、二地址指令和三地址指令)。
最常用的是二地址指令格式,這種格式的指令中存在兩個操作數,右邊的是源操作數,左邊的是目的操作數。補充知識
[標號:]操作碼助記符[操作數][;注釋]其中[]為任選項。匯編語言指令語句的一般格式標號:該指令所在地址的符號名稱,后必跟“:”。由字母a~z或A~Z、數字0~9或特殊字符(@,-,?)組成;必須由字母a~z或A~Z或特殊字符(@,-,?)開頭,數字不能開頭,?不能單獨使用。有效長度為31個字符。標號不能使用指令助記符。規(guī)則:
操作碼助記符:是指令名稱的代表符號,不可缺省。
操作數:是參加本指令運算的數據,可以缺省。
注釋:如果帶注釋,前面必須用“;”開頭。該項可以缺省。
說明:操作數可以用表達式來表示,可在指令、寄存器、存儲器中存取。通常將指令執(zhí)行過程中保持原值不變的操作數稱為源操作數;若操作數原值不保留,而將存放此操作數的地址用來存放運行結果值,則稱此操作數為目的操作數。
[標號:]操作碼助記符[目的操作數][,源操作數][;注釋]
補充知識§4.2計算機指令格式
4.2.280x86指令編碼格式(自學)見課本P82~85。計算機中的指令有些不需要操作數,大多數指令采用一個或兩個操作數。一般來說,操作數可以跟隨在指令操作碼之后,稱為立即數;操作數也可以存放在CPU內部的寄存器中,稱為寄存器操作數;絕大多數的操作數存放在內存儲器中,稱為存儲器操作數。指令指定操作數的位置,即給出地址信息,在執(zhí)行時需要根據這個地址信息找到需要的操作數。這種尋找操作數的過程稱為尋址,而尋找操作數的方法稱為尋址方式。補充知識-幾個重要概念§4.38086的尋址方式
引言尋址方式就是指令中說明操作數所在地址的方法。操作數可以包含在寄存器、存儲器或I/O端口地址中,也可以是立即數。操作數在寄存器中的指令執(zhí)行速度最快(寄存器尋址),因為它們可以在CPU內部立即執(zhí)行。立即數尋址指令可直接從指令隊列中取數,所以執(zhí)行速度也較快。操作數在存儲器中的指令執(zhí)行速度較慢,因為它要通過總線與CPU之間交換數據,當CPU進行讀寫存儲器的操作時,必須先把一個偏移量送到BIU,計算出20位物理地址,再執(zhí)行總線周期去存取操作數。§4.38086的尋址方式
4.3.1立即尋址在立即尋址(ImmediateAddressing)方式下,操作數直接包含在指令中,它是一個8位或16位的常數(只能是整數,不能是小數、變量或者其他類型的數據),也叫立即數。該指令翻譯成機器碼時,立即數作為指令的一部分,緊跟在操作碼之后,存放在代碼段內。立即尋址方式的指令常用來給寄存器賦初值。立即數不但可以送到寄存器中,而且還可以送到一個存儲單元(8位)中或兩個連續(xù)的存儲單元(16位)中去。要強調的是,在所有的指令中,立即數只能作源操作數,不能作目的操作數,位數要與目的操作數的位數一致。
以A~F打頭的數字出現在指令中時,前面一定要加一個數字“0”,以免與其它符號相混淆。
如:MOVCX,2A50H;將立即數2A50H送到CX寄存器中。指令的機器碼存放及執(zhí)行過程如圖4-8所示。圖4-8MOVCX,2A50H執(zhí)行過程2A50CLCHCX代碼段:操作碼502AMOVCX,2A50H指令代碼:§4.38086的尋址方式
4.3.2寄存器尋址在寄存器尋址(RegisterAddressing)方式下,操作數包含在寄存器中,由指令指定寄存器的名稱。
對于16位操作數,寄存器可以是AX、BX、CX、DX、SI、DI、SP和BP等。
對于8位操作數,則用寄存器AH、AL、BH、BL、CH、CL、DH和DL。
源操作數的長度必須與目的操作數一致,否則會出錯。如:MOVCL,AH;它表示將AH中的8位數據傳送到CL寄存器。MOVCX,AH;錯誤書寫已知(AX)=3A68H,(DX)=18C7H,則執(zhí)行指令MOVDX,AX后,(DX)=?,而AX=?例題:答案:(DX)=3A68H
,而AX=3A68H?!?.38086的尋址方式
4.3.3直接尋址在IBMPC機中,把操作數的偏移地址稱為有效地址EA。使用直接尋址方式(DirectAddressing)的指令時,存儲單元的EA直接由指令給出,在機器碼中,EA存放在CS指令的操作碼之后。須先求出操作數的物理地址,然后再訪問存儲器,才能取得操作數。指令中的常數地址必須用方括號括起來,以便與立即數相區(qū)別。如:
MOVAX,[2000H];當采用直接尋址指令時,若指令中沒有用前綴指明操作數存放在哪一段,則默認為段寄存器為DS,因此操作數的物理地址=DS×16+EA。如果要對CS、SS或ES寄存器所指出的存儲區(qū)進行直接尋址,應在指令中指定段超越前綴。如:MOVAX,ES:[500H];這里的冒號“:”稱為修改屬性運算符,該指令的源操作數的物理地址即為16×ES+500H。如:MOVAX,[2000H]
該指令給出操作數的有效地址EA=2000H,設DS=3000H,則源操作數的物理地址=3000H×16H+2000H=32000H。該指令執(zhí)行完,把地址32000H處的一個字送進AX。若地址32000H中的內容為34H,32001H中的內容為12H。則執(zhí)行指令后,(AX)=1234H。指令執(zhí)行過程見圖4-9所示。若指令為:MOVAL,[2000H]
假設所有條件都和圖4-9相同,則該指令執(zhí)行后將存儲單元(32000H)=34H中的字節(jié)送到AL中,結果為(AL)=34H。圖4-9MOVAX,[2000H]執(zhí)行過程示意圖3000DS+200032000×10H:3412320001234ALAHAX數據段:代碼段:操作碼0020MOVAX,[2000H]指令代碼:執(zhí)行指令MOVBX,[1070H]后,BX=?練習:答案:BX=5634H?!?.38086的尋址方式
4.3.4寄存器間接尋址指令中給出的寄存器中的值不是操作數本身,而是操作數的有效地址,這種尋址方式稱為寄存器間接尋址。
寄存器名稱外面必須加方括號,以與寄存器尋址方式相區(qū)別。這類指令中使用的寄存器有基址寄存器BX、BP及變址寄存器SI、DI。如果指令中指定的寄存器是BX、SI或DI,則默認操作數存放在DS中,這時要用數據段寄存DS的內容作為段地址。若指令中用寄存器BP進行間接尋址,則默認操作數在SS段中,操作數的段地址在SS中。如:MOVAX,[BP]例4-2設DS=1000H,SI=2000H,(12000H)=318BH;分析指令MOVBX,[SI]執(zhí)行后寄存器BX的結果。圖4-10例4-2指令執(zhí)行過程示意圖1000DS+SI200012000×10H:8B3112000318BBLBHBX數據段:代碼段:操作碼0020MOVBX,[SI]指令代碼:答案:BX=318BH?!?.38086的尋址方式
4.3.5寄存器(間接)相對尋址寄存器相對尋址方式的操作數的有效地址是一個基址或變址寄存器的內容與指令中指定的8位或16位位移量之和。對BX、SI、DI這三個間址寄存器,指示的是數據段中的數據;而用BP作間址寄存器,則指示的是堆棧段中的數據。寄存器相對尋址方式與寄存器間接尋址相似,主要區(qū)別是前者在有效地址上要加一個位移量(即帶位移量的寄存器間接尋址)如:MOVBX,COUNT[SI]等價于MOVBX,[COUNT+SI]這種尋址方式也允許使用段超越前綴。例4-3設DS=3000H,SI=2000H,位移量COUNT=4000H,(36000H)=5678H,分析指令“MOVBX,COUNT[SI]”執(zhí)行后寄存器BX的結果。執(zhí)行結果:BX=5678H。圖4-11例4-3指令執(zhí)行過程示意圖20003000DSSI+COUNT400036000×10H:7856360005678BLBHBX數據段:代碼段:操作碼0040MOVBX,COUNT[SI]指令代碼:§4.38086的尋址方式
4.3.6基址變址尋址(基址寄存器加變址寄存器間接尋址)基址加變址尋址(BasedIndexedAddressing)方式,操作數的有效地址是一個基址寄存器(BX或BP)和一個變址寄存器(SI或DI)的內容之和,兩個寄存器均由指令指定。如:MOVAX,[BX][SI]等價于MOVAX,[BX+SI]
例4-4設DS=3000H,BX=1200H,SI=0500H,(31700H)=ABCDH,分析指令“MOVAX,[BX][SI]”執(zhí)行后寄存器AX的結果。圖4-12例4-4指令執(zhí)行過程示意圖:CDAB31700ABCDALAHAX數據段:代碼段:操作碼MOVAX,[BX][SI]指令代碼:+317000500SI3000DS×10H1200BX執(zhí)行結果:AX=ABCDH?!?.38086的尋址方式
4.3.7相對基址變址尋址(基址寄存器加變址寄存器間接相對尋址)相對基址變址尋址(RelativeBasedIndexedAddressing)方式的操作數的有效地址是一個基址寄存器和一個變址寄存器的內容,再加上指令中指定的8位或16位位移量之和。如:MOVAX,MASK[BX][SI]MOVAX,[MASK+BX+SI]MOVAX,200H[BX+SI]MOVAX,MASK[BX+SI]
例4-5設DS=2000H,BX=1500H,SI=0300H,MASK=0200H,(21A00H)=26BFH,分析指令“MOVAX,MASK[BX][SI]”執(zhí)行后寄存器AX的結果。執(zhí)行結果:AX=26BFH圖4-13例4-5指令執(zhí)行過程示意圖1500BX+MASK020021A002000DS×10H:BF2621A0026BFALAHAX數據段:操作碼操作碼00代碼段:MOVAX,MASK[BX][SI]指令代碼:0300SI02
尋址方式中,只有三種操作數類型:立即數、寄存器、存儲器;可以按源、目的操作數分別確定尋址方式;尋址方式約定了隱含段寄存器,但允許超越;存儲器操作,讀/寫速度最慢;寄存器操作,讀/寫速度最快;在涉及操作數的地址時,常常要在指令中使用方括號,有關帶方括號的地址表達式必須遵循下列規(guī)則:立即數可以出現在方括號內,表示直接地址,例如[2000H]。
只有BX、BP、SI、DI這4個寄存器可以出現在[]內,它們可以單獨出現,也可以由幾個寄存器組合起來(只能相加),或以寄存器與常數相加的形式出現,但BX和BP寄存器不允許出現在同一個[]內,SI和DI也不能同時出現。
小結小結§4.48086的指令系統
引言就8086CPU而言,其指令系統共有133條指令。按功能分類,8086的指令共有六大類,分別是:數據傳送指令、算術運算指令、邏輯運算和移位指令、字符串處理指令、控制轉移指令以及處理器控制指令。表4-4中列出指令中的操作數的簡寫符號,是從IntelIA-32手冊上摘錄下來的。用這些符號來描述Intel指令的格式。表4-4指令中的操作數表示法操作數描述r88位通用寄存器:AH,AL,BH,BL,CH,CL,DH,DLr1616位通用寄存器:AX,BX,CX,DX,SI,DI,SP,BPr3232位通用寄存器:EAX,EBX,ECX,EDX,ESI,EDI,ESP,EBPreg任意的通用寄存器sreg16位段寄存器:CS,DS,SS,ES,FS,GSimm8位、16位或32位立即數imm88位立即數(字節(jié))imml616位立即數(字)imm3232位立即數(雙字)r/m88位操作數(可以是8位通用寄存器或內存字節(jié))r/m1616位操作數(可以是16位通用寄存器或內存字)r/m3232位操作數(可以是32位通用寄存器或內存雙字)mem8位、16位或32位內存操作數DOPDSrc源操作數,dst目的操作數§4.48086的指令系統
4.4.1數據傳送指令數據傳送指令用來把數據或地址傳送到寄存器或存儲器單元中,共14條,可分為4組:
通用數據傳送指令
累加器專用傳送指令
地址傳送指令
標志傳送指令格式:MOVDST,SRC;操作:DST←SRCMOV指令允許在CPU的寄存器之間、存儲器和寄存器之間傳送字節(jié)和字數據,(操作數類型要匹配,字對字,字節(jié)對字節(jié)傳送)也可將立即數送到寄存器或存儲器中(如圖4-14所示)。注意:IP寄存器不能用作源操作數或目的操作數,目的操作數也不允許用立即數和CS寄存器;除了源操作數為立即數外,兩個操作數中必有一個是存器,但不能都是段寄存器。MOV指令不能在兩個存儲單元之間直接傳送數據(源和目的不能同為存儲器操作數),也不能在兩個段寄存器之間直接傳送數據。
MOV指令不影響標志寄存器的值。
通用數據傳送指令☆
MOV傳送指令(Move)圖4-14MOV允許傳送數據的途徑通用寄存器AXAHBXALCXBHDXBLSICHDICLSPDHBPDL段寄存器CS,DS,ES,SS存儲器立即數從通用寄存器到通用寄存器。立即數傳送到通用寄存器。通用寄存器和存儲單元之間。立即數傳送到存儲單元。段寄存器與通用寄存器間的數據傳送。
段寄存器與存儲單元間的數據傳送。
允許的MOV指令的形式有如下幾種:小結MOVreg1,reg2MOVreg,immMOVmem(reg),reg(mem)MOVmem,immMOVseg,reg或MOVreg,segMOVsreg,mem或MOVmem,sreg小結不能在兩個存儲單元之間傳送。立即數不能送段寄存器。段寄存器之間不能傳送。
CS不能做目的但可做源操作數。不允許的MOV指令的形式有如下幾種:MOV[1000H],[2000H]MOVDS,300HMOVDS,ESMOVCS,AXMOVAX,CSMOVAX,BL××∨小結修改:MOVAX,300HMOVDS,AX×××修改:MOVAX,[2000H]MOV[1000H],AX通用數據傳送指令☆PUSH進棧指令(PushWordontoStack)原則:按“后進先出”原則設計的數據區(qū)。堆棧段地址:由SS段寄存器提供。堆棧區(qū)操作數據地址:由堆棧指針寄存器SP提供。SP的初值是指向的地址為棧底,進行堆棧數據操作后SP指向棧頂地址。格式:PUSHSRC;將源操作數(SRC)推入堆棧。(SP)←(SP)-2,((SP)+1,(SP))←(SRC)(先減后壓)說明:源操作數是16位通用寄存器、段寄存器或存儲器中的數據字,不能是立即數。有下列形式:PUSHreg/mem/sreg。進棧指令不影響標志位。通用數據傳送指令☆POP出棧指令(PopWordoffStack)格式:POPdst;把當前SP所指向的堆棧頂部的一個字送到指定的目的操作數中。(DST)←((SP)+1,(SP)),(SP)←(SP)+2(先出后加)說明:有下列形式:POPreg/mem/sreg。其中CS可以壓棧但不能作目的操作數。標志位不受影響。
例4-6設SS=2000H,SP=40H,BX=3120H,AX=25FEH,依次執(zhí)行下列指令后堆棧中的數據和SP的變化情況如何?PUSHBXPUSHAXPOPBXPOPAX20000:000020000:003C20000:0040FE252031AX=25FEHBX=3120H(c)執(zhí)行PUSHAX指令后SP20000:000020000:003E20000:0040FE252031AX=25FEHBX=25FEH(d)執(zhí)行POPBX指令后SP圖4-15PUSH和POP指令執(zhí)行過程20000:000020000:0040AX=25FEHBX=3120H(a)指令執(zhí)行前SP20000:000020000:003E20000:00402031AX=25FEHBX=3120H(b)執(zhí)行PUSHBX指令后SP通用數據傳送指令☆XCHG交換指令(Exchange)格式:XCHGOPR1,OPR2;操作:(OPR1)(OPR2)說明:交換可以在reg之間、reg與mem之間進行,但sreg不能作為操作數,也不能直接交換兩個存儲單元中的內容。舉例:設AX=2000H,DS=3000H,BX=1800H,(31A00H)=1995H,執(zhí)行下面指令:XCHGAX,[BX+200H]后,它把內存中的一個字與AX中的內容進行交換,源操作數的物理地址=3000×10H+1800H+200H=31A00H,該地址處存放的字數據為1995H。因此,指令執(zhí)行后,AX=1995H,(31A00H)=2000H。格式:XLAT表首地址或XLAT操作:(AL)←((BX)+(AL))。將AL中的值(碼)轉換為內存表格中的某一值,再送回AL中說明:使用XLAT指令之前必須先建立一個表格,并將轉換表的起始地址裝入BX寄存器中。AL中事先也送一個初值,該值等于表頭地址與所要查找的某一項之間的位移量。表格中的內容則是要轉換的代碼,表格最多包含256個字節(jié)。執(zhí)行XLAT指令后,根據位移量可以從表中查到轉換后的代碼值,并自動送入AL寄存器中,得到所需結果。累加器專用傳送指令☆XLAT表轉換指令累加器專用傳送指令☆輸入輸出指令(I/O指令)I/O指令是專門面向輸入輸出端口進行讀寫的指令。輸入指令IN:用于從I/O端口讀數據到累加器AL(或AX)中;輸出指令OUT:用于將累加器AL(或AX)中的數據寫到I/O端口。8086/8088的I/O指令中,只允許用兩種尋址方式:
直接尋址方式:指令中包含了一個8位的I/O端口地址,允許尋址256個端口,端口地址為0~0FFH。
寄存器間接尋址方式:端口地址由DX寄存器指定,可尋址64K個端口(0~0FFFFH)。間接尋址的適用范圍較大,在編寫程序時要盡量采用這種方式。INAL,PORT
;直接尋址,PORT為8位立即數,表示端口地址,從PORT端口讀一個字節(jié)送ALINAX,PORT
;直接尋址,從PORT和PORT+l兩個端口讀一個字送AXINAL,DX
;間接尋址,16位端口地址由DX指出,從(DX)所指的端口讀一個字節(jié)送ALINAX,DX
;間接尋址,從(DX)和(DX+1)所指的兩個端口讀一個字到AX,;低地址端口的內容送入AL,高地址端口的內容送入AH☆輸入指令IN(Intput)☆輸出指令OUT(Output)OUTPORT,AL
;將AL中的一個字節(jié)輸出到PORT端口OUTPORT,AX
;將AX中的一個字輸出到PORT和PORT+l兩個端口OUTDX,
AL
;DX中為端口地址,將AL中的字節(jié)送(DX)所指的端口OUTDX,
AX
;將AX中的字送(DX)和(DX)+l所指的兩個端口INAL,0F1H INAX,80H
MOVDX,3l0H INAL,DXOUT85H,AL MOVDX,0FF4HOUTDX,AL MOVDX,300H OUTDX,AX 舉例:地址傳送指令☆取有效地址指令:LEA(LoadEffectiveAddress)格式:LEAreg16,mem;(reg16)←mem的偏移地址功能:取源操作數地址的偏移量,并把它傳送到目的操作數制定的寄存器。標志位:不受影響。LEA指令要求源操作數必須是存儲單元,而且目的操作數必須是一個除CS之外的16位寄存器。注意它與MOV指令的區(qū)別,MOV指令傳送的一般是源操作數中的內容而不是地址。地址傳送指令☆將雙字指針送到寄存器和DS的指令:LDS格式:LDSreg16,mem32功能:從mem32指定的存儲單元地址開始,將連續(xù)4字節(jié)單元中的內容,分別送入制定寄存器reg16和DS中。其中前2個字節(jié)(變量的偏移地址)送到reg16,后2個字節(jié)(變量的段地址)送入DS寄存器。標志位:不受影響。指令中的reg16通常使用SI寄存器,不能使用sreg。mem32必須是存儲單元,從該存儲單元開始的連續(xù)4個字節(jié)單元中,存放著一個變量的地址指針。地址傳送指令☆將雙字指針送到寄存器和ES的指令:LES格式:LESreg16,mem32功能:該指令與LDS指令的操作基本相同,不同的是要將mem32所指向的地址指針中的段地址部分送到ES寄存器中,不是DS寄存器,reg16常用DI寄存器。標志傳送指令☆LAHF(LoadAHfromFlags)標志寄存器低8為送入AH格式:LAHF功能:把標志寄存器SF、ZF、AF、PF和CF分別傳送到AH寄存器的位7,6,4,2和0,位5,3,1的內容未定義,可以是任意值。執(zhí)行指令后,標志位不受影響?!頢AHF(StoreAHintoFlags)AH送標志寄存器低8位格式:SAHF功能:把AH內容存入標志寄存器。這條指令與LAHF的操作相反,它把寄存器AH中的7,6,4,2,0位傳送到標志寄存器的SF、ZF、AF、PF和CF位,高位標志OF、DF、IF和TF不受影響?!頟USHF(PushFlagsontoStack)標志寄存器入棧指令格式:PUSHF☆POPF(PopFlagsoffStack)標志出棧指令格式:POPF§4.48086的指令系統
4.4.2算術運算指令8086/8088指令系統提供了加、減、乘、除四種基本運算指令,可處理無符號或帶符號的8位或16位二進制數的算術運算,還提供了各種調整操作指令,故可進行壓縮的或非壓縮的十進制數的算術運算?!?/p>
ADD(Addition)加法指令格式:ADDDST,SRC操作:DST←SRC+DST☆ADC(AdditionwithCarry)帶進位的加法指令格式:ADCDST,SRC操作:DST←DST+SRC+CF說明:這兩條指令的SRC可以是reg、mem或imm,DST只能用seg和存儲單元。
源和目的操作數不能同時為存儲器,且類型必須一致。這兩條指令影響的標志位為:CF、OF、PF、SF、ZF和AF。加法指令☆INC(Increment)增量指令格式:INCOPR操作:OPR←OPR+1說明:OPR操作數可以在通用reg或內存中。該指令主要用在循環(huán)程序中對地址指針和循環(huán)計數器等進行修改。指令執(zhí)行后影響AF、OF、PF、SF和ZF,但CF不受影響。INC在對內存操作時必須加WORDPTR[]、BYTEPTR[]指令。
☆
AAA(ASCIIAdjustforAddition)加法的ASCII調整指令格式:AAA;非壓縮BCD碼加法累加器調整指令功能:在用ADD或ADC指令對兩個非壓縮十進制數或ASCII碼表示的十進制數作加法后,運算結果已存在AL的情況下,AAA指令將AL寄存器中的運算結果調整為非壓縮十進制數,仍保留在AL中,如果AF=1,表示向高位有進位,則進到AH寄存器中。加法指令例4-8若AH=0,AL寄存器中存放BCD碼數9,BL寄存器中存放BCD碼數5,寫出兩寄存器相加的指令語句。解:指令語句如下:ADDAL,BL
AAA00001001…9+00000101…500001110…低4位>9+00000110…加6調整00010100∧00001111…清高4位00000100…AL=4CF=1,AF=1,AH=1結果為AX=0104H,表示非壓縮十進制數14。
調整過程為:若AL低4位>9或半進位標志AF=1,則:AL←AL+6;用與操作(∧)將AL高4位清0;
AF置1,CF置1,AH←AH+1。否則,僅將AL寄存器的高4位清0。格式:DAA功能:將兩個壓縮BCD數相加后的結果調整為正確的壓縮BCD數。相加后的結果必須在AL中,才能使用DAA指令。調整過程為:做加法后AL中的低半字節(jié)﹥9或AF=1,則AL←AL+6,對低半字節(jié)進行調整。做加法后AL中高半字節(jié)結果﹥9或CF=l,則AL←AL+60H,對高半字節(jié)進行調整,并使CF置l,否則CF置0。加法指令☆DAA(DecimalAdjustforAddition)加法的十進制調整指令(壓縮BCD碼加法累加器調整指令)例4-9若AL寄存器中存放BCD碼數88,BL寄存器中存放BCD碼數49,寫出兩寄存器相加的指令語句。解:指令代碼如下:ADDAL,BLDAA10001000…88+01001001…4911010001…AF=1+00000110…加6調整11010111…調整后高半字節(jié)>9∧01100000…加60H調整00110111…結果為AL=BCD37,CF=1減法指令☆
SUB(Subtraction)不帶借位的減法指令格式:SUBDST,SRC操作:DST←DST-SRC?!頢BB(SubtractwithBorrow)帶借位的減法指令格式:SBBDST,SRC操作:DST←DST-SRC-CF☆
DEC(Decrement)減1指令格式:DECOPR操作:OPR←OPR-1
格式:AAS功能:在用SUB或SBB指令對兩個非壓縮十進制數或以ASCII碼表示的十進制數進行相減后,對AL中所得結果進行調整,在AL中得到一個正確的非壓縮十進制數之差。如果有借位,則CF置1。AAS指令必須緊跟在SUB或SBB指令之后。調整過程為:若AL寄存器的低4位﹥9或AF=1,則:AL←AL-6,AF置1;將AL寄存器高4位清零;AH←AH-1,CF置1。否則,不需要調整?!?/p>
AAS(ASCIIAdjustforSubtraction)減法的ASCII調整指令減法指令☆
DAS(DecirnalAdjustforSubtraction)減法的十進制調整指令減法指令格式:DAS功能:在兩個壓縮十進制數用SUB或SBB相減后,結果已存在AL中的情況下,對所得結果進行調整,在AL中得到正確的壓縮十進制數。同樣,它也要對AL中高半字節(jié)和低半字節(jié)分別進行調整。調整過程為:如果AL寄存器的低4位﹥9或AF=1,則:AL←AL-6,AF置1。如果此時AL高半字節(jié)﹥9或標志位CF=1,則:AL←AL-60H,CF置1?!?/p>
NEG(Negate)取負指令(取補指令)格式:NEGOPR;按位取反加1(包括符號位)操作:OPR←0-OPR(或OPR←-OPR)。注意:取補指令不同于補碼??!舉例:MOVAL,73HNEGAL;AL=?減法指令答案:AL=8DH☆CMP(Compare)比較指令格式:CMPDST,SRC功能:即:DST-SRC,結果不回送到目的操作數中,僅將結果反映在標志位上,可用條件跳轉指令決定程序的去向。說明:比較指令主要用在希望比較兩個數的大小,而又不破壞原操作數的情況。
減法指令乘法指令☆MUL(Multiply)無符號數乘法指令格式:MULSRC操作:字節(jié)操作數:AX←AL×SRC字操作數:(DX,AX)←AX×SRC說明:SRC可以是寄存器,或是存儲單元,但不能是立即數。當SRC是存儲單元時,必須在操作數前加B或W說明是字節(jié)還是字。舉例:MULBYTEPTR[SI]MULWORDPTR[BX]
MULDL說明:MUL指令執(zhí)行后影響CF和OF標志。乘法指令使AF、PF、SF和ZF的狀態(tài)不定。如果結果的高半部分(字節(jié)操作為AH、字操作為DX)不為零,表明其內容是結果的有效位,則CF和OF均置1。否則,CF和OF均清0?!頜UL(Multiply)無符號數乘法指令(續(xù))乘法指令☆IMUL(Integer
Multiply)帶符號數乘法指令乘法指令格式:IMULSRC操作:同MUL指令。功能:把乘數和累加器中的數都作為帶符號數,進行相乘。乘積的符號符合一般代數運算規(guī)則。說明:如果乘積的高半部分不是低半部分的符號擴展(不是全零或全1),則視高位部分為有效位,表示它是積的一部分,于是置CF=1,OF=1。若結果的高半部分為全零或全1,表明它僅包含了符號位,那么使CF=0,OF=0。利用這兩個標志狀態(tài)可決定是否需要保存積的高位字節(jié)或高位字。IMUL指令執(zhí)行后,AF、PF、SF和ZF不定?!頓IV(Divisionunsigned)無符號數除法指令除法指令格式:DIVSRC操作:字節(jié)除數:AL←AX/SRC的商;AH←AX/SRC的余數。字除數:AX←(DX,AX)/SRC的商;DX←(DX,AX)/SRC的余數。說明:被除數、除數、商及余數均為無符號數。6個狀態(tài)標志均無定義?!領DIV(IntegerDivision)帶符號數除法指令除法指令格式:IDIVSRC操作:字節(jié)除數:AL←AX/SRC的商;AH←AX/SRC的余數。字除數:AX←(DX,AX)/SRC的商;DX←(DX,AX)/SRC的余數。說明:被除數,除數、商及余數均為帶符號數,商的符號符合一般代數運算的符號規(guī)則,余數的符號與被除數相同。6個狀態(tài)標志均無定義。商超過了目標寄存器AL或AX所能存放數的范圍。這時系統會自動產生一個中斷類型號為0的除法錯中斷,相當于執(zhí)行了除數為0的運算,所得的商和余數都不確定。這類指令的功能是對操作數最高位進行擴展,用于處理帶符號數運算時的操作類型匹配問題?!?/p>
CBW(ConvertBytetoWord)把字節(jié)擴展為字指令格式:CBW功能:AL中字節(jié)的符號位擴展到AH中(即把AL中的最高位送入AH的所有位)☆CWD(ConvertWordtoDoubleWord)把字擴展成雙字指令格式:CWD功能:把AX中字的符號位擴展到DX中(即把AH中的最高位送入DX的所有位)標志:不影響任何標志位。符號擴展指令補充例題:MOVAL,10011010B;CBW ;AX=1111111110011010B=0FF9AHAL=10011010B=9AHMOV DX,0;MOV AX,0FFABH;CWD ;(DX)=0(AX)=0FFABH(DX)=0FFFFH,(AX)=0FFABH§4.48086的指令系統
4.4.3邏輯運算與移位指令邏輯運算和移位指令對字節(jié)或字操作數進行按位操作,這類運算可分成:邏輯運算(LogicalOperations)算術邏輯移位(shiftArithmeticandShiftLogical)循環(huán)移位(Rotate)邏輯運算指令☆邏輯與指令AND格式:ANDDEST,SRC
操作:DEST←(DEST)(SRC)說明:運算法則為:1∧1=1,1∧0=0,0∧1=0,0∧0=0邏輯運算指令☆邏輯或指令OR格式:ORDEST,SRC
操作:DEST←(DEST)∨
(SRC)說明:運算法則為:1∨1=1,1∨0=1,0∨1=1,0∨0=0。格式:XORDEST,SRC;(DEST)←(DEST)(SRC)說明:運算法則為:1⊕1=0,1⊕0=1,0⊕1=1,0⊕0=0。邏輯運算指令☆邏輯異或指令XOR☆測試指令TEST格式:TESTDEST,SRC;FLAGS←(DEST)(SRC)功能:源地址和目的地址的內容執(zhí)行按位的邏輯乘運算,結果不送入目的地址,只影響標志位。邏輯運算指令☆邏輯非指令NOT:格式:NOTDEST;DEST←()功能:將目的地址中的內容逐位取反后送入目的地址。補充知識:邏輯運算指令小結邏輯運算指令的操作均是按位進行的。邏輯非NOT指令只有一個操作數。目的操作數可以是8位或16位寄存器或存儲器。對于存儲器操作數,要說明其類型是字節(jié)還是字。指令執(zhí)行后,對標志位無影響。其余邏輯運算指令均為雙操作數指令,SRC可以是8位或16位立即數、寄存器或存儲器,DST只能是寄存器或存儲器,兩個操作數不能同時為存儲器。指令執(zhí)行后,均將CF和OF清0,ZF、SF和PF反映操作結果,AF未定義,源操作數不變。
AND指令常用來對一個數據的指定位清零;
OR指令可用來對一些指定的位置置1;
XOR指令可用于將操作數的某些位取反;
TEST指令則常用于檢測某些數據的指定位是1還是0。小結算術邏輯移位指令☆算術左移指令SAL格式:SALDST,CNT最低位CF0最高位SAL移動☆邏輯左移指令SHL格式:SHLDST,CNT最低位CF0最高位SHL移動算術邏輯移位指令☆算術右移指令SAR格式:SARDST,CNT☆邏輯右移指令SHR格式:SHRDST,CNT最低位最高位CFSAR移動0最低位最高位CFSHR移動移位指令實現對操作數的移位操作。邏輯移位把操作數看成無符號數來移位,右移時,最高位補0,左移時,最低位補0算術移位則把操作數看做有符號數,右移時最高位(符號位)保持不變,左移時,最低位補0DST可以是8位、16位寄存器或存儲器操作數。CNT為移位計數值,可以設定為1,也可以由寄存器CL確定其值。小結小結SHL和SAL兩條指令的功能完全相同,在機器中實際對應同一種操作。對標志位影響的情況是:AF總是無定義。PF、SF和ZF在指令執(zhí)行后被修改。CF總是等于目的操作數最后被移出去的那一位的值。OF的值多次移位的情況下是不確定。在移位次數為1的情況下,如果最高位(符號位)的值被改變,則OF標志置1,否則OF清0。移位操作還可以實現對一個數乘以2n或除以2n的運算,這種方法的運算速度要比直接使用乘除法高很多。邏輯移位指令適用于無符號數運算,SHL用來乘以2n,SHR用于除以2n;算術移位指令用于對帶符號數運算,SAL用來乘以2n,SAR用于除以2n。
小結(續(xù))小結循環(huán)移位指令☆不帶進位位的循環(huán)左移指令ROL格式:ROLDST,CNT☆不帶進位位的循環(huán)右移指令ROR格式:RORDST,CNTCFROLROL移動CFRORROR移動循環(huán)移位指令☆帶進位位的循環(huán)左移指令RCL格式:RCLDST,CNT☆帶進位位的循環(huán)右移指令RCR格式:RCRDST,CNTCFRCLRCL移動CFRCRRCR移動小結小結4條指令都按指令中計數值規(guī)定的移位次數進行循環(huán)移位,移位后的結果仍送回目的操作數。目的操作數可以是8/16位的寄存器操作數或內存操作數,循環(huán)移位的次數可以是1,也可以由CL寄存器的值指定。這4條指令中,ROL和ROR指令沒有把進位標志CF包含在循環(huán)中,而RCL和RCR指令把CF作為整個循環(huán)的一部分,一起參加循環(huán)移位。OF位只有在移位次數為1的時候才有效,在移位后當前最高有效位(符號位)發(fā)生變化時,則OF標志置1,否則OF置0。在多位循環(huán)移位時,OF的值是不確定的。CF的值總是由最后一次被移出的值決定?!?.48086的指令系統
4.4.4串操作指令字符串(String)是指一系列存放在存儲器中的字或字節(jié)數據。字符串長度可達64K字節(jié),組成字符串的字節(jié)或字稱為字符串元素,每種字符串指令對字符串中的元素只進行同一種操作。8086提供5條1字節(jié)的字符串操作指令,專門對存儲器中的字節(jié)串和字串數據進行。分類:傳送(MoveString)、比較(CompareString)、掃描(ScanString)、存儲(StoreString)、裝入(LoadString)。
字符串的傳送MOVS格式1:MOVSB;(ES:DI)(DS:SI),SISI±1,;DIDI±1格式2:MOVSW;(ES:DI)(DS:SI),SISI±2,;DIDI±2功能:將以SI為指針的源串中的一個字節(jié)(或字)存儲單元中的數據傳送至以DI為指針的目的地址中去,并自動修改指針,使之指向下一個字節(jié)(或字)存儲單元。在使用MOVS指令進行字符串傳送時,傳送方向由DF控制。如果源字符串與目標字符串不重迭,則傳送方向可以任意?!⒁猓╝)源和目的不重疊,DF取值任意
源串目的串低地址高地址若源字符串與目標字符串部分重迭,則傳送方向要特別注意。當源字符串的地址低于目標字符串的地址時,則應該自動減量(置DF=1),從高地址開始傳送。(b)源和目的下重疊,
DF=1
源串目的串低地址高地址當源字符串的地址高于目標字符串的地址時,則應該自動增量(置DF=0),從低地址開始傳送。源串目的串低地址高地址(c)源和目的上重疊,
DF=0
格式1:CMPSB;FLAGS(DS:SI)-(ES:DI),;SISI±1,DIDI±1格式2:CMPSW;FLAGS(DS:SI)-(ES:DI),;SISI±2,DIDI±2字符串的比較指令CMPS功能:將SI所指的源串中的一個字節(jié)(或字)存儲單元中的數據與DI所指的目的串中的一個字節(jié)(或字)存儲單元中的數據相減,并根據相減的結果設置標志,但結果并不保存。字符串的掃描指令SCAS功能:AL(字節(jié))或AX(字)中的內容與DI所指的目的串中的一個字節(jié)(或字)存儲單元中的數據相減,根據相減結果設置標志位,結果不保存。利用SCAS指令,可在內存中搜索所需要的數據。被搜索的數據也稱為關鍵字。指令執(zhí)行前,先將關鍵字存在AL(字節(jié))或AX(字)中,才能用SCAS指令進行搜索。格式1:SCASB;FLAGSAL-(ES:DI),DIDI±1格式2:SCASW;FLAGSAX-(ES:DI),DIDI±2字符串的裝入指令LODS格式1:LODSB;AL(DS:SI),SISI±1格式2:LODSW;AX(DS:SI),SISI±2字符串的存儲指令STOS格式1:STOSB;(ES:DI)AL,DIDI±1格式2:STOSW;(ES:DI)AX,DIDI±2為了加快串運算指令的執(zhí)行速度,可在基本指令前加重復前綴,使數據串指令重復執(zhí)行。每重復執(zhí)行一次,地址指針SI和DI都根據方向標志DF自動進行修改,CX的值則自動減1。
REP:REP前綴用在MOVS指令前。功能:每執(zhí)行一次串指令,(CX)-1,直到(CX)=0,重復執(zhí)行結束。
REPZ
:該指令一般用在CMPS、SCAS指令前。功能:每執(zhí)行一次串指令,(CX)-1,并判斷ZF標志是否為0,只要(CX)=0或ZF=0,則重復執(zhí)行結束。
REPNZ
:該指令一般用在CMPS、SCAS指令前。功能:每執(zhí)行一次串指令,(CX)-1,并判斷ZF標志是否為0,只要(CX)=0或ZF=1,則重復執(zhí)行結束。重復過程:1、檢測CX。若CX=0,則退出串操作;否則繼續(xù)執(zhí)行2。2、完成一次串操作。3、修改地址指針,SISI±1(或2)DIDI±1(或2)。4、CXCX-15、若重復前綴為REP,則轉1執(zhí)行;若重復前綴為REPZ,且ZF=1時,則轉1執(zhí)行;否則退出串操作;若重復前綴為REPNZ,且ZF=0時,則轉1執(zhí)行;否則退出串操作。表4-10串操作指令及重復前綴分組指令名稱命令格式操作串操作指令串傳送(字節(jié),字串傳送)MOVSDST,SRC(MOVSB,MOVSW)(ES:DI)←(DS:SI),SI←SI±1或2,DI←DI±1或2串比較(字節(jié),字串比較)CMPSDST,SRC(CMPSB,CMPSW)(ES:DI)?(DS:SI),SI←SI±1或2,DI←DI±1或2串掃描(字節(jié),字串掃描)SCASDST,SRC(SCASB,SCASW)AL或AX?(ES:DI),DI←DI±1或2取串(取字節(jié),字串)LODSSRC(LODSB,LODSW)AL或AX←(DS:SI),SI←SI±1或2存串(存字節(jié),字串)STOSDST(STOSB,STOSW)(ES:DI)←AL或AX,DI←DI±1或2重復前綴無條件重復前綴REP使其后的串操作重復執(zhí)行,每執(zhí)行一次,CX的內容減1,直至CX=0相等/為零重復前綴REPE/REPZ當ZF=1且CX≠0時,重復執(zhí)行其后的串操作,每執(zhí)行一次,CX的內容減1,直至ZF=0或CX=0不相等/不為零重復前綴REPNE/REPNZ當ZF=0且CX≠0時,重復執(zhí)行其后的串操作,每執(zhí)行一次,CX的內容減1,直至ZF=1或CX=0小結源串位于當前數據段中,由DS尋址,源串的元素由SI作指針,即源串字符的起始地址(或末地址)為DS:SI,源串允許使用段超越前綴來修改段地址。目的串必須位于當前附加段中,由ES尋址,目的串元素由DI作指針,即目的串字符的起始地址(或末地址)為ES:DI,但目的串不允許使用段超越前綴修改ES。如果要在同一段內進行串運算,必須使DS和ES指向同一段。每執(zhí)行一次字符串指令,指針SI和DI會自動進行修改,以便指向下一待操作單元。DF標志控制字符串處理的方向。要處理的字符串長度(字節(jié)或字數)放在CX寄存器中。補充知識如果已知兩個數據塊的內容基本上是相同的,若要尋找其中是否有不一致的地方,則應使用CMP指令查找,并在CMP指令前使用REPE/REPZ前綴。如果已知兩個數據塊的內容基本是不相同的,若要尋找其中相一致的地方,則應使用CMP指令查找,并在CMP指令前使用REPNE/REPNZ前綴。例4-22要求把數據段DS中以SRC_MESS為偏移地址的一串字符“HELLO!”,傳送到附加段ES中以NEW_LOC開始的單元中,寫出其指令代碼?解:實現該操作的程序如下:
DATASEGMENT
;數據段
SRCMESSDB‘HELLO!’ ;源串
DATAENDS
EXTRASEGMENT
;附加段
NEWLOCDB6DUP(?);存放目的串
EXTRAENDS
CODESEGMENT
;代碼段
ASSUMECS:CODE,DS:DATA,ES:EXTRA程序頭START:MOVAX,DATA MOVDS,AX;DS←數據段段址 MOVAX,EXTRA MOVES,AX ;ES←附加段段址 LEASI,SRCMESS;SI指向源串偏移地址
LEADI,NEWLOC;DI指向目的串偏移地址 MOVCX,6 ;CX作串長度計數器 CLD ;清方向標志,地址增量DF=0
REPMOVSB ;重復傳送串中的各字節(jié)直到
;CX=0為止
CODEENDS
ENDSTART本例中的REPMOVSB指令也可用以下幾條指令代替:AGAIN:MOVSNEWLOC,SRCMESSDECCXJNZAGAIN初始化例4-23在某一字符串中搜尋是否有字符A,若有,則把搜索次數記下來,送到BX寄存器中,若沒有查到,則將BX寄存器清0。寫出其指令代碼。解:設字符串起始地址STRING的偏移地址為0,字符串長度為CX。程序段如下:MOVDI,OFFSETSTRING ;DI=字符串偏移地址(相對于LEADI,STRING)MOVCX,COUNT ;CX=字符串長度MOVAL,‘A’ ;AL=關鍵字A的ASCII碼CLD ;清方向標志REPNESCASB;CX≠0(沒查完)和ZF=0(不相等)時重復JZFIND;若ZF=1,表示已搜到,轉出MOVDI,0 ;若ZF=0,表示沒搜到,DI=0FIND:MOVBX,DI;BX=搜索次數HLT;停機
例4-24若在數據段中有一個數據塊,起始地址為BLOCK,數據塊中的數為8位帶符號數,要求將其中所含的正、負數分開,然后把正數送到附加段中始址為PLUS_DATA的緩沖區(qū),負數則送到附加段中始址為MINUS_DATA的緩沖區(qū)。寫出其指令代碼。
解:可以將這塊數據看成一個數據串,用SI作源串指針,DI和BX分別作正、負數目的緩沖區(qū)的指針,CX用于控制循環(huán)次數,可寫出如下程序段:START:MOVSI,OFFSETBLOCK ;SI為源串指針
MOVDI,OFFSETPLUS_DATA;DI為正數目的區(qū)指針
MOVBX,OFFSETMINUS_DATA;BX為負數目的區(qū)指針
MOVCX,COUNT ;CX放循環(huán)次數
CLDGOON:LODSBBLOCK;AL←取源串的一個字節(jié)
TESTAL,80H ;是負數?JNZMINUS ;是,轉MINUSSTOSB ;
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年房產認購訂金合同
- 2025年粵教新版八年級地理上冊月考試卷含答案
- 2025年滬科版選擇性必修1歷史上冊月考試卷
- 2025年人教A新版九年級歷史下冊階段測試試卷含答案
- 2025年滬科版選修歷史上冊月考試卷含答案
- 2025年人教新課標九年級語文下冊階段測試試卷含答案
- 2025年粵教版高三歷史上冊月考試卷含答案
- 二零二五版嬰幼兒奶粉跨境電商進口合同范本4篇
- 二零二五年度農藥企業(yè)信息化管理系統開發(fā)合同
- 二零二五版門窗行業(yè)綠色制造體系建設合同4篇
- 河道綜合治理工程技術投標文件
- 專題24 短文填空 選詞填空 2024年中考英語真題分類匯編
- 再生障礙性貧血課件
- 產后抑郁癥的護理查房
- 2024年江蘇護理職業(yè)學院高職單招(英語/數學/語文)筆試歷年參考題庫含答案解析
- 電能質量與安全課件
- 醫(yī)藥營銷團隊建設與管理
- 工程項目設計工作管理方案及設計優(yōu)化措施
- 圍場滿族蒙古族自治縣金匯螢石開采有限公司三義號螢石礦礦山地質環(huán)境保護與土地復墾方案
- 小升初幼升小擇校畢業(yè)升學兒童簡歷
- 資金支付審批單
評論
0/150
提交評論