2023年微機(jī)原理課程上機(jī)實驗指導(dǎo)書_第1頁
2023年微機(jī)原理課程上機(jī)實驗指導(dǎo)書_第2頁
2023年微機(jī)原理課程上機(jī)實驗指導(dǎo)書_第3頁
2023年微機(jī)原理課程上機(jī)實驗指導(dǎo)書_第4頁
2023年微機(jī)原理課程上機(jī)實驗指導(dǎo)書_第5頁
已閱讀5頁,還剩8頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

第一局部匯編語言程序設(shè)計實驗實驗一匯編語言編程根底匯編語言是一種面向機(jī)器的“低級〞語言,是計算機(jī)能夠提供應(yīng)用戶的最快而最有效的語言,也是能夠利用計算機(jī)所有硬件特性并能直接控制硬件的唯一語言。要真正理解計算機(jī)的工作過程,理解計算機(jī)程序的執(zhí)行過程,就必須學(xué)習(xí)匯編語言。也正是因為如此,匯編語言程序設(shè)計是計算機(jī)專業(yè)和電子,自動控制等相關(guān)專業(yè)的重要課程。但是,對于剛開始學(xué)習(xí)匯編語言的學(xué)生而言,匯編語言的一些命令非常抽象,很難理解,往往學(xué)習(xí)了很長時間也編不出滿意的程序,更別說自如的應(yīng)用,以致我們認(rèn)為匯編語言很難掌握,影響我們學(xué)習(xí)匯編語言的興趣。實際上,為了掌握好匯編語言,我們可以從熟悉、使用DEBUG調(diào)試工具開始,先來分析和讀懂一些與硬件相關(guān)的小程序,這也是我們實驗一的目的。1.1匯編語言程序的上機(jī)步驟以以下源程序為例,先學(xué)習(xí)匯編語言的上機(jī)步驟。文件名為1.asm:DATA SEGMENTNUM1 DB 35,35HNUM2 DW35,35HNUM3 DB 4DUP(34,3DUP(34H))NUM4 DB'34AB' NUM5 DW'34','AB'DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATASTART:MOVAX,DATAMOVDS,AXMOVBX,OFFSETNUM1MOVAL,[BX]MOVBX,OFFSETNUM5MOVAX,[BX]MOVAH,4CHINT21HCODEENDSENDSTART一.上機(jī)步驟匯編語言程序MASM軟件由EDIT編輯器,匯編MASM.EXE程序,連接LINK.EXE程序以及DUEBUG.EXE調(diào)試程序四個局部組成。匯編語言編制完成后,在計算機(jī)上的操作過程就分為四個階段。1.編輯EDIT首先輸入源程序,有兩種方法:〔1〕在記事本里錄入,特別注意的是:在保存時文件格式必須選擇所有文件,文件后綴名為.ASM,即保存時文件名為XXX.asm。(2)雙擊MASM軟件中的編輯軟件EDIT文件框,在EDIT下輸入源程序。用ALT+F鍵翻開file菜單,用其中的save功能鍵將文件存盤。特別注意的是:匯編語言源程序文件的后綴必須為.asm,即保存時文件名為XXX.ASM。圖1-1EDIT編輯界面2.用匯編程序MASM.Exe對源程序.ASM文件匯編,生成目標(biāo)文件.OBJ匯編階段的任務(wù)是把匯編語言源程序翻譯成機(jī)器代碼〔稱為目標(biāo)〕,產(chǎn)生二進(jìn)制格式的目標(biāo)文件XXX.OBJ〔名字與源程序名相同,只是后綴名不同〕,如果源程序有語法錯誤,那么匯編過程結(jié)束后,MASM.EXE匯編程序會指出源程序中錯誤的行號和錯誤的原因,我們可以再用編輯程序EDIT來修改源程序中的錯誤,匯編無錯后,方可得到正確的.OBJ目標(biāo)文件,才能進(jìn)行下一部的連接LINK。雙擊MASM軟件中的MASM.Exe文件框,在命令行后鍵入源程序名XXX.asm,〔如果源程序與MASM軟件在同一路徑下,可以只鍵入文件名,而不要后綴〕,如以下界面:圖1-2MASM編譯1.asm文件無錯誤時的界面3.連接LINK.EXE由于匯編所得到的目標(biāo)代碼的存放地址并不是可執(zhí)行的絕對地址,而是浮動的相對地址,匯編產(chǎn)生的目標(biāo)文件.OBJ還不能在計算機(jī)上運行,需要用連接程序LINK.EXE把目標(biāo)文件.OBJ文件轉(zhuǎn)換為可執(zhí)行文件XXX.EXE文件.雙擊MASM軟件中的LINK.Exe文件框,在命令行后鍵入目標(biāo)文件名XXX.OBJ〔如果源程序,目標(biāo)文件與MASM軟件在同一路徑下,可以只鍵入文件名,而不要后綴〕,如以下界面:圖1-3LINK連接1.OBJ文件界面如果連接沒有錯誤,就會產(chǎn)生一個XXX.EXE的可執(zhí)行文件,如果.OBJ文件有錯誤,連接時會指出錯誤的原因。對于無堆棧警告〔warning:nostacksegment〕的提示,可以不予理睬,它是由于我們在源程序中沒有定義堆棧段的原因,對于比擬小的程源序和不需要再特別定義堆棧段的源程序,我們可以不定義堆棧段,它并不影響程序的正確執(zhí)行。反而,如果連接時有其他的錯誤,那么要檢查并修改源程序XXX.ASM,然后再重新匯編MASM.EXE,連接link.exe的步驟,直到得到正確的XXX.EXE文件為止。4.運行和調(diào)試DEBUG.exe運行可執(zhí)行文件,即雙擊XXX.EXE文件框即可,或在DOS下運行此程序,E:\XXX.EXE。1.2熟悉、使用DEBUG調(diào)試工具以下重點介紹一些調(diào)試命令:以1.asm源程序為例:圖1-4運行和調(diào)試DEBUG界面1)N命令:用于指定進(jìn)行讀寫的磁盤上的文件。命令格式:N[path][filename]如:-n1.exe指定要裝載(Load)或?qū)懭氪疟P(Write)的文件名。2〕L命令:將指定的文件裝入內(nèi)存中命令格式:L回車鍵-l回車鍵3〕反匯編命令U就是將存放在制定范圍內(nèi)的目標(biāo)代碼,反匯編成8086/8088的匯編指令格式,并按目標(biāo)代碼首地址,目標(biāo)代碼和對應(yīng)的源指令的格式,在屏幕上顯示出來。把目標(biāo)代碼反匯編后,用戶可以方便地知道,程序從什么地址開始執(zhí)行,執(zhí)行的是哪一條指令,執(zhí)行到什么地址為止。命令格式:U[地址范圍]-u13FE:0000B8FC13MOVAX,13FC13FE:00038ED8MOVDS,AX13FE:0005BB0000MOVBX,000013FE:00088A07MOVAL,[BX]13FE:000ABB1A00MOVBX,001A13FE:000D8B07MOVAX,[BX]13FE:000FB8004CMOVAX,4C0013FE:0012CD21INT2113FE:00140000ADD[BX+SI],AL13FE:00160000ADD[BX+SI],AL13FE:00180000ADD[BX+SI],AL13FE:001A0000ADD[BX+SI],AL13FE:001C0000ADD[BX+SI],AL13FE:001E0000ADD[BX+SI],AL13FE為CS即代碼段的段基地址,0000,0003,0005是偏移地址,B8FC13等是機(jī)器碼(由代碼段中的二進(jìn)制機(jī)器指令反匯編得到)也就是程序在機(jī)器中的代碼,MOVAX,13FC是助記符,幫助記憶機(jī)器中的指令?!苍粗噶睢?〕運行命令:T命令:單步運行命令以1.EXE調(diào)試為例,單步運行二次13FE:0000B8FC13MOVAX,13FC13FE:00038ED8MOVDS,AX13FE:0005BB0000MOVBX,000013FE:00088A07MOVAL,[BX]13FE:000ABB1A00MOVBX,001A13FE:000D8B07MOVAX,[BX]13FE:000FB8004CMOVAX,4C0013FE:0012CD21INT2113FE:00140000ADD[BX+SI],AL13FE:00160000ADD[BX+SI],AL13FE:00180000ADD[BX+SI],AL13FE:001A0000ADD[BX+SI],AL13FE:001C0000ADD[BX+SI],AL13FE:001E0000ADD[BX+SI],AL-tAX=13FCBX=0000CX=0034DX=0000SP=0000BP=0000SI=0000DI=0000DS=13ECES=13ECSS=13FCCS=13FEIP=0003NVUPEIPLNZNAPONC13FE:00038ED8MOVDS,AX-tAX=13FCBX=0000CX=0034DX=0000SP=0000BP=0000SI=0000DI=0000DS=13FCES=13ECSS=13FCCS=13FEIP=0005NVUPEIPLNZNAPONC13FE:0005BB0000MOVBX,0000可以看到機(jī)器隨機(jī)分配給該程序的數(shù)據(jù)段的段基地址被AX賦予給DX。該程序的代碼段的段基地址為13FE,數(shù)據(jù)段的段基地址為13FC。單步執(zhí)行命令T執(zhí)行一條命令,并顯示CPU中存放器中的內(nèi)容和要執(zhí)行的下一條命令,大家可以看到AX,BX,CX等存放器的內(nèi)容,T命令可以跟蹤程序中的每一條指令的執(zhí)行情況.P命令:也是單步運行命令。但是P命令對于每一條指令語句都是一次執(zhí)行完成.比方CALL、LOOP和DOS功能調(diào)用的INTn等指令語句T命令能在程序的執(zhí)行中,跟隨IP指示的地址,跟蹤指令的執(zhí)行,而P命令那么是按指令語句,續(xù)進(jìn)執(zhí)行的.在調(diào)試中,用戶可根據(jù)需要,選擇不同的運行程序命令,以適應(yīng)調(diào)試的要求。5〕G(Go)命令:連續(xù)執(zhí)行內(nèi)存中的程序,還可以在程序中設(shè)置斷點,逐段地執(zhí)行程序,以便一段一段地堆程序進(jìn)行調(diào)試。命令格式:G[=address[address[address…]]其中第一個參數(shù)=address,規(guī)定了執(zhí)行的起始地址,即以CS的內(nèi)容為段地址,以等號后面的地址為偏移地址,在輸入時,等號是不可缺少的,假設(shè)不輸入起始地址,那么以CS:IP為起始地址,后面的地址參數(shù)是斷點地址。如果在G命令中沒有設(shè)置斷點,或設(shè)有斷點但程序在執(zhí)行中未能到達(dá)斷點處,這時程序?qū)⒁恢边\行,直至結(jié)束。在結(jié)束時顯示提示信息“Programterminatednormally"。在G命令中可以設(shè)置斷點,格式為G=0000000D13FE:000D8B07MOVAX,[BX]13FE:000FB8004CMOVAX,4C0013FE:0012CD21INT21AX=1323BX=0000CX=0034DX=0000SP=0000BP=0000SI=0000DI=0000DS=13FCES=13ECSS=13FCCS=13FEIP=000ANVUPEIPLNZNAPONC13FE:000ABB1A00MOVBX,001A-可以看到AL中的數(shù)為23再設(shè)置一次斷點G=0000000F-g=0000000fAX=3334BX=001ACX=0034DX=0000SP=0000BP=0000SI=0000DI=0000DS=13FCES=13ECSS=13FCCS=13FEIP=000FNVUPEIPLNZNAPONC13FE:000FB8004CMOVAX,4C00-可以看到AX=33346〕D(Dump)命令:顯示指定范圍(range)內(nèi)的內(nèi)存單元的內(nèi)容。其中,參數(shù)范圍(range)有以下兩種表示方式:a)第一種表示方式:AddrlAddr2這里Addrl和Addr2分別代表待顯示內(nèi)存單元的首地址和末地址。2)第二種表示方式:AddrlLValue這里表示顯示從地址Addrl開始、長度為Value個字節(jié)的內(nèi)存單元。例如下面兩條命令是等效的。一D2002FF—D200L100顯示內(nèi)容分為三局部。最左邊是本行內(nèi)存單元首地址(XXXX:XXXX),第二局部是以十六進(jìn)制形式顯示的相繼各字節(jié)單元的內(nèi)容,前后八個單元間用符號“—〞隔開。第三局部是本行顯示的十六進(jìn)制值所對應(yīng)的ASCII字符。如果某十六進(jìn)制值的ASCII字符是不可顯示的,便以“.〞代替。注意,每行只顯示16個單元的內(nèi)容,而且每行的首地址都是16的整倍數(shù),或者說,每行的首地址都是以16為邊界的。對于D命令,又有兩種簡化格式,如:一D200顯示從DS:0200單元開始的80H個單元的內(nèi)容,即在只給定第一個地址的命令中,約定隱含L80參數(shù)。一D除第一次從DS:100開始,顯示80H個單元的內(nèi)容外,以后都繼前次地址之后,依次顯示80H個單元的內(nèi)容。-d13FE:0000B8FC138ED8BB0000-8A07BB1A008B07B8................13FE:0010004CCD2100000000-0000000000000000.L.!............13FE:00200000000000000000-0000000000000000................13FE:00300000000000000000-0000000000000000................13FE:00400000000000000000-0000000000000000................13FE:00500000000000000000-0000000000000000................13FE:00600000000000000000-0000000000000000................13FE:00700000000000000000-0000000000000000................我們從內(nèi)存單元偏移地址[0000]單元開始,-d013FC:00002335230035002234-3434223434342234#5#.5."444"444"413FC:00103434223434343334-414234334241000044"44434AB43BA..13FC:0020B8FC138ED8BB0000-8A07BB1A008B07B8................13FC:0030004CCD2100000000-0000000000000000.L.!............13FC:00400000000000000000-0000000000000000................13FC:00500000000000000000-0000000000000000................13FC:00600000000000000000-0000000000000000................13FC:00700000000000000000-0000000000000000................-可以看到從偏移地址[0000]單元開始顯示內(nèi)存單元的內(nèi)容。7〕R(Register)命令格式:R[register_name]功能:顯示CPU中的一個或所有16位存放器(包括標(biāo)志存放器)的內(nèi)容。對于標(biāo)志存放器來說,顯示的是各標(biāo)志位的狀態(tài)(置位/復(fù)位)。-rAX=3334BX=001ACX=0034DX=0000SP=0000BP=0000SI=0000DI=0000DS=13FCES=13ECSS=13FCCS=13FEIP=000FNVUPEIPLNZNAPONC13FE:000FB8004CMOVAX,4C00-命令Rregister_name不但能顯示出該存放器的當(dāng)前值,而且還顯示提示符“:〞。這時只要輸入新的值,便可更新該存放器的內(nèi)容。假設(shè)只按回車鍵,那么存放器的值將保持不變。例如命令:-rAX=3334BX=001ACX=0034DX=0000SP=0000BP=0000SI=0000DI=0000DS=13FCES=13ECSS=13FCCS=13FEIP=000FNVUPEIPLNZNAPONC13FE:000FB8004CMOVAX,4C00-raxAX3334:6677-rAX=6677BX=001ACX=0034DX=0000SP=0000BP=0000SI=0000DI=0000DS=13FCES=13ECSS=13FCCS=13FEIP=000FNVUPEIPLNZNAPONC13FE:000FB8004CMOVAX,4C00RDS,RCS命令可以修改當(dāng)前段的地址。同學(xué)們下來可以試以下。8〕-F是標(biāo)志存放器的名字。命令RF將顯示各狀態(tài)位的當(dāng)前狀態(tài),其后顯示提示符“一〞,這時只要輸入合法的標(biāo)志(對順序無要求),便可修改標(biāo)志位狀態(tài),假設(shè)只按回車鍵,那么標(biāo)志位的狀態(tài)將保持不變。如命令:一RFNVUPDINGNZACPENC—PLEICY顯示了F中的各狀態(tài)位,其后又通過輸入PLEICY,修改了對應(yīng)的標(biāo)志位。-rfNVUPEIPLNZNAPONC-pleicy-rfNVUPEIPLNZNAPOCY-9〕E(Enter)命令格式:Eaddress[1ist]功能:用鍵入的字節(jié)(Byte)值或替換值(字節(jié))列表修改指定內(nèi)存單元的內(nèi)容參數(shù),address表示待修改的內(nèi)存單元的首地址,list是一個選擇項,它表示替換值(字節(jié))列表。1)Eaddress在該命令格式中,沒有給出替換值。DEBUG自動顯示起始地址和它的內(nèi)容,并等待用戶鍵入替換值。用戶這時可選擇按空格鍵(Space)、橫杠鍵(一)或回車鍵(Enter),以實現(xiàn)不同的操作:按回車鍵(Enter)——結(jié)束E命令。按空格鍵(Space)——自動顯示下一個內(nèi)存單元的內(nèi)容,并等待鍵人替換值。按照這種方式,一直進(jìn)行下去,直到按回車鍵(Enter),才結(jié)束E命令。按橫杠鍵(一)一一自動顯示前一個內(nèi)存單元的內(nèi)容,并等待鍵人替換值。按照這種方式,一直進(jìn)行下去,直到按回車鍵,才結(jié)束E命令。在上述兩種修改方式中,如果在未鍵入替換值的情況下就按回車鍵,這時該單元的內(nèi)容保持不變并結(jié)束E命令;如果只按空格鍵或橫杠鍵,不鍵入替換值,那么只顯示內(nèi)存單元的內(nèi)容。-e^Error-e013FC:000023.35.23.00.35.00.22.34.13FC:000834.34.22.34.34.34.22.34.13FC:001034.34.22.34.34.34.33.34.13FC:001841.42.34.33.42.41.00.00.13FC:0020B8.FC.13.8E.D8.BB.00.00.13FC:00288A.-e013FC:000023.35.6723.3400.35.00.22.34.13FC:000834.34.22.-e013FC:000023.67.34.00.35.00.22.34.13FC:000834.34.22.34.34.34.22.34.13FC:001034.34.22.34.34.34.33.34.13FC:001841.42.34.33.42.41.00.00..--e0003顯示從[0003]開始的內(nèi)容13FC:000300.35.00.22.34.13FC:000834.34.22.34.34.34.22.34.13FC:001034.34.22.34.34.34.10〕F(Fill)命令格式:Frangelist功能:用list所表示的字節(jié)值對指定范圍(range)的內(nèi)存單元進(jìn)行填充在命令中,假設(shè)指定范圍的內(nèi)存單元數(shù)多于list中的填充字節(jié)數(shù),那么F命令將反復(fù)使用填充字節(jié),直到填滿指定范圍中的每個單元;假設(shè)內(nèi)存單元數(shù)少于填充字節(jié)數(shù),那么F命令將只使用list中的前面假設(shè)干個字節(jié)值,填充各個內(nèi)存單元。-fds:0003-e013FC:000023.67.34.06.06.06.06.06.13FC:000806.06.06.06.06.06.06.06.13FC:001006.06.06.34.34.34.33.34.13FC:001841.42.34.33.42.41.00.11〕A(Assemble)命令格式:A[address]功能:接收從鍵盤鍵入的8086/8088指令,將其匯編成目標(biāo)代碼,并存放在內(nèi)存單元中。參數(shù)address是指定存放目標(biāo)代碼的起始地址,其后指令的起始地址將由系統(tǒng)自動依次安排。一ACS:100;從CS:100H開始,編寫程序1409:001C0000ADD[BX+SI],AL1409:001E0000ADD[BX+SI],AL-a1409:0000-acs:000a1409:000Amovbx,00091409:000D這時我們再反匯編一下,可以看到,程序發(fā)生了變化。-u01409:0000B80714MOVAX,14071409:00038ED8MOVDS,AX1409:0005BB0000MOVBX,00001409:00088A07MOVAL,[BX]1409:000ABB0900MOVBX,00091409:000D8B07MOVAX,[BX]1409:000FB8004CMOVAX,4C001409:0012CD21INT21A命令只是在DEBUG下,匯編程序,不能存盤,臨時修改看結(jié)果。12〕Q命令:結(jié)束DEBUG。至此,通過調(diào)試?yán)绯绦?,學(xué)習(xí)了DEBUG調(diào)試命令,并了解了8088匯編語言的段結(jié)構(gòu)、常用的指令與偽指令、存儲空間的分配,調(diào)試程序的方法,但這還只是簡單的程序,調(diào)試復(fù)雜的程序比此例要復(fù)雜的多,還需要我們在學(xué)習(xí)過程中,勤動手,多動腦,加強練習(xí),在實踐中進(jìn)步。1.3匯編語言程序上機(jī)操作和調(diào)試訓(xùn)練一。上機(jī)目的:了解并逐步熟悉匯編語言的編輯方法及特點.復(fù)習(xí)8088匯編語言的段結(jié)構(gòu)、常用的指令與偽指令、存儲空間的分配等。掌握匯編語言的編輯、匯編及連接的過程。了解并逐步掌握運用DEBUG進(jìn)行調(diào)試匯編語言程序。二。實驗內(nèi)容:運用8086匯編語言,編輯多字節(jié)非壓縮型BCD數(shù)除法的簡單程序,文件名取為*.ASM。運用MASM﹒EXE文件進(jìn)行匯編,修改程序中的各種語法錯誤,直至正確,形成*.OBJ文件。運用LINK.EXE文件進(jìn)行連接,形成*.EXE文件。仔細(xì)閱讀和體會DEBUG調(diào)試方法,掌握各種命令的使用方法。運用DEBUG。EXE文件進(jìn)行調(diào)試,使用單步執(zhí)行命令—T兩次,觀察存放器中內(nèi)容的變化,使用觀察存儲器數(shù)據(jù)段命令—D,觀察存儲器數(shù)據(jù)段內(nèi)數(shù)值。再使用連續(xù)執(zhí)行命令—G,執(zhí)行程序,檢查結(jié)果是否正確,假設(shè)不正確可使用DEBUG的設(shè)置斷點,單步執(zhí)行等功能發(fā)現(xiàn)錯誤所在并加以改正。程序清單:多字節(jié)非壓縮型BCD數(shù)除法〔96875/5=19375〕DATA SEGMENTA DB 9,6,8,7,5B DB 5C DB 5DUP〔0〕N EQU 5DATA ENDSCODE SEGMENT ASSUME CS:CODE;DS:DATA;ES:DATA,START MOV AX,DATA MOV DS,AX MOV ES,AX CLD LEA SI,A LEB DI,C MOV CX,N MOV AH,0LP1: LODSB AAD DIV B STOSBLOOP LP1 MOV CX,N LEA DI,CLP2: MOV DL,[DI] MOV AH,2開始 INT 21H DEC DI設(shè)置被除數(shù)、商的地址指針 LOOP LP2設(shè)置單位除法次數(shù)計數(shù)器 MOV AH,4CH INT 21H取被除數(shù)一位作十進(jìn)制調(diào)整CODE: ENDS END START作字節(jié)除法、存商N被除數(shù)各位已除完?Y顯示運算結(jié)果結(jié)束三。實驗報告要求:1〕寫出本次試驗報告的實驗?zāi)康?,?nèi)容,正確的程序清單,適當(dāng)?shù)闹形淖⑨屢约俺绦蚩驁D。2〕指出本實驗給出的源程序錯誤,并加以改正。3〕給出實驗結(jié)果。4〕調(diào)試的心得體會。實驗二設(shè)計匯編語言程序要設(shè)計匯編語言程序,我們先復(fù)習(xí)一些根本的指令。1.加法指令〔1〕ADD---加法指令格式:ADD目的操作數(shù),源操作數(shù)功能:目的操作數(shù)目的操作數(shù)+源操作數(shù)〔2〕ADC---帶進(jìn)位的加法指令格式:ADC目的操作數(shù),源操作數(shù)功能:目的操作數(shù)目的操作數(shù)+源操作數(shù)+CF〔CF=1,有進(jìn)位〕〔3〕INC---增量指令格式:INC目的操作數(shù)功能:目的操作數(shù)目的操作數(shù)+12.減法指令〔1〕SUB——減法指令格式:SUB目的操作數(shù),源操作數(shù)功能:目的操作數(shù)目的操作數(shù)-源操作數(shù)〔2〕SBB——帶借位的減法指令格式:SBB目的操作數(shù),源操作數(shù)功能:目的操作數(shù)目的操作數(shù)-源操作數(shù)-CF〔3〕DEC——減量指令格式:DEC目的操作數(shù)功能:目的操作數(shù)目的操作數(shù)-1〔4〕NEG求補指令格式:NEG目的操作數(shù)功能:目的操作數(shù)0-目的操作數(shù)3.乘法和除法指令〔1〕MUL——無符號數(shù)乘法格式:MUL源操作數(shù)功能:8位源操作數(shù)時:AX〔AL〕×源操作數(shù)16位源操作數(shù)時:DX,AX〔AX〕×源操作數(shù)32位源操作數(shù)時:EDX,EAX〔EAX〕×源操作數(shù)〔2〕IMUL有符號數(shù)乘法格式1:IMUL源操作數(shù)功能:8位源操作數(shù)時:AX〔AL〕×源操作數(shù)16位源操作數(shù)時:DX,AX〔AX〕×源操作數(shù)32位源操作數(shù)時:EDX,EAX〔EAX〕×源操作數(shù)格式2:IMUL目的操作數(shù),源操作數(shù)功能:目的操作數(shù)目的操作數(shù)×源操作數(shù)格式3:IMUL目的操作數(shù),源操作數(shù)1,源操作數(shù)2功能:目的操作數(shù)源操作數(shù)1×源操作數(shù)2〔3〕DIV——無符號除法格式:DIV源操作數(shù)功能:8位源操作數(shù)時:〔AX〕÷源操作數(shù),AL商,AH余數(shù)16位源操作數(shù)時:〔DX,AX〕÷源操作數(shù),AX商,DX余數(shù)32位源操作數(shù)時:〔EDX,EAX〕÷源操作數(shù),EAX商,EDX余數(shù)〔4〕IDIV——有符號除法格式:IDIV源操作數(shù)功能:8位源操作數(shù)時:〔AX〕÷源操作數(shù),AL商,AH余數(shù)16位源操作數(shù)時:〔DX,AX〕÷源操作數(shù),AX商,DX余數(shù)32位源操作數(shù)時:〔EDX,EAX〕÷源操作數(shù),EAX商,EDX余數(shù)實驗2.1簡單程序設(shè)計實驗?zāi)康睦斫飧鞣N指令的功能。進(jìn)一步學(xué)習(xí)程序的調(diào)試。使用以上指令,我們可以進(jìn)行一些表達(dá)式的計算。練習(xí)1.實驗題目:編程計算以下表達(dá)式:A=90,B=-70,C=5,Y均為有符號數(shù),計算Y=2×〔A+B〕+(A×C)÷5要編寫一些稍微復(fù)雜的程序,我們會遇到一段程序被反復(fù)執(zhí)行,這樣,我們會用到LOOP指令。使用該指令時,需在CX中裝入循環(huán)次數(shù)。練習(xí)2.碼轉(zhuǎn)換程序設(shè)計編制程序,把十進(jìn)制數(shù)15786轉(zhuǎn)化成二進(jìn)制數(shù)。提示:15786=1×10×10×10×10+5×103+7×102+8×10+6循環(huán)CX=5實驗要求:1.繪出練習(xí)1和2的程序流程圖。2編寫完整的程序,上機(jī)調(diào)試。3使用DEBUG調(diào)試命令,查看中間結(jié)果,并查看最終結(jié)果。大多數(shù)的程序,都有人機(jī)對話的過程。也就是說,我們從鍵盤上輸入程序所需要的控制信息和數(shù)據(jù),并把程序的運行結(jié)果和運行狀態(tài)顯示出來。這就涉及到字符及字符串的輸入輸出。1.字符的輸出〔1〕輸出單個字符DL待輸出字符的ASCII碼AH=02INT21H輸入的字符放在AL中,并顯示在屏幕上。(2)輸出一個字符串DS:DX待輸出字符串的首地址AH=09HInt21H2.字符的輸入〔1〕輸入單個字符AH=01INT21H輸入的字符放在AL中〔2〕AH=07INT21H輸入的字符放在AL中,不會顯示在屏幕上〔無回顯〕。3.字符串的輸入DS:DX輸入緩沖區(qū)首地址AH=0AHINT21H一行字符以回車鍵作為結(jié)束的標(biāo)志。假設(shè):一行最多不超過250個字符〔不含回車鍵〕,輸入緩沖區(qū)格式如下:BUFFERDB250,?,250DUP(?)緩沖區(qū)由3個局部組成:第一字節(jié):輸入字符存放區(qū)的大小。第二字節(jié):初始狀態(tài)為空。從效勞程序返回后,由效勞程序填入實際的字符個數(shù),不包括回車。第三字節(jié)之后:輸入字符存放區(qū),存放輸入的字符和回車。練習(xí)3.編制程序,從鍵盤輸入最多5個數(shù),求他們的和,存入SUM。實驗要求:1.繪出程序流程圖。2編寫完整的程序,上機(jī)調(diào)試。3要求編制的程序最終求和的結(jié)果要顯示在屏幕上。4.寫實驗報告中程序要加中文注釋。實驗2.2匯編語言程序設(shè)計----循環(huán)結(jié)構(gòu)程序幾乎所有的應(yīng)用程序都離不開循環(huán)結(jié)構(gòu)。循環(huán)結(jié)構(gòu)一般有以下4個局部組成。1初始化局部:為循環(huán)做準(zhǔn)備,如累加器清零,設(shè)置地址指針和計數(shù)器的初始值。2.工作局部:實現(xiàn)循環(huán)的根本操作,也就是需要重復(fù)執(zhí)行的一段程序。3.修改局部:修改指針,計數(shù)器的值,為下一個循環(huán)做準(zhǔn)備。4.控制局部:判斷循環(huán)條件,結(jié)束循環(huán)或繼續(xù)循環(huán)。練習(xí)1.用“冒泡“法對一組數(shù)300,250,280,240,260,按從小到大的順序排列。提示:用冒泡的方法對一組數(shù)據(jù)元素排序,它的根本方法是:將相鄰的兩個元素通過比擬進(jìn)行排序,通過屢次,多遍的鄰元素排序,實現(xiàn)整個一組數(shù)的排序。對于5〔N〕個元素,整個排序通過4遍〔=N-1〕鄰元素排序完成。每一遍的排序由假設(shè)干次鄰元素的排序組成。4遍排序中,鄰元素的排序依次為4,3,2,1遍。完成第一遍排序后,最大數(shù)沉底,已經(jīng)到達(dá)它應(yīng)占據(jù)的位置,不需要參加下一遍的排序。外循環(huán)的次數(shù)為CX=4次(N-1),內(nèi)循環(huán)的次數(shù)為4,3,2,1(DECCX)排序遍數(shù)本遍排序前第一次排序后第二次排序后第三次排序

溫馨提示

  • 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論