版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
《微機原理與接口技術(shù)》
輔助教學電子課件
第三章
尋址方式和指令系統(tǒng)一、指令與指令系統(tǒng)指令:控制計算機完成某種操作的命令指令系統(tǒng):處理器所能識別的所有指令的集合指令的兼容性:同一系列機的指令都是兼容的。二、指令格式指令中應(yīng)包含的信息:運算數(shù)據(jù)的來源運算結(jié)果的去向執(zhí)行的操作指令碼的格式:指令碼由操作碼和操作數(shù)字段兩部分組成。操作碼指示該指令執(zhí)行的操作。操作數(shù)字段指示操作數(shù)的類型和操作數(shù)的尋址方式。操作碼操作數(shù)…操作數(shù)操作碼字段操作數(shù)字段操作碼說明計算機要執(zhí)行哪種操作,如傳送、運算、移位、跳轉(zhuǎn)等操作,它是指令中不可缺少的組成部分操作數(shù)是指令執(zhí)行的參與者,即各種操作的對象有些指令不需要操作數(shù),通常的指令都有一個或兩個操作數(shù),也有個別指令有3個甚至4個操作數(shù)3.18086/8088系統(tǒng)的尋址方式8086/8088指令系統(tǒng)操作數(shù)的種類分為兩大類:3.1.1操作數(shù)的種類數(shù)據(jù)操作數(shù)轉(zhuǎn)移地址操作數(shù)數(shù)據(jù)操作數(shù)具體數(shù)值,也稱立即數(shù)(im):操作數(shù)據(jù)在指令中。寄存器(reg):操作數(shù)存放在寄存器中。存儲器(mem):操作數(shù)存放在指定的存儲單元中。I/O端口:操作數(shù)來自或送到I/O端口。指令的執(zhí)行速度
對不同的操作數(shù),指令執(zhí)行的時間不同:存儲器
快!立即數(shù)寄存器轉(zhuǎn)移地址操作數(shù)指令操作的對象不是數(shù)據(jù),而是要轉(zhuǎn)移的目標地址。要轉(zhuǎn)移的目標地址包含在指令中,或存放在寄存器中,或存放在存儲單元中。對于轉(zhuǎn)移地址操作數(shù),其指令只有一個目標操作數(shù),它是一個供程序轉(zhuǎn)移的目標地址。尋址方式(AddressingMode)
指令中關(guān)于如何求出存放操作數(shù)有效地址的方法。有效地址EA(EffectiveAddress)根據(jù)尋址方式計算得到的地址。
3.1.2尋址方式(AddressingMode)操作數(shù)直接包含在指令中,緊跟在操作碼之后,作為指令的一部分,這種操作數(shù)稱為立即數(shù)(im)立即數(shù)可以是8位(00H~FFH)也可以是16位(0000H~FFFFH)立即數(shù)尋址方式 (Immediateaddressing)例3.1
MOVBL,80H MOVAX,0102H指令執(zhí)行后的結(jié)果為:
BL=80H; AX=0102H立即數(shù)尋址方式只能作為源操作數(shù),主要用來給寄存器或存儲單元賦值。演示操作數(shù)存放在指令指定的寄存器(reg)中可以8位寄存器(reg8)
:AH、AL、BH、BL、CH、CL、DH、DL可以16位寄存器(reg16)
:AX、BX、CX、DX、SI、DI、SP、BP及CS、DS、SS、ES寄存器名表示其內(nèi)容(操作數(shù))寄存器尋址方式(Registeraddressing)例3.2
MOVCL,DL MOVAX,BX如果 DL=50H,BX=1234H,則執(zhí)行結(jié)果為:
CL=50H,AX=1234H演示存儲器尋址方式操作數(shù)在主存儲器中,用主存地址表示程序設(shè)計時,8088采用邏輯地址表示主存地址段地址在默認的或用段超越前綴指定的段寄存器中指令中只需給出操作數(shù)的偏移地址(有效地址EA)1.直接尋址方式2.寄存器間接尋址方式3.寄存器相對尋址方式4.基址變址尋址方式5.相對基址變址尋址方式存儲器尋址方式又分為操作數(shù)的有效地址EA直接在指令中給出用中括號包含有效地址,表達存儲單元的內(nèi)容直接尋址方式的操作數(shù)默認在存儲器的數(shù)據(jù)段,即默認的段寄存器是DS允許使用段超越前綴改變段寄存器。在操作數(shù)的前面寫上段寄存器名,再加上冒號“:”。直接尋址方式(Directaddressing)例3.3
MOVAX,[2000H]EA=2000H,如果當前DS=1492H,則操作數(shù)存儲單元的物理地址為: 14920H+2000H=16920H若 [16920]=9078H執(zhí)行結(jié)果為:AX=9078H
演示MOVAX,ES:[2000H] ;AX←ES:[2000H]例如: MOVAL,VALUE
或
MOVAL,[VALUE]VALUE也稱為為存放操作數(shù)單元的符號地址。在用匯編語言編程時,常用符號地址代替數(shù)值地址。有效地址在指令中指定的寄存器SI、DI、BX
或BP中,操作數(shù)本身在存儲器中。若指定的寄存器為:SI、DI、BX,默認的段寄存器是DS若指定的寄存器是BP,默認的段寄存器是SS寄存器間接尋址方式(Registerindirectaddressing)書寫指令時,用作間址的寄存器必須加上方括弧,以免與寄存器尋址方式混淆允許使用段超越前綴改變段寄存器例3.4: MOVAX,[SI]如果
DS=3000H,SI=2000H
物理地址=30000H+2000H=32000H若
[32000H]=4050H執(zhí)行結(jié)果為:
AX
=4050H又:
MOV[BP],AL如果 SS=5000H,BP=1000H
物理地址=50000H+1000H=51000H執(zhí)行結(jié)果為:
[51000H]=50HMOVAX,[BX] ;AX←DS:[BX]演示例:段超越
MOVES:[DI],AXMOVDX,DS:[BP]ADDAL,ES:[BX]SUBCS:[SI],AX寄存器相對尋址方式(Registerrelativeaddressing)有效地址EA是一個由指令中指定的8位或16位位移量disp(displacement)與基址或變址寄存器的內(nèi)容之和,即EA=SIDIBXBP+disp
8disp16若指令中指定的寄存器是SI,DI,BX,則存放操作數(shù)的段寄存器默認為DS若指令中指定BP寄存器,則默認的段寄存器應(yīng)SS允許段超越前綴改變默認段寄存器。位移量可常用符號表示例3.5:如果
DS=3000H
,
BX=1000H
COUNT=1050H對于指令: MOVCX,[BX+COUNT]物理地址=30000H+1000H+1050H=32050H若 [32050H]=4030H執(zhí)行后: CX=4030H以下三種指令的形式皆允許,它們完全等價:
MOVAL,[BP+TABLE] MOVAL,[BP]+TABLE MOVAL,TABLE[BP]演示MOVAX,[SI+06H] ;AX←DS:[SI+06H]MOVAX,06H[SI] ;AX←DS:[SI+06H]基址變址尋址方式
(Basedindexedaddressing)有效地址是由指令指定的一個基址寄存器BX或BP和一個變址寄存器SI或DI的內(nèi)容之和。即:SIDIBXBPEA=+若基址寄存器為BX,默認的段寄存器為DS
若基址寄存器為BP,默認的段寄存器為SS允許段跨越演示MOVAX,[BX+SI] ;AX←DS:[BX+SI]MOVAX,[BX][SI] ;AX←DS:[BX+SI]例3.6:MOV[BX+DI],AX若DS=3000H,BX=1000H,DI=1100H則
EA=1000H+1100H=2100H物理地址=30000H+2100H=32100H若
AX=0050H則執(zhí)行結(jié)果為:[32100H]=0050H。指令:
MOVAH,[BP][SI]如果
BP=2000H,SI=1200H, SS=4000H物理地址=40000H+2000H+1200H=43200H若 [43200H]=56H則執(zhí)行結(jié)果為:
AH=56H基址變址相對尋址方式
(Relativeindexedaddressing)有效地址是指令中指定的8位或16位位移量(disp)與一個基址寄存器和一個變址寄存器的內(nèi)容之和。即:SIDI
BXBPEA=++disp8disp16當基址寄存器為BX時,默認為DS段寄存器當基址寄存器為BP時,默認為SS段寄存器。允許段超越。演示MOVAX,[BX+DI+6] ;AX←DS:[BX+DI+6]MOVAX,6[BX+DI]MOVAX,6[BX][DI]MOVAX,[BX+SI+COUNT]MOVAX,COUNT[BX][SI]MOVAX,[BX+COUNT][SI]MOVAX,[BX]COUNT[SI]MOVAX,[BX+SI]COUNTMOVAX,COUNT[SI][BX]基址加變址相對尋址方式的不同的書寫形式:例3.7
MOVAX,MASK[BX][SI]如果
DS=3000H,BX=2000H, SI=1000H,MASK=0520H物理地址 =30000H+2000H+1000H+0520H =33520H若 [33520]=1234H執(zhí)行結(jié)果為
AX=1234H
3.28086的匯編指令系統(tǒng)數(shù)據(jù)傳送指令位操作指令程序控制指令8086的指令系統(tǒng)包括100多條指令,可分為以下六種類型:算術(shù)運算指令串操作指令處理器控制指令格式:MOVDST,SRC操作:dst←srcdst表示目的操作數(shù),src表示源操作數(shù)。MOV指令可以是字節(jié)(8位)操作,也可以是字(16位)操作。3.2.1數(shù)據(jù)傳送指令MOV(Move)數(shù)據(jù)傳送指令演示例:MOVAX,05H
;字操作
MOVBL,’A’
;字節(jié)操作不允許dst與src同時皆為‘mem’操作數(shù)目的操作數(shù)dst不允許是立即數(shù)‘im’、段寄存器‘CS’和‘IP’不允許將立即數(shù)直接傳送給段寄存器‘MOV’指令不影響標志位。dst,src的具體格式為:dst
src說明reg1reg2reg1不能是IP與CSregimreg不能是CS,DS,ES,SS和IPmimregmemreg不能是CS與IPmreg表中:reg為寄存器操作數(shù),mem代表存儲器操作數(shù),im代表立即數(shù)。例:合法指令 MOV[BX],AX MOVAX,DATA_SEG MOVDS,AX MOVAX,COUNT[BX][SI] MOVAL,‘E’ MOV[SI],DS
MOVAX,DS ;AX←DS MOVES,AX ;ES←AX←DS對段寄存器的操作不靈活MOV指令--立即數(shù)傳送mov
cl,4 ;cl←4,字節(jié)傳送mov
dx,0ffh ;dx←00ffh,字傳送mov
si,200h ;si←0200h,字傳送mov
bvar,0ah ;字節(jié)傳送;假設(shè)bvar是一個字節(jié)變量,定義如下:bvardb0mov
wvar,0bh ;字傳送;假設(shè)wvar是一個字變量,定義如下:wvar
dw0明確指令是字節(jié)操作還是字操作以字母開頭的常數(shù)要有前導0MOV指令--寄存器傳送movah,al ;ah←al,字節(jié)傳送mov
bvar,ch
;bvar←ch
,字節(jié)傳送movax,bx
;ax←bx,字傳送mov
ds,ax ;ds←ax,字傳送mov[bx],al ;[bx]←al,字節(jié)傳送寄存器具有明確的字節(jié)和字類型MOV指令--存儲器傳送moval,[bx] ;al←ds:[bx]mov
dx,[bp] ;dx←ss:[bp+0]mov
dx,[bp+4] ;dx←ss:[bp+4]mov
es,[si] ;es←ds:[si]不存在存儲器向存儲器的傳送指令MOV指令--段寄存器傳送mov[si],dsmovax,ds
;ax←dsmov
es,ax ;es←ax←ds對段寄存器的操作不靈活MOV指令的非法形式非法指令的主要現(xiàn)象:兩個操作數(shù)的類型不一致無法確定是字節(jié)量還是字量操作兩個操作數(shù)都是存儲器段寄存器的操作有一些限制非法指令的主要現(xiàn)象:非法指令--兩個操作數(shù)類型不一致非法指令:
moval,050ah修正:movax,050ah非法指令:
mov
si,dl修正:movdh,0
mov
si,dx在絕大多數(shù)雙操作數(shù)指令中,目的操作數(shù)和源操作數(shù)必須具有一致的數(shù)據(jù)類型,或者同為字量,或者同為字節(jié)量,否則為非法指令非法指令--無法確定是字節(jié)量還是字量操作非法指令:mov[bx+si],255 修正: movbyteptr
[bx+si],255
;byteptr
說明是字節(jié)操作 ;movwordptr
[bx+si],255
;wordptr
說明是字操作當無法通過任一個操作數(shù)確定是操作類型時,需要利用匯編語言的操作符顯式指明非法指令--兩個操作數(shù)都是存儲器
movbuf2,buf1 ;非法指令,修正:;假設(shè)buf2和buf1是兩個字變量;movax,buf1;movbuf2,ax;假設(shè)buf2和buf1是兩個字節(jié)變量;moval,buf1;movbuf2,al8088指令系統(tǒng)除串操作指令外,不允許兩個操作數(shù)都是存儲單元(存儲器操作數(shù))非法指令--段寄存器的操作有一些限制
mov
ds,es
;非法指令,修正:
;movax,es;mov
ds,ax
mov
ds,100h
;非法指令,修正:
;movax,100h;mov
ds,ax
mov
cs,[si]
;非法指令8088指令系統(tǒng)中,能直接對段寄存器操作的指令只有MOV等個別傳送指令,并且不靈活堆棧是一種按先進后出的原則組織信息存取的特殊的存儲空間。用于存放暫時需要保存的數(shù)據(jù)8086系統(tǒng)的堆棧在存儲器中實現(xiàn)。8086系統(tǒng)堆棧的特點:可以有多個堆棧,每個堆??臻g最大為64K。當前正使用的堆棧稱為現(xiàn)行堆棧。SS段寄存器存放現(xiàn)行堆棧的段基址。堆棧為16位寬,堆棧的存取操作總是以字為單位進行。
堆棧向上生長SP寄存器指示堆棧的頂部(當堆棧中有信息時)或底部(當堆棧是空的)當為空堆棧時,SP指向棧底;當要壓棧時,先SP-2,然后將16位信息存入堆棧;當要彈棧時,先從棧頂取出16位信息,然后SP+2?!ぁぁぁぁぁぁぁぁSSSSSSPSPSP6587658734123412空堆棧PUSHAX:(AX)=1234HPUSHBX:(AX)=8765HPOPAX格式: PUSHsrc操作: SP←SP-2 SS:[SP+1,SP]←srcPUSH(Pushontothestack)進棧指令PUSH指令只允許是字(16位)操作src可以是reg16、mem,但不能是im例:合法指令
PUSHAXPUSHDSPUSH[BX]例:非法指令
PUSHAL ;不允許字節(jié)操作PUSH0FFA2H ;src不允許是im演示格式:POPdst操作:dst
←[SP+1,SP]
SP←SP+2POP指令只能字(16位)操作dst可以是mem,reg16,但不能是CS、IP、imPOP(Popfromstack)出棧指令PUSH,POP指令不影響標志位例:合法指令 popax popwvar例:非法指令
popal
;al為reg8
popbvar
;bvar
為8位內(nèi)存操作數(shù)
popds
;dst為段寄存器演示格式:XCHGOPR1,OPR2操作:OPR1←→OPR2指令允許字或字節(jié)操作OPR1、OPR2是兩個操作數(shù)。它們可以是‘reg’或‘mem’,但二者中必有一個是寄存器不允許使用段寄存器和‘IP’不影響標志位XCHG(Exchange)數(shù)據(jù)交換指令演示例3.8XCHGBX,[BP+SI]如指令執(zhí)行前
BX=6F30H,BP=0200H,SI=0046H,SS=2F00H,[2F246H]=4154H。OPR2的物理地址=2F000H+0200H+0046H=2F246H則指令執(zhí)行后
BX=4154H,[2F246H]=6F30H格式:XLATsrc_table
或XLAT操作:AL←[BX+AL]
src_table是表格首地址(符號地址)XLAT(Translate)查表轉(zhuǎn)換指令XLAT指令用于查找代碼轉(zhuǎn)換前,預(yù)先要構(gòu)造一個字節(jié)表格表格的內(nèi)容是所要查找的代碼表格的首地址提前存入BX寄存器需要查找的代碼的序號是相對表格首地址的位移量,要提前存入AL寄存器中該指令執(zhí)行后可在AL中得到轉(zhuǎn)換后的代碼。演示指令XALT把
F0000+0040+0F=F004FH單元的內(nèi)容送AL寄存器執(zhí)行后
AL=2CH例3.9:
BX=0040H,AL=0FH,DS=F000H,所建表格如下圖:2C存儲器F0040HF004FH(BX)→(AL)=0FH···例3.10內(nèi)存數(shù)據(jù)段有一16進制數(shù)的ASCII碼表,首地址為HEX-TABLE,如圖所示,欲查出第10個元素(元素序號從0開始),即‘A’的ASCII碼。指令序列為:mov
bx,0ffsethex-table;(bx)←表首址moval,0ah;(al)←序號(位移量)xalthex-table;查表轉(zhuǎn)換執(zhí)行后,
al=41h
(‘A’的ASCII碼)‘’指令:
XLATHex_table執(zhí)行結(jié)果把‘A’的ASCII碼送入在AL中,即AL=41H存儲器30H(‘0’)31H(‘1’)39H(‘9’)41H(‘A’)46H(‘F’)Hex-tableHex-table+10Hex-table+9Hex-table+1Hex-table+15圖16進制數(shù)的ASCII碼表··················IN(Input)輸入指令直接尋址方式格式: INAL,PORT;(字節(jié))
INAX,PORT;(字)操作:AL←[PORT] ;(字節(jié))AX←[PORT+1,PORT] ;(字)PORT是I/O端口地址(0~255)間接尋址方式格式: INAL,DX;(字節(jié))
INAX,DX;(字)操作: AL←[DX] ;(字節(jié)) AX←[DX+1,DX] ;(字) DX內(nèi)容是I/O端口地址(0~65535)OUT(Output)輸出指令直接尋址方式格式: OUTPORT,AL;(字節(jié)) OUTPORT,AX;(字)操作: [PORT]←AL
;(字節(jié))
[PORT+1,PORT]←AX
;(字)PORT是I/O端口地址(0~255)間接尋址方式格式:OUTDX,AL;(字節(jié))
OUTDX,AX;(字)操作:字節(jié) [DX]←AL字 [DX+1,DX]←AXDX內(nèi)容是I/O端口地址(0~65535)IN和OUT(輸入輸出)指令專用于CPU與外設(shè)(I/O端口)之間傳送信息。數(shù)據(jù)必須經(jīng)由累加器(AX或AL)傳送。直接尋址方式的指令只能尋址256個I/O端口(端口號:0~255或0~FFH)。間接接尋址方式的指令可以尋址64K個I/O端口(端口號:0~65535或0~FFFFH)。IN和OUT指令提供了字與字節(jié)兩種使用方式,選用哪一種,取決于外設(shè)端口的寬度。例3.11
inax,28h
mov
data_word,ax(把端口28h的內(nèi)容經(jīng)ax傳送到存儲單元data_word)
例3.12
mov
dx,3fch
inax,dx(從端口03fch取一個字送到ax寄存器)
例3.13
out5,al
(從al寄存器輸出一個字節(jié)到端口5)目的地址傳送指令LEA(Loadeffectiveaddress)取有效地址指令格式: LEAreg16,mem操作: 把源操作數(shù)的EA,傳送到目標寄存器reg16
中源操作數(shù)mem必須是內(nèi)存操作數(shù)reg16必須是一個16位的通用寄存器例3.14
LEABX,BUFFER MOVBX,BUFFER
前者是把BUFFER的有效地址‘EA’傳送給BX,后者把存儲單元BUFFEER的內(nèi)容傳送給BX。例3.15
LEABX,MAX[BX][SI]若執(zhí)行前:
BX=0400H,SI=003CH,MAX=0F62H則
EA=0400+003C+0F62=139EH指令執(zhí)行后:
BX=139EHLES
(LoadESwithpointer)指針送ES指令格式: LESreg16,mem32操作: reg16←[mem32] ES)←[mem32+2]LDS(LoadDSwithpointer)指針送DS指令格式: LDSreg16,mem32操作: reg16←[mem32] DS←[mem32+2]源操作數(shù)mem32是32位的內(nèi)存操作數(shù)。目的操作數(shù)reg16是16位的通用寄存器。指令將源操作數(shù)指定的存儲器中的連續(xù)4字節(jié)傳送給指定的reg16和DS,低2位字節(jié)給reg16,高2位字節(jié)給DS。LEA、LDS、LES三條指令不影響標志位。例3.17: LESDI,[BX]執(zhí)行前
DS=B000H,BX=O80AH,[B080AH]=05AEH,[B080CH]=4000H執(zhí)行后
DI=05AEH,ES=4000H例3.16
LDSSI,[10H]執(zhí)行前
DS=C000H,SI=0010H,[C0010H]=0180H,[C0012H]=2000H執(zhí)行后
SI=0180H,DS=2000H。標志傳送指令LAHF(LoadAHwithflags)標志送AH指令格式:LAHF操作:AH←FLAG的低字節(jié)位只傳送了SF、ZF、AF、PF、CF五個標志位SAHF(StoreAHintoflags)AH送標志寄存器格式:SAHF操作:FLAG的低字節(jié)←AH
PUSHF(Pushtheflags)標志進棧指令格式:PUSHF操作:SP←SP-2[SP+1,SP]←FLAGS格式:
POPF操作:
FLAG←[SP+1,SP] SP←SP+2POPF(Poptheflags)標志出棧指令LAHF和PUSHF不影響標志位SAHF和POPF由裝入的值來確定標志位3.2.2算術(shù)指令加法指令A(yù)DD(add)加法格式:ADDdst,src操作:dst
←src+dstADC(addwithcarry)帶進位加法格式:ADCdst,src操作:dst←src+dst+CFINC(increment)加1格式:INCdst操作:dst
←dst+1dst為寄存器或存儲器操作數(shù)。src是寄存器、存儲器操作數(shù)或立即數(shù)src和dst不能同為存儲器操作數(shù)不允許段寄存器參與運算。允許字節(jié)操作或字操作。上述指令對條件標志位產(chǎn)生影響,但INC指令對CF位無影響。例如:
addcl,10
adc
dx,si addax,mem
adc
alpha[di],30h incsi以上指令皆合法。例3.18:
moval,7eh
mov
bl,5bh addal,bl執(zhí)行后, al=7eh+5bh=d9h各狀態(tài)標志位為:SF=1,ZF=0,AF=1 PF=0,CF=0,OF=1例3.19:要求計算兩個多字節(jié)的16進制數(shù)之和: 3B74AC60F8H+20D59E36C1H=?式中被加數(shù)和加數(shù)均有五個字節(jié),假設(shè)它們已分別存入從DATA1和DATA2開始的兩個內(nèi)存區(qū),且均為低位字節(jié)在前,高位字節(jié)在后,如圖3.8所示。要求相加所得結(jié)果仍存回以DATA1為首址的內(nèi)存區(qū)。本例可用循環(huán)程序來實現(xiàn)。運算程序流程圖見圖3.8。mov
cx,0;設(shè)置循環(huán)次數(shù)mov
si,0;置位移量初值clc
;清進位(CF=0)looper:inccxmoval,data2[si];取一個加數(shù)adcdata1[si],al;和另一個加數(shù)相加incsi;位移量加1cmp
cx,5;循環(huán)次數(shù)減1jnz
looper ;未完,轉(zhuǎn)loper處繼續(xù)hlt
;程序暫停
減法指令SUB(subtract)減法格式:SUBdst,src操作:dst
←dst-srcSBB(subtractwithborrow)帶借位減法格式:SBBdst,src操作:dst←dst-src-CF其中,CF為借位標志位的值例3.22
SUB[SI+14H],0136H指令執(zhí)行前DS=3000H,SI=0040H,30054H=4336H指令執(zhí)行后
4336H0100001100110110
-0136H
-0000000100110110
4200H
0100001000000000
0100001100110110或補碼相減
+1111111011001010
1←0100001000000000
所以[30054H]=4200H,SF=0,ZF=0,CF=0,OF=0
例3.23
SUBDH,[BP+4]指令執(zhí)行前DH=41H,SS=0000H,BP=00E4H,[000E8H]=5AH指令執(zhí)行后
41H0100000101000001-5AH
-01011010
+10100110
E7H1→1110011111100111
所以
DH=0E7H,SF=1,ZF=0,CF=1,OF=0DEC(Decrement)減1格式:DECdst操作:dst
←dst
-1CMP(Compare)比較格式:CMPdst,src操作:dst-srcCMP不保存運算結(jié)果,但影響條件標志位。大小關(guān)系兩個無符號數(shù)比較若CF=0,則被減數(shù)大,若CF=1,則被減數(shù)小。兩個有符號數(shù)比較1.若兩個數(shù)符號相同,可用SF來判斷若SF=0,表示被減數(shù)大,SF=1則反之。2.若兩個數(shù)符號不同OF⊕SF=0時,被減數(shù)大.OF⊕SF=1時,減數(shù)大.若兩個所比較的數(shù)相等,則ZF=1,否則ZF=0
NEG(Negate)求補格式:NEGdst操作:dst←0-dst例如若原來
AL=0FFH(-1的補碼)執(zhí)行指令 NEGAL后
AL=01(-1的絕對值)dst,
src的意義與加法指令意義相同;可進行字節(jié)(8位)或字(16位)運算;以上指令對狀態(tài)標志位有影響,但DEC指令對CF位無影響例如:SUBAL,37HSBBCX,DXSUBARRAY[DI],AXSBB[SI+6],97DECBLDECWORDPTR[BP][DI]NEGAXNEGBYTEPTR[BX]CMPAL,0AHCMP[BXF5],SI皆為合法指令例3.20內(nèi)存數(shù)據(jù)存放了100個帶符號數(shù),首地址為AREA1,要求將各數(shù)取絕對值后存入以AREA2為首址的內(nèi)存區(qū)。由于100個帶符號數(shù)中可能既有正數(shù),又有負數(shù),因此先要判斷正負。如為正數(shù),可以原封不動的傳送到另一內(nèi)存區(qū);如為負數(shù),則須先求補即可得到負數(shù)的絕對值,然后再傳送。程序如下: LEASI,AREA1 ;SI←原地址指針
LEADI,AREA2 ;DI←目的地址指針 MOVCX,100 ;CX←循環(huán)次數(shù)CHECK: MOVAL,[SI] ;取一個帶符號數(shù)到AL CMPAL,0 ;AL內(nèi)容不變,但影響標志
JNSNEXT
;若SF=0,則轉(zhuǎn)NEXT NEGAL ;否則求補NEXT: MOV[DI],AL ;傳送到目的地址 INCSI ;源地址加1
INCDI ;目的地址加1 DECCX ;循環(huán)次數(shù)減1
JNZCHECK
;如不等于零,則轉(zhuǎn)CHECK HLT ;停止例3.21在數(shù)據(jù)段從DATA開始的存儲單元中分別存放了兩個8位無符號數(shù)。比較他們的大小,并將大者傳送到MAX單元。編程如下:LEABX,DATA;DATA偏移地址送BXMOVAL,[BX];第一個無符號數(shù)送ALINCBX;BX指向第二個無符號數(shù)CMPAL,[BX];兩數(shù)比較JNCDONE
;如CF=0,則轉(zhuǎn)到DONEMOVAL,[BX];否則,第二個無符號數(shù)送ALDONE:
MOVMAX,AL ;較大的無符號送MAX單元HLT;停止
IMUL(SignedMultiple)帶符號數(shù)乘法格式:IMULsrc操作:與MUL相同,但操作數(shù)是帶符號數(shù)乘法指令MUL(UnsignedMultiple)無符號數(shù)乘法格式:MULsrc操作:字節(jié)運算AX←AL×src
字運算
DX,AX←AX×src
乘法指令是單操作數(shù)指令,隱含的目的操作數(shù)必須是累加器src為寄存器或存儲器操作數(shù),不能是立即數(shù)可進行字節(jié)或字運算。字節(jié)運算時,結(jié)果為16位,字運算時,結(jié)果為32位。本指令對CF和OF位有影響,對其他條件標志位為無定義對于MUL指令,如果乘積的高半部分(字節(jié)運算的AH,字運算時的DX)為0,則CF=OF=0,否則,CF=OF=1對于IMUL指令,如果乘積的高半部分僅僅是乘積低半部分的符號擴展,則CF=OF=0,否則,CF=OF=1。符號擴展就是將乘積的低半部分中的最高位之值送入乘積的高半部分的每一位。例如,字節(jié)運算,若:AL<80H,經(jīng)符號擴展后
AH=0若:AL≥80H,符號擴展后
AH=FFH字運算,若:AX<8000H
,符號擴展后,
DX=0若:AX≥8000H
,符號擴展后,
DX=FFFFH。除法指令8086CPU執(zhí)行除法時規(guī)定:當被除數(shù)為字時,除數(shù)應(yīng)為字節(jié);當被除數(shù)為雙字位時,除數(shù)應(yīng)為字。DIV(Unsigneddivide)除法格式:DIVsrc操作:字節(jié)運算
AL←AX/src
的商
AH←AX/src
的余數(shù)
字運算
AX←DX,AX/src
的商
DX←DX,AX/src
的余數(shù)操作數(shù)被認為是無符號數(shù),商和余數(shù)皆為無符號數(shù)。IDIV(Signeddivide)帶符號數(shù)除法格式:IDIVsrc操作:與DIV相同,但操作數(shù)被認為是帶符號數(shù),商和余數(shù)也是帶符號數(shù)src的類型與乘法指令中的一樣;除法指令對條件標志為無定義(值不確定);若除數(shù)為0,或執(zhí)行除法時,商超出范圍,CPU自動產(chǎn)生類型號為0的內(nèi)部中斷,作中斷處理。CWD
字擴展指令格式:CWD操作:若AX<8000H,則DX←0000H,
否則DX←FFFFH符號擴展指令CBW字節(jié)擴展指令格式:CBW操作:若AL<80H,則AH←
00H,
否則AH←FFH例如:moval,64h ;AL=64H(機器數(shù)), ;表示10進制數(shù)100(真值)cbw
;將符號0擴展,AX=0064H, ;仍然表示100movax,0ff00h
;AX=FF00H, ;表示有符號10進制數(shù)-256cwd
;將符號位“1”擴展, ;DX.AX=FFFFFF00H
;仍然表示-256BCD碼(BinaryCodedDecimal)BCD碼是一種用二進制編碼表示的十進制數(shù),又稱二-十進制數(shù)它用4位二進制碼表示1位十進制數(shù)碼,這4位二進制數(shù)的權(quán)為8421,所以又稱8421碼。十進制調(diào)整指令
表3.2BCD碼
十進制
數(shù)碼
0
1
2
3
4
5
6
7
8
9
BCD碼
0000
0001
0010
0011
0100
0101
0110
0111
1000
1001
非壓縮的BCD碼(unpackedBCDformat)以8位二進制數(shù)為一組表示1位十進制數(shù);8位中的低4位表示8421的BCD碼,而高4位則無意義。壓縮的BCD碼(packedBCDformat)用4位二進制數(shù)表示1位十進制數(shù)位,整個十進制數(shù)形式為一個順序的以4位為一組的數(shù)串。例如:9502d的壓縮的BCD碼形式為:
1001010100000010
非壓縮的BCD碼形式為:uuuu1001uuuu0101uuuu0000uuuu0010數(shù)字的ASCⅡ碼就是一種非壓縮的BCD碼形式例如:9d的ASCⅡ碼為:39H=00111001其低4位是8421BCD碼(9),高4位無意義。真值(十進制) 8 64二進制編碼 08H 40H壓縮BCD碼 08H 64H非壓縮BCD碼 08H 0604HASCII碼 38H 3634H編碼的比較調(diào)整的意義算術(shù)運算指令都是二進制運算指令,若作BCD碼的運算,會出現(xiàn)錯誤,必須進行調(diào)整才能得到正確的BCD碼運算結(jié)果。在進行十進制數(shù)算術(shù)運算時應(yīng)分兩步進行:①先按二進制數(shù)運算規(guī)則運算,得到中間結(jié)果;②再用十進制調(diào)整指令對中間結(jié)果進行修正,得到正確的結(jié)果。例如 34+23=57
00110100
34的BCD碼
+ 0010001123的BCD碼
01010111
57的BCD碼
結(jié)果正確,不作調(diào)整。例如:7+6=13
00000111;7的BCD碼
+ 00000110;6的BCD碼
00001101;結(jié)果錯(和>9,AF=0)
+ 00000110
;加6調(diào)整
00010011 ;13的BCD碼,正確
兩個4位二進制數(shù)之和>9,應(yīng)作加6調(diào)整例如:48+29=77
01001000 ;48的BCD碼+ 00101001
;29的BCD碼
01110001
;錯誤(有進位,AF=1)+ 00000110
;加6調(diào)整
01110111
;77的BCD碼,正確
兩個4位二進制數(shù)之和<9,但有
AF=1,應(yīng)作加6調(diào)整。例如57+46=103
01010111
+01000110
10011101
;中間結(jié)果,低4位>9
+00000110
;加6調(diào)整
10100011
;中間結(jié)果,高4位>9
+01100000
;加60H調(diào)整
CF←1
00000011;正確結(jié)果CF=1加法運算后,低4位>9時,調(diào)整指令需作加06H調(diào)整;高4位>9時,調(diào)整指令需作加60H調(diào)整。
例如:72+91=163
01110010
+10010001
CF←1
00000011 ;中間結(jié)果,CF=1
+01100000 ;加60H調(diào)整
01100011 ;正確結(jié)果加法運算后,當CF=1(有進位產(chǎn)生)時,調(diào)整指令應(yīng)作加60H處理。DAA(decimaladjustforaddition)加法的十進制調(diào)整格式:DAA操作:將AL中的和調(diào)整成壓縮的BCD格式。壓縮的BCD碼調(diào)整指令調(diào)整方法:若AL的低4位>9或AF=1,則AL←AL+06H,AF←1若AL的高4位>9或CF=1,則AL←AL+60H,CF←1DAA指令之前必須先執(zhí)行ADD或ADC指令加數(shù)和被加數(shù)都必須是2位的壓縮BCD數(shù)和要存入AL寄存器。
DAA指令對OF無定義,但影響其他標志位。例3.27
ADDAL,BL
DAA執(zhí)行前, AL=28H,BL=68H執(zhí)行ADD后,AL=90H,AF=1,CF=0和不是正確的BCD碼形式。執(zhí)行DAA指令,因為AF=1,CF=0
而作調(diào)整:
AL←AL+06H
得到 AL=96H,CF=0,AF=1DAS(decimaladjustforsubtraction)減法的十進制調(diào)整指令格式:DAS操作:把AL中的差調(diào)整成壓縮的BCD碼格式調(diào)整方法:若AL的低4位>9或AF=1,則AL←AL-06H,AF←1若AL的高4位>9或CF=1,則AL←AL-60H,CF←1DAS指令僅對AL內(nèi)容作調(diào)整,不改變AH的內(nèi)容。在DAS指令之前必須先執(zhí)行SUB或SBB指令減數(shù)和被減數(shù)都必須是2位的壓縮BCD數(shù)DAS指令對OF位無影響,對其他條件標志位產(chǎn)生影響。AAA(ASCIIadjustforaddition)加法的ASCII調(diào)整指令格式:AAA操作:將AL中的和調(diào)整到非壓縮的BCD碼格式,AH←AH+調(diào)整產(chǎn)生的進位值非壓縮的BCD碼調(diào)整指令調(diào)整方法:若AL
∧0FH>09H
或AF=1,則AL←AL+06H,AH←AH+1,AF←1,CF←1,AL←AL∧0FH否則AL←AL∧0FH,CF←0,AF←0AAA指令之前必須先執(zhí)行ADD或ADC指令加數(shù)和被加數(shù)都必須是1位壓縮BCD數(shù)和要存入AL寄存器。AAA指令影響AF和CF標志,對其他標志無定義例3.30
ADDAL,BL AAA如指令執(zhí)行前,AX=0535H(5的ASCII碼)BL=39H(9的ASCII碼)ADD指令執(zhí)行完后AL=6EH,BL=39H,AH=05H,AF=CF=0執(zhí)行AAA,因AL∧0FH=0EH>9H作調(diào)整:AL←AL+06H,得
AL=74HAH←AH+1,得AH=06HAF←1,CF←1AL←AL∧0FH,得AL=04H最終結(jié)果為AH=06H,AL=04H,即AX=0604H,CF=AF=1AAS(ASCIIadjustforsubtraction)減法的ASCII碼調(diào)整指令格式:AAS操作:把AL中的差調(diào)整到非壓縮的BCD碼格式,AH←AH-調(diào)整產(chǎn)生的借位值。調(diào)整方法:若AL∧0FH>9
或AF=1,則AL←AL-6,AH←AH-1AF←1,CF←1,AL←AL∧0FH否則AL←AL∧0FHAAS指令的使用要求和對標志位的影響與AAA指令類似。AAM(ASCIIadjustformultiplication)乘法的ASCII調(diào)整指令格式:AAM操作:對AL中的乘積進行調(diào)整,方法為:AH←AL/0AH的商;AL←AL/0AH的余數(shù)AAM指令之前必須執(zhí)行MUL指令;乘數(shù)與被乘數(shù)是高4位為0的1位非壓縮型BCD碼對SF,ZF和PF位有影響,對AF,CF和OF位無定義AAD(ASCIIadjustfordivision)除法的ASCII調(diào)整指令格式:AAD操作:AL←AH×0AH+AL; AH←0AAD指令是用在DIV指令之前,對AX中的被除數(shù)進行調(diào)整;被除數(shù)是存放在AX中的2位非壓縮BCD數(shù),除數(shù)是1位非壓縮BCD數(shù),每個BCD數(shù)的高4位全為0;指令據(jù)AL的結(jié)果設(shè)置SF、ZF、PF位,對OF、CF和AF無定義。
3.2.3邏輯運算和移位指令共有五條:AND(and)邏輯與OR(or)邏輯或XOR(exclusive)異或NOT(not)邏輯非TEST(test)測試邏輯運算指令NOT邏輯非指令格式:NOTdst操作:dst
←dstAND
邏輯與指令格式:ANDdst,src操作:dst
←
dst∧srcOR
邏輯或指令格式:ORdst,src操作:dst
←dstVsrcTEST測試指令格式:
TESTdst,src操作:
dst
∧
src
結(jié)果影響狀態(tài)標志位XOR異或指令格式:
XORdst,src操作:
dst
←dst
src以上指令可進行字節(jié)或字操作dst與src的意義與算術(shù)運算指令的類似除NOT指令外,其余四條指令都對條件標志位產(chǎn)生影響為:CF=OF=0AF位無定義SF、ZF、PF據(jù)運算結(jié)果而定。例3.35判斷一個從端口地址為PORT的外設(shè)輸入的數(shù)據(jù),若數(shù)據(jù)的第1、3、5位中的任一位不為零,則轉(zhuǎn)移到NEXT。程序段為:
IN AL,PORT
TEST AL,00101010B JNZ NEXT . . .
NEXT:SHL/SAL邏輯左移/算術(shù)左移(shiftlogicalleft/shiftarithmeticleft)格式: SHL/SALdst,1/CL
操作:將dst順序向左移1位或移CL寄存器中指定的位數(shù),低位補00LHdstCF移位和循環(huán)指令演示SHR邏輯右移指令格式:SHRdst,1/CL0CFLHdstSAR算術(shù)右移指令格式:SARdst,1/CLLHCFdst演示演示ROL循環(huán)左移指令格式:ROLdst,1/CLROR循環(huán)右移指令格式:RORdst,1/CL
LHLHdstCFLHCFdst演示演示RCR帶進位循環(huán)右移指令格式:RCRdst,1/CLLHLHdstCFLHCFdstRCL帶進位循環(huán)左移指令格式:RCLdst,1/CL演示演示移位和循環(huán)指令可進行字節(jié)和字操作dst可以是reg和mem操作數(shù)移位次數(shù)可以是1或由CL中內(nèi)容來確定指令對條件標志位的影響移位指令:影響除AF位以外的其他標志位循環(huán)指令:只影響CF和OF位對OF位的影響僅當移為次數(shù)為1時才有意義,該位設(shè)置規(guī)則為:指令執(zhí)行前后,最高位相同時OF=0,否則OF=1例如:以下均為移位指令的合法形式SHLBL,1SHRWORD
PTR
BLOCK,CLSARDI,CLROLBYTE
PTR[DI],1RORBH,CLRCLAL,CLRCRWORD
PTR
TABLE[BX],1例如;將DX.AX中32位數(shù)值左移一位
shl ax,1
rcl
dx,1DXAXCF0例3.38要求測試AL寄存器中的第5位的狀態(tài)是“0”還是“1”,則可利用以下指令實現(xiàn):MOVCL,5
;CL←移位次數(shù)RORAL,CL ;CF←AL的第5位JNCZERO ;若CF=0,轉(zhuǎn)ZERO
:
ZERO:
:3.2.4串操作指令有5條指令MOVS(Movestring)串傳送CMPS(Comparestring)串比較SCAS(Scanstring)串掃描LODS(Loadfromstring)從串取STOS(Storeintostring)存入串MOVS串傳送格式:[REP]MOVS
dst-string,src-string
[REP]MOVSB
[REP]MOVSW操作:[ES:DI]←[DS:SI] SI←SI+1,DI←DI+1(字節(jié)操作)
SI←SI+
2,DI←DI+
2(字操作)當方向標志DF=0時用“+”,DF=1時用“-”。目的串在附加段,段基值在ES中;源串通常在數(shù)據(jù)段,段基值由DS提供。源串可以段超越,目的串則不允許;在第一種格式中,應(yīng)表明操作數(shù)是字還是字節(jié),指令中的dst和src只提供給匯編檢查之用,并不允許用其他尋址方式來確定操作數(shù)。第二、三種格式則明確指定是字節(jié)或字操作,不用寫操作數(shù)。傳送指令不影響狀態(tài)標志位。方括號項[REP]是可選項,REP為重復性前綴。重復性前綴REP的使用格式:REP
stringprimitive其中stringprimitive
代表串指令(MOVS,STOS)操作:①如CX=0則退出REP,否則執(zhí)行指令②CX←CX-1③執(zhí)行其后串指令④重復①~③例3.39將數(shù)據(jù)段中首地址為BUFFER1的200個字節(jié)傳送到附加段首地址位BUFFER2的內(nèi)存區(qū)中。用MOV指令編程如下:對DS,ES初始化LEASI,BUFFER1 ;SI←源串首地址指針LEADI,BUFFER2 ;DI←目的串首地址指針MOVCX,200 ;CX←字節(jié)串長度AGA:
;標號,即為轉(zhuǎn)移的目的地址MOVAL,[SI]
;AL←從源串取1個字節(jié)MOVES:[DI],AL
;目的串←ALINCSI
;源串地址指針+1INCDI
;目的串地址指針+1DECCX
;循環(huán)次數(shù)-1JNZ
AGA
;未完,轉(zhuǎn)移到AGA處繼續(xù)…用MOVSB指令編程如下:…LEASI,BUFFER1 ;(SI)←源串首地址指針LEADI,BUFFER2 ;(DI)←目的串首地址指針MOVCX,200 ;(CX)←字節(jié)串長度CLD
;使DF=0,則地址自動增量AGA:
MOVSB
;傳送1個字節(jié),并地址自動+1DECCX
;計數(shù)-1JNZ
AGA
;未傳送完繼續(xù)…用REPMOVSB格式編程如下:…對DS,ES初始化LEASI,BUFFER1 ;SI←源串首地址LEADI,BUFFER2 ;DI←目的串首地址MOVCX,200 ;CX←字節(jié)串長度CLD
;使DF=0,則地址自動增量REPMOVSB
;傳送200個字節(jié)…LODS從串取指令格式:
LODSsrc_string LODSB/LODSW操作字節(jié)操作: AL←[DS:SI],SI←SI+
1字操作:
AX←[DS:SI],SI←SI+
2LODS指令不影響狀態(tài)標志位,而且一般不帶重復前綴。例3.40內(nèi)存中以BUFFER為首址的緩沖區(qū)內(nèi)有10個非壓縮型BCD碼形式的十進制數(shù),將這些十進制數(shù)順序顯示在屏幕上。編程如下:LEASI,BUFFER;(SI)←緩沖區(qū)首址MOVCX,10;(CX)←字符串長度CLD
;
DF=0MOVAH,02H ;(AH)←功能號GET:
LODSB
;取一個BCD碼到AL
ORAL,30H;BCD碼轉(zhuǎn)換為ASCII碼MOV DL,AL ;(DL)←字符INT 21H ;顯示DEC CX ;(CX)←(CX)-1JNZ GET
;未完成10個字符則繼續(xù)…STOS存入串指令格式:
[REP]STOS[ES:]dst_string
[REP]STOSB/ [REP]STOSW操作字節(jié)操作:
[ES:DI]←AL,DI←DI+1字操作:
[ES:DI]←AX,DI←DI+2STOS指令對狀態(tài)標志無影響,指令通常與REP配合使用。例3.41數(shù)據(jù)塊BLOCK1由英文字母、數(shù)字和各種其它符號組成,其結(jié)束符是回車符CR(ASCII碼為0DH)。將該數(shù)據(jù)塊傳送到以BLOCK2為首址的內(nèi)存區(qū),并將其中所有的英文小寫字母(a~z)轉(zhuǎn)換成相應(yīng)的大寫字母(A~Z),其余不變。英文大、小寫字母的ASCII碼為:
‘a(chǎn)’=61H
‘A’=41H
‘b’=62H
‘B’=42H
…
…
‘z’=7AH
‘Z’=5AH即大、小寫字母的ASCII碼相差20H編程如下:LEA SI,BLOCK
;(SI)←源地址指針LEA DI,BLOCK2
;(DI)←目的地址指針CLD
;DF=0NEXT:LODSB
;取1個字符到ALCMP AL,0DH
;是否回車符JZ DONE
;是,轉(zhuǎn)DONE
CMP AL,61H
;是否小于‘a(chǎn)’JC OK
;是,則轉(zhuǎn)OKCMPAL,7AH ;是否大于‘z’JNCOK
;是,則轉(zhuǎn)OKSUBAL,20H ;否則,A減20HOK:
STOSB
;送入存儲器JMPNEXT
;轉(zhuǎn)移到NEXTDONE:
HLT ;停止CMPS串比較指令格式:[REPE/REPNE]CMPSsrc_string,dst_string[REPE/REPNE]CMPSB(字節(jié))[REPE/REPNE]CMPSW(字)操作:[DS:SI]-[ES:DI] SI←SI+1,DI←DI+1(字節(jié)操作) SI←SI+2,DI←DI+2(字操作)運算結(jié)果影響狀態(tài)標志位REPE
(當相等/為零
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025版新能源汽車租賃與充電設(shè)施運營管理合同范本3篇
- 2025年度鋼管架施工項目質(zhì)量保證與驗收合同
- 2025版?zhèn)€人住房裝修安全監(jiān)理服務(wù)合同2篇
- 2025年度個人住房抵押貸款房產(chǎn)抵押評估合同3篇
- 二零二五年度水資源保護與利用項目合同2篇
- 科技教育在醫(yī)療領(lǐng)域的應(yīng)用與探索
- 二零二五年度離婚后住房公積金提取及分割合同3篇
- 遠程工作中的嵌入式學習支持服務(wù)
- 科技環(huán)境下的安全教育培訓新模式
- 網(wǎng)絡(luò)安全意識教育的現(xiàn)狀與挑戰(zhàn)
- 2024年江蘇護理職業(yè)學院高職單招(英語/數(shù)學/語文)筆試歷年參考題庫含答案解析
- 電能質(zhì)量與安全課件
- 醫(yī)藥營銷團隊建設(shè)與管理
- 工程項目設(shè)計工作管理方案及設(shè)計優(yōu)化措施
- 圍場滿族蒙古族自治縣金匯螢石開采有限公司三義號螢石礦礦山地質(zhì)環(huán)境保護與土地復墾方案
- 小升初幼升小擇校畢業(yè)升學兒童簡歷
- 資金支付審批單
- 第一單元(金融知識進課堂)課件
- 新概念二冊課文電子版
- 介入導管室護士述職報告(5篇)
- 零件的工藝分析及毛坯選擇
評論
0/150
提交評論