版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、2寄存器寄存器說(shuō)明說(shuō)明AX作為累加器用,所以它是算術(shù)運(yùn)算的主要寄存器。在乘除指令中指定用來(lái)存放操作數(shù)。另外,所有的I/O指令都使用AX或AL與外部設(shè)備傳送信息。BX在計(jì)算存儲(chǔ)器地址時(shí),可作為基址寄存器使用。CX常用來(lái)保存計(jì)數(shù)值,如在移位指令、循環(huán)指令和串處理指令中用作隱含的計(jì)數(shù)器DX在作雙字長(zhǎng)運(yùn)算時(shí),可把DX和AX組合在一起存放一個(gè)雙字長(zhǎng)數(shù),DX用來(lái)存放高16位數(shù)據(jù)。此外,對(duì)某些I/O操作,DX可用來(lái)存放I/O的端口地址3寄存器名稱說(shuō)明CS代碼段寄存器存放當(dāng)前執(zhí)行的程序的段地址DS數(shù)據(jù)段寄存器存放當(dāng)前執(zhí)行的程序所用操作數(shù)的段地址SS堆棧段寄存器存放當(dāng)前執(zhí)行的程序所用堆棧的段地址ES附加段寄存器
2、存放當(dāng)前執(zhí)行程序中一個(gè)輔助數(shù)據(jù)段的段地址【SP、BP、SI、DI】四個(gè)16位寄存器可以象數(shù)據(jù)寄存器一樣在運(yùn)算過(guò)程中存放操作數(shù),但它們只能以字(16位)為單位使用。此外,它們更經(jīng)常的用途是在存儲(chǔ)器尋址時(shí),提供偏移地址。因此,它們可稱為指針或變址寄存器。4寄存器名稱說(shuō)明SP堆棧指針寄存器用來(lái)指出棧頂?shù)钠频刂稡P基址指針寄存器在尋址時(shí)作為基地址寄存器使用,但它必須與堆棧段寄存器SS聯(lián)用來(lái)確定堆棧段中的存儲(chǔ)單元地址SI源變址寄存器在串處理指令中,SI作為隱含的源變址寄存器與DS聯(lián)用,以確定數(shù)據(jù)段中的存儲(chǔ)單元地址,并有自動(dòng)增量和自動(dòng)減量的變址功能DI目的變址寄存器在串處理指令中,DI和附加段寄存器ES
3、聯(lián)用,以達(dá)到在附加段中尋址的目的,然后DI自動(dòng)增量或減量5寄存器名稱說(shuō)明IP指令指針寄存器它用來(lái)存放將要執(zhí)行的下一條指令地址的偏移量,它與段寄存器【CS】聯(lián)合形成代碼段中指令的物理地址。在計(jì)算機(jī)中,控制程序的執(zhí)行流程就是通過(guò)控制IP的值來(lái)實(shí)現(xiàn)的FLAGS 標(biāo)志寄存器這是一個(gè)存放條件碼標(biāo)志、控制標(biāo)志的16位寄存器標(biāo)志標(biāo)志寄存器寄存器6標(biāo)志位名稱說(shuō)明Debug1Debug0ZF零標(biāo)志位/ZeroFlag指令執(zhí)行后,結(jié)果是否為0?1:0sub,mul,add,divinc,or,andZRNZPF奇偶標(biāo)志位/ParityFlag指令執(zhí)行后,結(jié)果的bit位中,1的個(gè)數(shù)是否為偶數(shù)?1:0PEPOSF符號(hào)
4、標(biāo)志位/SignFlag指令執(zhí)行后,結(jié)果是否為負(fù)?1:0NGPLCF進(jìn)位標(biāo)志位/CarryFlag無(wú)符號(hào)運(yùn)算時(shí),記錄運(yùn)算結(jié)果的最高有效位向更高位的進(jìn)位值,或從更高位的借位值CYNCOF溢出標(biāo)志位/OverflowFlag有符號(hào)運(yùn)算時(shí),運(yùn)算結(jié)果是否發(fā)生溢出?1:0OVNVDF方向標(biāo)志位/DirectionFlag0-串處理指令時(shí),si,di遞增1-串處理指令時(shí),si,di遞減此標(biāo)志位要與movsb,movsw配合使用,指明每次循環(huán)后si,di的增減AF輔助進(jìn)位標(biāo)志/AuxiliaryCarryFlag運(yùn)算時(shí)D3位(低半字節(jié))有進(jìn)位或借位時(shí),AF=1;否則AF=0。如:49H+6DHB6H,D3有
5、進(jìn)位:AF=1TF跟蹤標(biāo)志/TraceFlag用于控制處理器進(jìn)入單步跟蹤方式:0-禁止進(jìn)入單步中斷跟蹤,處理器正常工作1-允許進(jìn)入單步中斷跟蹤,處理器單步執(zhí)行,跟蹤指令執(zhí)行IF中斷標(biāo)志/InterruptFlag用于控制外部可屏蔽中斷是否可以被處理器響應(yīng):設(shè)置IF1,則允許可屏蔽中斷;設(shè)置IF0,則禁止可屏蔽中斷。-U: 查看匯編指令查看匯編指令 【-U1000:0】-R: 查看、修改寄存器的值查看、修改寄存器的值【-RAX】修改寄存器AX的值-T: 執(zhí)行命令執(zhí)行命令-D: 查看內(nèi)存查看內(nèi)存【-D段地址:偏移地址】如:【-D1000:0】【-D1000:09】-E: 改寫(xiě)內(nèi)存改寫(xiě)內(nèi)存【-E段地
6、址:偏移地址數(shù)據(jù)】如:【-E1000:012345】【-E1000:0abc】【-E1000:0“welcommasm”】-A: 寫(xiě)匯編指令到內(nèi)存寫(xiě)匯編指令到內(nèi)存【-A1000:0】movax,111.7如果未指定寄存器,對(duì)內(nèi)存單元的操作采用以下形式:【1】wordptr指定訪問(wèn)的內(nèi)存單元為字字單元,如:movword ptrds:01incword ptrbxincword ptrds:0addword ptrbx,2【2】byteptr指定訪問(wèn)的內(nèi)存單元為字節(jié)字節(jié)單元,如:movbyte ptrds:01incbyte ptrbxincbyte ptrds:0addbyte ptrbx,2
7、8910dbdd1ddadbasdfghjk定義字節(jié)型數(shù)據(jù),并初始化,占1個(gè)字節(jié)dwdw1dw0123h,0234h定義字型數(shù)據(jù),并初始化,占2個(gè)字節(jié)dddd1dd0123h,0234h定義雙字型數(shù)據(jù),并初始化,占4個(gè)字節(jié)dupdb3dup(0)【db0,0,0】定義3個(gè)字節(jié),都初始化為0db3dup(1,2,3)【db1,2,3,1,2,3,1,2,3】定義9個(gè)字節(jié)db3dup(abc,ABC)【dbabcABCabcABCabcABC】定義18個(gè)字節(jié)db重復(fù)次數(shù)dup(重復(fù)的數(shù)據(jù))重復(fù)的數(shù)據(jù)可以為db,也可以為dw,ddp像這種可以通過(guò)依據(jù)數(shù)據(jù),直接計(jì)算出所要找的元素的位置的表,我們稱其為
8、:直接定址表。tabledb0123456789ABCDEF;字符表moval,tablebx;標(biāo)號(hào)+下標(biāo)11assumecs:codecodesegment a db 1,2,3,4,5,6,7,8 b dw 0start:movsi,0movcx,8s:moval,asimovah,0addb,axincsiloopsmovax,4c00hint21hcodeendsendstart12assumecs:codecodesegment a : db 1,2,3,4,5,6,7,8 b : dw 0start:movsi,offsetamovbx,offsetbmovcx,8s:moval,
9、cs:simovah,0addcs:bx, axincsiloopsmovax,4c00hint21hcodeendsendstartp對(duì)于程序中的adb1,2,3,4,5,6,7,8u指令:moval,asi相當(dāng)于:moval,cs:0siu指令:moval,a3相當(dāng)于:moval,cs:03u指令:moval,abx+si+3相當(dāng)于:moval,cs:0bx+si+313p數(shù)據(jù)標(biāo)號(hào)包含了對(duì)單元長(zhǎng)度的描述,所以,在指令中,它可以代表一個(gè)段中的內(nèi)存單元。p對(duì)于程序中的bdw0。u指令:movax,b相當(dāng)于:movax,cs:8u指令:movb,2相當(dāng)于:movwordptrcs:8,2u指令:
10、incb相當(dāng)于:incwordptrcs:8p在這些指令中,標(biāo)號(hào)b代表了一個(gè)內(nèi)存單元,地址為code:8,長(zhǎng)度為2字節(jié)。14setscreen:;ah子功能號(hào),0-sub1,1-sub2,2-sub3,3-sub4jmpshortsettable dw sub1,sub2,sub3,sub4set:pushbxcmpah,3;判斷傳遞的子功能號(hào)是否大于3jasretmovbl,ahmovbh,0addbx,bx;根據(jù)ah中的功能號(hào)計(jì)算對(duì)應(yīng)子程序的地址在table表中的偏移call word ptr tablebx;調(diào)用對(duì)應(yīng)的功能子程序sret:popbxiret15p另一種子程序跳轉(zhuǎn)實(shí)現(xiàn)方式:
11、ah子功能號(hào)16setscreen:cmpah,0jedo1cmpah,1jedo2cmpah,2jedo3cmpah,3jedo4jmpshortsretdo1:callsub1jmpshortsretdo2:callsub2jmpshortsretdo3:callsub3jmpshortsretdo4:callsub4sret:iret17jmpjmp ax目標(biāo)地址跳轉(zhuǎn) 將IP設(shè)為axjmp short s0位移跳轉(zhuǎn)【(IP)=標(biāo)號(hào)s0所在8位偏移】跳轉(zhuǎn)到標(biāo)號(hào)s0處,即將IP設(shè)為標(biāo)號(hào)s0所在地址,IP修改范圍-128127,短轉(zhuǎn)移jmp near ptr s0位移跳轉(zhuǎn)段內(nèi)轉(zhuǎn)移【(IP)=標(biāo)
12、號(hào)s0所在16位偏移】段內(nèi)近轉(zhuǎn)移,跳轉(zhuǎn)到標(biāo)號(hào)s0處,即將IP設(shè)為標(biāo)號(hào)s0所在地址,IP修改范圍-3276832767,jmp far ptr s0目標(biāo)地址跳轉(zhuǎn)段間轉(zhuǎn)移【(CS)=標(biāo)號(hào)s0所在段,(IP)=標(biāo)號(hào)s0所在16位偏移】段間遠(yuǎn)轉(zhuǎn)移,跳轉(zhuǎn)到標(biāo)號(hào)s0處,即將同時(shí)修改CS和IP,設(shè)為標(biāo)號(hào)s0所在的段和偏移地址,IP修改范圍-3276832767,jmp word ptr ds:10目標(biāo)地址跳轉(zhuǎn)段內(nèi)轉(zhuǎn)移【(IP)=(16*(ds)+10)】段內(nèi)轉(zhuǎn)移,將IP設(shè)為指定內(nèi)存數(shù)據(jù)jmp dword ptr ds:10目標(biāo)地址跳轉(zhuǎn)段間轉(zhuǎn)移【(CS)=(16*(ds)+10+2),(IP)=(16*(ds
13、)+10)】段間轉(zhuǎn)移,IP設(shè)為ds:10,CS設(shè)為ds:1218callcall s0【PushIP,jmpnearptrs0】將IP壓棧,跳轉(zhuǎn)到標(biāo)號(hào)處,此跳轉(zhuǎn)為段內(nèi)轉(zhuǎn)移call ax【PushIP,jmpax】將IP壓棧,IP設(shè)為ax,段內(nèi)轉(zhuǎn)移call word ptr ds:0【PushIP,jmpwordptrds:0】將IP壓棧,IP設(shè)為ds:0,段內(nèi)轉(zhuǎn)移call dword ptr ds:0【PushCS,PushIP,jmpdwordptrds:0】將CS、IP壓棧后,段間轉(zhuǎn)移,IP設(shè)為ds:0,CS設(shè)為ds:2call far ptr s0【PushCS,PushIP,jmpfa
14、tptrs0】將CS、IP壓棧,跳轉(zhuǎn)到標(biāo)號(hào)處,遠(yuǎn)轉(zhuǎn)移、段間轉(zhuǎn)移retret【popIP】利用棧中的數(shù)據(jù),實(shí)現(xiàn)近轉(zhuǎn)移ret N【popIP,addsp,N】利用棧中的數(shù)據(jù),實(shí)現(xiàn)近轉(zhuǎn)移,同時(shí),將棧頂下移N個(gè)內(nèi)存單元,一般用于函數(shù)調(diào)用時(shí),如果采用棧傳遞參數(shù),返回時(shí),需要將傳入的參數(shù)清空,可采用此語(yǔ)法retfretf【popIP,popCS】利用棧中的數(shù)據(jù),實(shí)現(xiàn)遠(yuǎn)轉(zhuǎn)移iretiret【popIP,popCS,popf】利用棧中的數(shù)據(jù),實(shí)現(xiàn)遠(yuǎn)轉(zhuǎn)移,用于中斷例程的返回p子程序的框架:標(biāo)號(hào):指令retp具有子程序的源程序的框架:19p寄存器:適用于參數(shù)少時(shí)。p變量:適用于同一源文件(程序模塊)中。p堆棧:只
15、適用于傳遞入口參數(shù)。p通過(guò)地址表傳送參數(shù)地址20movax,0123hpushaxmovax,0456hpushaxcalladdfun.addfun:pushbpmovbp,spmov ax, bp+4addax,bp+6popbpret 421計(jì)算0123h與0456h的和參數(shù)一,入棧參數(shù)二,入棧call時(shí),會(huì)有pushIP的調(diào)用備份bp,此時(shí)棧里已有四個(gè)數(shù)據(jù)通過(guò)bp取參數(shù),默認(rèn)段為:ssax=?ax=?描述:popIPaddsp,4p子程序p多重循環(huán)pushcxpopcx2223offsetmov ax, offset s0取得標(biāo)號(hào)s0的偏移地址mov ax, offset s2-s1取
16、得標(biāo)號(hào)s2與s1的偏移地址差值segmov ax, seg s0獲取標(biāo)號(hào)s0所在段地址jcxzjcxz s0【if(cx)=0)jmpshorts0】有條件短轉(zhuǎn)移指令,IP修改范圍-128127looploop s0【cx-;if(cx)!=0)jmpshorts0】循環(huán)指令,IP修改范圍-12812724adcabc ax,bx【ax+bx+CF】帶進(jìn)位加法sbbsbb ax,bx【ax-bx-CF】帶借位減法cmpcmp ax,bx計(jì)算ax-bx,根據(jù)計(jì)算結(jié)果修改標(biāo)志寄存器,影響到的標(biāo)志寄存器:ZF,PF,SF,CF,OFcldcld將方向標(biāo)志位DF設(shè)置為0即movsb時(shí),si,di為遞增
17、stdstd將方向標(biāo)志位DF設(shè)置為1即movsb時(shí),si,di為遞減clicli將中斷標(biāo)志位IF設(shè)置為0禁止可屏蔽中斷stisti將中斷標(biāo)志位IF設(shè)置為1打開(kāi)可屏蔽中斷25ininal,20h8位從20h端口讀入一個(gè)字節(jié)movdx,3f8hinal,dx16位從3f8h端口讀入一個(gè)字節(jié)outout20h,al8位向20h端口寫(xiě)入一個(gè)字節(jié)movdx,3f8houtdx,al16位向3f8h端口寫(xiě)入一個(gè)字節(jié)shlshlal,1邏輯左移:數(shù)據(jù)向左1移位,低位補(bǔ)充0,最后移出的一位寫(xiě)入CFmovcl,3shlal,cl錯(cuò)誤:shlal,3邏輯左移:數(shù)據(jù)向左3移位,低位補(bǔ)充0,最后移出的一位寫(xiě)入CFsh
18、rshral,1邏輯右移:數(shù)據(jù)向右1移位,高位補(bǔ)充0,最后移出的一位寫(xiě)入CFmovcl,3shral,cl錯(cuò)誤:shral,3邏輯右移:數(shù)據(jù)向右3移位,高位補(bǔ)充0,最后移出的一位寫(xiě)入CF26adcabc ax,bx【ax+bx+CF】帶進(jìn)位加法sbbsbb ax,bx【ax-bx-CF】帶借位減法p程序代碼1EF0001000H+2010001EF0Haxbxcxmovax,001EHmovbx,0F000Hmovcx,1000Haddcx,1EF0Hadcbx,1000Hadcax,0020H27p比如,計(jì)算003E1000H 00202000Hp結(jié)果放在ax,bx中,程序如下:movbx,
19、1000Hmovax,003EHsubbx,2000Hsbbax,0020H28mul指令29指令位被乘數(shù)乘數(shù)積mulbl8位alblaxmulbx16位axbxax(低位),dx(高位)mulbyteptrds:08位alds:0axmulwordptres:016位axes:0ax(低位),dx(高位)div指令30指令位被除數(shù)除數(shù)商余數(shù)divbl8位axblalahdivbx16位ax(低位),dx(高位)bxaxdxdivbyteptrds:08位axds:0alahdivwordptres:016位ax(低位),dx(高位)es:0axdxcmp指令:cmpax,bx31無(wú)符號(hào)運(yùn)算有
20、符號(hào)運(yùn)算標(biāo)志寄存器比較結(jié)果標(biāo)志寄存器比較結(jié)果ZF=1ax=bxZF=1ax=bxZF=0ax!=bxZF=0ax!=bxCF=1axbxSF=1且OF=0ax=bxSF=1且OF=1axbxCF=0且ZF=0axbxSF=0且OF=1axbxCF=1或ZF=1ax=bx條件轉(zhuǎn)移指令(無(wú)符號(hào)數(shù)比較,與cmp配合使用)32指令比較結(jié)果含義檢測(cè)的標(biāo)志位jeax=bx等于則轉(zhuǎn)移equalZF=1jneax!=bx不等于則轉(zhuǎn)移notequalZF=0jbax=bx不低于則轉(zhuǎn)移notbelowCF=0jaaxbx高于則轉(zhuǎn)移aboveCF=0且ZF=0jnaax=bx不高于則轉(zhuǎn)移notaboveCF=1或Z
21、F=1cmpax,bxmovsb、movsw指令(1)rep【描述】s:movsbloops【說(shuō)明】此指令需配合movsb、movsw使用。(2)movsb【功能】將ds:si指向的內(nèi)存單元中的字節(jié)送入es:di中,然后根據(jù)標(biāo)志寄存器DF位的值,將si和di遞增或遞減【描述】(es*16+di)=(ds*16+si)if(df=0)incsi;incdi;elseif(df=1)decsi;decdi;【使用】repmovsb33movsb、movsw指令(3)movsw【功能】將ds:si指向的內(nèi)存單元中的字節(jié)送入es:di中,然后根據(jù)標(biāo)志寄存器DF位的值,將si和di遞增或遞減【描述】(e
22、s*16+di)=(ds*16+si)if(df=0)addsi,2;adddi,2;elseif(df=1)subsi,2;subdi,2;【使用】repmovsw(4)標(biāo)志寄存器)標(biāo)志寄存器DF值的設(shè)定值的設(shè)定【cld】:將DF位置設(shè)定為0【std】:將DF位置設(shè)定為134movsb、movsw指令p(5)實(shí)例)實(shí)例35;源程序段:ds:si=DispStringmovax,csmovds,ax;源數(shù)據(jù)區(qū)段地址:dsmovsi,offsetDispString;目標(biāo)地址:es:di=0:200movax,0moves,axmovdi,200h;長(zhǎng)度:cx=DispString子函數(shù)的長(zhǎng)度m
23、ovcx,offsetDispStringEnd-offsetDispStringcld;DF為0-傳輸方向?yàn)檎?di,si遞增repmovsbp顯示緩沖區(qū):B8000HBFFFFH(32K)p共分為8頁(yè),第頁(yè)4K左右,默認(rèn)顯示第0頁(yè),即地址為B8000HB8F9FH的內(nèi)存(4000字節(jié))p顯示器:80行,25列p往指定內(nèi)存?zhèn)魉蛿?shù)據(jù),會(huì)顯示在屏幕上p一個(gè)字符占兩個(gè)字節(jié)低位:ASCII碼高位:字符屬性36p高位:字符屬性3776543210BLRGBIRGB是否閃爍字符背景色(RGB)是否高亮字符顏色(RGB)p紅底綠字:01000010Bp紅底閃爍綠字:11000010Bp紅底高亮綠字:010
24、01010Bp黑底白字:00000111Bp白底藍(lán)字:01110001Bp對(duì)于8086PC機(jī),中斷向量表指定放在內(nèi)存地址0處。從內(nèi)存0000:0000到0000:03FF的1024個(gè)單元中存放著中斷向量表。p我們可以用中斷類型碼,在中斷向量表中找到中斷處理程序的入口。然后用它設(shè)置CS和IP,使CPU執(zhí)行中斷處理程序。p中斷號(hào):N,則中斷例程的入口地址在中斷向量表中可以這樣獲取:IP=N*4,CS=N*4+238TF跟蹤標(biāo)志/TraceFlag用于控制處理器進(jìn)入單步跟蹤方式:0-禁止進(jìn)入單步中斷跟蹤,處理器正常工作1-允許進(jìn)入單步中斷跟蹤,處理器單步執(zhí)行,跟蹤指令執(zhí)行IF中斷標(biāo)志/Interru
25、ptFlag用于控制外部可屏蔽中斷是否可以被處理器響應(yīng):設(shè)置IF1,則允許可屏蔽中斷;設(shè)置IF0,則禁止可屏蔽中斷。39中斷執(zhí)行的步驟如下:【1】取得中斷類型碼N【2】pushf【3】IF=0,IF=0,禁止可屏蔽中斷,禁止單步中斷【4】pushCS【5】pushIP【6】IP=N*4,CS=N*4+2,中斷例程的跳轉(zhuǎn),設(shè)定CS,IP40assume cs:codecode segmentstart:mov ax,csmov ds,axmov si,offset do0;設(shè)置設(shè)置ds:si指向源地址指向源地址mov ax,0mov es,axmov di,200h ;設(shè)置設(shè)置es:di指向目的
26、地址指向目的地址mov cx,offset do0end - offset do0 ;設(shè)置設(shè)置cx為傳輸長(zhǎng)度為傳輸長(zhǎng)度cld ;設(shè)置傳輸方向?yàn)檎O(shè)置傳輸方向?yàn)檎齬ep movsb;設(shè)置中斷向量表設(shè)置中斷向量表 mov ax,0 mov es,ax mov word ptr es:0*4, 200h mov word ptr es:0*4+2, 0 mov ax,4c00h int 21h41 do0:jmp short do0start db overflow!do0start: mov ax, seg do0 ;獲取標(biāo)號(hào)所在段地址獲取標(biāo)號(hào)所在段地址mov ds,axmov si, offse
27、t do0 ;獲取標(biāo)號(hào)所在段的偏移地址獲取標(biāo)號(hào)所在段的偏移地址add si,2 ;去除前面的去除前面的 jmp 指令指令 ;設(shè)置設(shè)置ds:si指向字符串指向字符串mov ax,0b800h mov es,axmov di,12*160+36*2;設(shè)置設(shè)置es:di指向顯存空間的中間位置指向顯存空間的中間位置 mov cx,9;設(shè)置設(shè)置cx為字符串長(zhǎng)度為字符串長(zhǎng)度 s:mov al,si mov es:di,al inc si add di,2 loop s mov ax,4c00h int 21hdo0end:nopcode endsend startpint10h中斷例程的設(shè)置光標(biāo)位置功能。
28、movah,2;2號(hào)功能movbh,0;頁(yè)數(shù)movdh,5;第5行movdl,12;第12列int10h;10號(hào)中斷調(diào)用42p編程:在屏幕的5列12行顯示字符串“Welcometomasm!”。43assumecs:codedatasegmentdbWelcometomasm!,$dataendscodesegmentstart:mov ah,2 ;置光標(biāo)置光標(biāo)mov bh,0 ;第第0頁(yè)頁(yè)mov dh,5 ;dh中放行號(hào)中放行號(hào)mov dl,12 ;dl中放列號(hào)中放列號(hào)int 10hmov ax,datamov ds,axmov dx,0 ;ds:dx指向字符串的首地址指向字符串的首地址da
29、ta:0mov ah,9int 21hmovax,4c00hint21hcodeendsendstartininal,20h8位從20h端口讀入一個(gè)字節(jié)movdx,3f8hinal,dx16位從3f8h端口讀入一個(gè)字節(jié)outout20h,al8位向20h端口寫(xiě)入一個(gè)字節(jié)movdx,3f8houtdx,al16位向3f8h端口寫(xiě)入一個(gè)字節(jié)44moval,2;端口號(hào)為70h中的2號(hào)單元out70h,al;單元號(hào)要先寫(xiě)入到70端口inal,71h;從71端口讀取2號(hào)單元的數(shù)據(jù),賦給alCMOSCMOS端口訪問(wèn)端口訪問(wèn)首先,需要將要訪問(wèn)的端口地址,發(fā)送到70h端口,然后,再?gòu)?1h端口讀出要訪問(wèn)的數(shù)據(jù)
30、內(nèi)容。pBCD碼的存放方式:數(shù)碼:01234BCD碼:00000001001000110100數(shù)碼:56789BCD碼:01010110011110001001p比如:數(shù)值26,用BCD碼表示為:0010011045movah,0int16h;中斷16的零號(hào)功能,獲取鍵盤(pán)上的一個(gè)字符cmpal,1jefun046中斷16的 0 號(hào)功能:從鍵盤(pán)接收一個(gè)字符47AHAH功能功能入口參數(shù)入口參數(shù)出口參數(shù)出口參數(shù)3C建立文件DS:DX=ASCIIZ串地址CX=文件屬性成功:AX=文件代號(hào)錯(cuò)誤:AX=錯(cuò)誤碼3D打開(kāi)文件DS:DX=ASCIIZ串地址AL=0讀,=1寫(xiě),=3讀/寫(xiě)成功:AX=文件代號(hào)錯(cuò)誤:
31、AX=錯(cuò)誤碼3E關(guān)閉文件BX=文件代號(hào)失敗:AX=錯(cuò)誤碼3F讀文件或設(shè)備DS:DX=數(shù)據(jù)緩沖區(qū)地址BX=文件代號(hào)CX=讀取的字節(jié)數(shù)讀成功:AX=實(shí)際讀入的字節(jié)數(shù)AX=0已到文件尾讀出錯(cuò):AX=錯(cuò)誤碼40寫(xiě)文件或設(shè)備DS:DX=數(shù)據(jù)緩沖區(qū)地址BX=文件代號(hào)CX=寫(xiě)入的字節(jié)數(shù)寫(xiě)成功:AX=實(shí)際寫(xiě)入的字節(jié)數(shù)寫(xiě)出錯(cuò):AX=錯(cuò)誤碼41刪除文件DS:DX=ASCIIZ串地址成功:AX=00出錯(cuò):AX=錯(cuò)誤碼(2,5)42移動(dòng)文件指針BX=文件代號(hào),CX:DX=位移量AL=移動(dòng)方式(0:從文件頭絕對(duì)位移,1:從當(dāng)前位置相對(duì)移動(dòng),2:從文件尾絕對(duì)位移)成功:DX:AX=新文件指針位置出錯(cuò):AX=錯(cuò)誤碼assu
32、mecs:codeseg,ds:datas,ss:stkstksegmentstackdb128dup(0)stkendsdatassegmentstrdatadb1234567890qwertyuiopasdfghjklzxcvbnm!#%&*()_+=-/.,MZNXBCVALSKDJFHGYTURIEOWPQtgtdatadb256dup($)filename dbf:asm.dat,0datasends48codesegsegmentstart:;設(shè)置棧段movax,stkmovss,axmovsp,128callCreateFilecallWriteFilecallReadF
33、ile49movax,segtgtdatamovds,axmovsi,offsettgtdatamovbl,01000001bmovdh,5movdl,8callDisplayStringInDefinePosmovax,4c00hint21h;子函數(shù)創(chuàng)建文件CreateFile:pushaxpushbxpushcxpushdxpushds;創(chuàng)建文件movcx,0 ;文件屬性movdx,segfilenamemovds,dx50movdx,offsetfilenamemovah,3ch;3c號(hào)功能,創(chuàng)建文件int21h;返回:ax-文件代號(hào);關(guān)閉文件;movbx,ax;文件代號(hào);movah,3eh;關(guān)閉;int21hpopdspopdxpopcxpopbxpopaxret;子函數(shù)寫(xiě)入字符串到文件中WriteFile:pushaxpushbxpushcxpushdxpushds;打開(kāi)文件movdx,segfilenamemovds,dxmovdx,offsetfilenamemovah,3dh;4d號(hào)功能,打開(kāi)文件moval,3;0-讀,1-寫(xiě),3-讀/寫(xiě)int21h;ax-返回的文
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年全球及中國(guó)乘用車(chē)用液力變矩器行業(yè)頭部企業(yè)市場(chǎng)占有率及排名調(diào)研報(bào)告
- 2025年全球及中國(guó)工業(yè)機(jī)器人減速馬達(dá)行業(yè)頭部企業(yè)市場(chǎng)占有率及排名調(diào)研報(bào)告
- 2025-2030全球智能體測(cè)儀行業(yè)調(diào)研及趨勢(shì)分析報(bào)告
- 2025年全球及中國(guó)1P高功率電芯行業(yè)頭部企業(yè)市場(chǎng)占有率及排名調(diào)研報(bào)告
- 2025代理進(jìn)口協(xié)議合同書(shū)模板
- 2025合同模板組織領(lǐng)導(dǎo)和職責(zé)范圍范本
- 2025建設(shè)工程施工合同(哈爾濱銀行)副本
- SAP系統(tǒng)實(shí)施服務(wù)合同V2.0
- 2025中外來(lái)件裝配版合同2
- 環(huán)保工程項(xiàng)目咨詢與設(shè)計(jì)合同
- 2024-2025學(xué)年人教版五年級(jí)(上)英語(yǔ)寒假作業(yè)(一)
- 開(kāi)題報(bào)告-鑄牢中華民族共同體意識(shí)的學(xué)校教育研究
- 浙江省五校鎮(zhèn)海中學(xué)2025屆高考考前模擬數(shù)學(xué)試題含解析
- 公司2025年會(huì)暨員工團(tuán)隊(duì)頒獎(jiǎng)盛典攜手同行共創(chuàng)未來(lái)模板
- 數(shù) 學(xué)2024-2025學(xué)年人教版七年級(jí)數(shù)學(xué)上冊(cè)有理數(shù)混合運(yùn)算100題
- 新滬科版八年級(jí)物理第三章光的世界各個(gè)章節(jié)測(cè)試試題(含答案)
- 人教版五年級(jí)上冊(cè)四則混合運(yùn)算300道及答案
- 非遺國(guó)粹川劇變臉的傳統(tǒng)文化知識(shí)了解原創(chuàng)模板
- 中國(guó)智慧物流發(fā)展報(bào)告
- 焊接加工成本算表
- 2024年四川省成都市成華區(qū)中考二診物理試題
評(píng)論
0/150
提交評(píng)論