




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、實(shí)驗(yàn)一 匯編語言上機(jī)過程一、上機(jī)前的軟件準(zhǔn)備:MS-DOS操作系統(tǒng)(如:MSDOS6.22 , MSDOS7.0 等)文本編輯器 (如:EDIT.COM , TURBO.EXE , TC.EXE , C.EXE 等)匯編程序 (如:MASM.EXE , ASM.EXE,TASM.EXE 等)連接程序 (如:LINK.EXE 等)調(diào)試程序 (如:DEBUG.EXE 等)二、匯編程序建立過程: 通過 a.建立匯編源程序b.編譯為目標(biāo)文件d.連接為可執(zhí)行文件 c.不通過,重新修改(語句錯(cuò)誤) f.不正確,用調(diào)試工具調(diào)試,重新修改(邏輯錯(cuò)誤) e運(yùn)行 正確 g.完成三、現(xiàn)在對(duì)(二)的每一個(gè)標(biāo)有字母的過
2、程(PROCEDURE)進(jìn)行詳細(xì)說明PROCEDURE a:建立匯編源程序(即:建立 文件名.asm)這個(gè)過程就相當(dāng)于我們?cè)诩埳暇帉懺闯绦虼a一樣,只不過是將紙變?yōu)榱擞?jì)算機(jī),這個(gè)過程也稱源代碼錄入。將源程序代碼錄入計(jì)算機(jī)的方法很多,下面將介紹具體方法。1.通過MD-DOS自帶的EDIT.EXE文本編輯器進(jìn)行輸入,在DOS提示符下鍵入:EDIT回車,這時(shí)如果你系統(tǒng)內(nèi)可調(diào)用時(shí),EDIT的操作畫面便會(huì)出現(xiàn)在屏幕上,你就可在提示下進(jìn)行錄入了,當(dāng)錄入完畢后,選擇存盤并給你輸入的文件起一個(gè)文件名,形式:filename.asm ;(其中filename為你起的文件名,由1-8個(gè)字符組成),asm 是為匯編
3、程序識(shí)別而必須加上去的,不可更改。存盤后在DOS下可用DOS命令DIR來查看,如果看到了所存的文件存在,就可以進(jìn)行進(jìn)程b。2.如果你的系統(tǒng)中沒有EDIT,也可用你所熟悉的文本編輯器進(jìn)行錄入、編輯,如可用c語言和pascal語言的文本編輯器來編輯,最后將文件存為filename.asm的形式即可。PROCEDURE b:編譯目標(biāo)文件(即:編譯為.obj .lst .crf文件)這個(gè)過程計(jì)算機(jī)將把你編的正確的源代碼編譯為機(jī)器語言、程序清單及交叉引用表的目標(biāo)文件。如果此時(shí)你的程序有語句錯(cuò)誤,系統(tǒng)將報(bào)錯(cuò),并指出在第幾行,什么類型的錯(cuò)誤,你可根據(jù)提示去逐一修改?,F(xiàn)介紹具體過程:在DOS提示符下鍵入MAS
4、M filename回車(注:你系統(tǒng)內(nèi)的匯編程序?yàn)镸ASM.EXE,如果你系統(tǒng)的匯編程序?yàn)锳SM.EXE時(shí),便將命令變?yōu)锳SM filename回車。其中filename為你剛才在PROCEDURE a 中建立的文件名)這時(shí)匯編程序的輸出文件可以有三個(gè)(分別:.obj .lst .crf),便會(huì)出現(xiàn)三次提問,在這可以一路回車即可。下面顯示的信息是源程序中的錯(cuò)誤個(gè)數(shù),如果為0則表示順利通過,就可進(jìn)行進(jìn)程c。但如果不為0就說明有錯(cuò)誤,并指出錯(cuò)誤出現(xiàn)的行,可依據(jù)這個(gè)提示去進(jìn)行修改。但如果錯(cuò)誤太多還未等看清就顯示過去了,可用如下命令形將錯(cuò)誤信息存于一個(gè)你指定的文件,再用文本編輯器去查看。 MASM f
5、ilename filen (filen為你起的一個(gè)沒用過的文件名,用以存放出錯(cuò)信息)以后可查看filen來得到出錯(cuò)信息。PROCEDURE c:編譯不通過,重新修改(錯(cuò)誤類型:源程序語句不合法)在執(zhí)行過PROCEDURE b后,如有出錯(cuò)信息時(shí),就要我們自己按PROCEDURE c去做,而不能跳躍到PROCEDURE d去,如果強(qiáng)行執(zhí)行PROCEDURE d將無任何有效結(jié)果?,F(xiàn)在就開現(xiàn)找錯(cuò)吧!首先要清楚,在PROCEDURE b中檢測(cè)出的錯(cuò)誤均為每一條語句的語法或用法錯(cuò)誤,它并不能檢測(cè)出程序的邏輯設(shè)計(jì)(語句按排位置)錯(cuò)誤,所以就要記好出錯(cuò)的行號(hào)。在記錄行號(hào)后,就應(yīng)再次執(zhí)行PROCEDURE a
6、,這時(shí)和操作應(yīng)是打開已編好的源程序(以EDIT為例:在DOS提示符下鍵入:EDIT filename.asm回車),依據(jù)行號(hào)進(jìn)行修改并存盤,再次進(jìn)行匯編,直至PROCEDURE b通過為止。便可繼續(xù)向下執(zhí)行PROCEDURE d。下面給出一些常見出錯(cuò)信息,以便查對(duì):1、Register already defined 匯編內(nèi)部出現(xiàn)邏輯錯(cuò)誤2、Unknown symbol type 在符號(hào)語句的類型中,有些不能識(shí)別的東西3、Symbol is multi-defined 重復(fù)定義一個(gè)符號(hào)4、Symbol not defined 符號(hào)沒有定義5、Syntax error 語句的語法與任何可識(shí)別的語
7、法不匹配6、Symbol is reserved word企圖非法使用一個(gè)匯編程序的保留字(例:定義add為一變量)7、Not proper align/combine type SEGMENT參數(shù)不正確8、One operand must be const 這是加法指令的非法使用9、Operands must be same or 1 abs 這是減法指令的非法使用10、Already have base register 試圖重復(fù)基地址11、Illegal size for item 引用的項(xiàng)的長(zhǎng)度是非法的,(如:雙字移位)12、Illegal register value 指定的寄存器值
8、不能放入“reg” 字段13、Must be AX or AL 某些指令只能用AX或AL14、Improper use of segment reg 段寄存器使用不合法(如:mov ds,0)15、Division by 0 or overflow 給出一個(gè)用0作除數(shù)的表達(dá)式16、Value is out of range 數(shù)值大于需要使用的17、CS register illeal usage 試圖非法使用CS寄存器18、DUP is too large for linkerDUP嵌套太長(zhǎng),以至于從連接程序不能得到所要的記錄PROCEDURE d:連接為可執(zhí)行文件(即:連接為.exe 或.c
9、om文件)在這個(gè)過程中一般沒有意外,如果有也就是文件名打錯(cuò)了。形式:在DOS提示符下: LINK filename 回車PROCEDURE e:運(yùn)行編譯好的可執(zhí)行文件當(dāng)PROCEDURE d通過后,會(huì)產(chǎn)生一個(gè)可執(zhí)行文件,這時(shí)只需運(yùn)行這個(gè)程序,看它是否按你所想象那樣得出結(jié)果。在試運(yùn)行期間,要盡量試一些臨界狀態(tài),看 程序是否運(yùn)行穩(wěn)定、結(jié)果是否正確。如一切正常,便可進(jìn)入PROCEDURE g了??勺钆碌氖遣籓K,程序產(chǎn)生一些莫名其妙的結(jié)果(你可不要以為是你的計(jì)算機(jī)不聽你的指揮,其實(shí)它是在一絲不茍地按照你編的程序執(zhí)行。我以前總以為我的計(jì)算機(jī)出了毛?。?,如果是在考場(chǎng)上這時(shí)千萬不要慌,穩(wěn)住自己的情緒,先不
10、要看計(jì)算機(jī),靜幾分鐘(反正時(shí)間多得是)。這時(shí)就要用到最關(guān)鍵、最常用的一步了,進(jìn)行PROCEDURE f 。PROCEDURE f:用調(diào)試工具調(diào)試,重新修改(邏輯錯(cuò)誤)在這我將介紹用DOS中自帶的調(diào)試程序DEBUG.EXE來進(jìn)行程序調(diào)試、檢查錯(cuò)誤.首先我們要了解DEBUG的基本用法:1、用于調(diào)試程序時(shí)的輸入格式:DEBUG FILENAME.? 回車其中FILENAME是主文件名,?是擴(kuò)展文件名,例如我們?cè)诖饲耙丫幾g好了一個(gè)文件,它的名字為:djx.exe 要對(duì)它進(jìn)行調(diào)試時(shí)就在DOS提示符下打:DEBUG djx.exe 回車,便可見到 - 提示符,如無任何提示說明正確,可進(jìn)行調(diào)試。2、DEBU
11、G調(diào)試過程中用到的DEBUG命令介紹:(注:在指令中用 括起來的內(nèi)容可缺省)1)D(Dump)顯示指定內(nèi)存單元內(nèi)容(一般用來看數(shù)據(jù)數(shù)的內(nèi)容,即DS段):格式:d地址 從地址指定的內(nèi)存單元顯示128個(gè)字節(jié)的內(nèi)容地址缺省時(shí),顯示上一個(gè)DUMP命令后面的內(nèi)容d 地址范圍 顯示指定范圍內(nèi)的內(nèi)存內(nèi)容。示例:-d100 顯示從DS段100H開始的內(nèi)容(以十六進(jìn)制顯示)2)E(Enter)修改存儲(chǔ)單元內(nèi)容(一般在DS段)格式:e 地址 數(shù)據(jù) 用給定的數(shù)據(jù)代替指定范圍的存儲(chǔ)單元內(nèi)容e 地址 修改一個(gè)指定內(nèi)存單元的內(nèi)容示例:-e ds:200 djxFF00AA 就可將DS段從200開始至205的內(nèi)容替換為64
12、 6A 78 FF 00 AA3)G(GO)運(yùn)行命令格式:-g =地址斷點(diǎn)地址1 斷點(diǎn)地址2 .斷點(diǎn)地址10從指定地址開始執(zhí)行程序(如地址缺省從當(dāng)前CS:IP開始),運(yùn)行至斷點(diǎn)地址1停止,顯示所有寄存器及標(biāo)志位內(nèi)容與下一條指令,如后面還有斷點(diǎn),可鍵入g,繼續(xù)執(zhí)行。示例:-g001a 則執(zhí)行從當(dāng)前cs:ip至001a的指令注意:地址設(shè)置必須從指令的第一字節(jié)設(shè)起。4)T(Trace)執(zhí)行一條語句格式: -t =地址 從指定地址起執(zhí)行一條語句后停下來,顯示所有寄存器內(nèi)容及標(biāo)志位的值與下一條指令。如地址缺省則從當(dāng)前CS:IP開始執(zhí)行-t =地址value 從指定地址起執(zhí)行value條指令后停止。5)P
13、(proceed)執(zhí)行一個(gè)循環(huán);一個(gè)軟中斷或call子過程格式:-p =地址n示例: mov ah,02hmov dl,41hint 21h此時(shí)用: -p 回車后系統(tǒng)將顯示一個(gè)字符A,如果在這不用P,而改用T,那么系統(tǒng)將進(jìn)入INT 21H的中斷調(diào)用中,出不來,這時(shí)你會(huì)誤以為你的程序編錯(cuò)了,一定注意!6)R(register)顯示并可修改寄存器內(nèi)容格式:-r 顯示所有寄存器內(nèi)容-r 寄存器名 修改指定寄存器內(nèi)容(可改:AX,BX,CX,DX,SP,BP,SI,DI,CS,DS,ES,SS,PC,IP,F)7)U(Unassemble)反匯編格式:-u 地址 從指定地址反匯編32個(gè)字節(jié),若地址缺省
14、則從當(dāng)前地址匯編32個(gè)字節(jié)。-u 地址范圍 對(duì)指定范圍內(nèi)的存儲(chǔ)單元進(jìn)行反匯編以上是在調(diào)試程序中可能用到的DEBUG命令解釋,DEBUG中還有其它命令,在檢查程序中不會(huì)用到,就不再介紹了。PROCEDURE g:程序編好,那就一切OK!交卷過關(guān)了!大吃、大睡。下面給出一個(gè)有病句的程序,希望大家和我一起調(diào)試、修改并通過:先執(zhí)行PROCEDURE a編輯源程序?qū)崿F(xiàn)功能:在屏幕上顯示:Hello worldMy name is DJX文件名:error.asm行號(hào): 源程序代碼:1 data segment2 out1 db Hello world3 ax db My name is DJX4 dat
15、a ens56 code segment7 assume cs:code;ds:data8 lea dx,out19 mov ah,210 int 21h1112 mov dl,0ah13 mov ah,214 int 21h15 mov dl,0dh16 moo ah,217 int 21h1819 lea dx,ax20 mov ah,21 int 21h22 code ends在編輯完執(zhí)行PROCEDURE b用masm進(jìn)行編譯:masm error回車后顯示如下:Microsoft (R) Macro Assembler Version 5.00Copyright (C) Micros
16、oft Corp 1981-1985, 1987. All rights reserved.Object filename error.OBJ:Source listing NUL.LST:Cross-reference NUL.CRF:End of file encountered on input fileerror.ASM(23): warning A4085: End of file, no END directiveOpen segments: DATAerror.ASM(3): warning A4016: Reserved word used as symbol: AXerror
17、.ASM(4): error A2105: Expected: instruction or directiveerror.ASM(16): error A2105: Expected: instruction or directiveerror.ASM(19): error A2049: Illegal use of registerEnd of file encountered on input fileerror.ASM(23): warning A4085: End of file, no END directive51566 + 406450 Bytes symbol space f
18、ree2 Warning Errors4 Severe Errors說明這個(gè)程序有錯(cuò)誤,并在第3,4,16,19,23行有錯(cuò),我們?cè)賵?zhí)行PROCEDURE c去逐一檢查第三行:3 ax db My name is DJX它的錯(cuò)誤在于AX不能作為變量名,更正:3 out2 db My name is DJX注意剛才我們定義AX為變量時(shí)在后面的程序中用過變量AX在第19行19 lea dx,ax在出錯(cuò)報(bào)告中也報(bào)第19行錯(cuò),因?yàn)椴荒軐X的有效地址賦給DX,更正:19 lea dx,out2這樣一下就解決了兩個(gè)錯(cuò)誤第四行:4 data ens這行為一個(gè)段的結(jié)束,但語句漏打了字母,更正:4 data
19、ends第十六行:16 moo ah,2這行也是語句打錯(cuò),更正:16 mov ah,2第二十三行:出錯(cuò)信息:error.ASM(23): warning A4085: End of file, no END directive說明本程序沒有結(jié)束偽操作,更正:加入:在第七、八行加入地址標(biāo)志: start:原23 end start執(zhí)行PROCEDURE a將源程序修改如下:data segmentout1 db Hello worldout2 db My name is DJXdata endscode segmentassume cs:code;ds:datastart:lea dx,out1
20、mov ah,2int 21hmov dl,0ahmov ah,2int 21hmov dl,0dhmov ah,2int 21hlea dx,out2mov ah,9int 21hcode endsend start再次進(jìn)行PROCEDURE b進(jìn)行編譯,屏幕顯示:Microsoft (R) Macro Assembler Version 5.00Copyright (C) Microsoft Corp 1981-1985, 1987. All rights reserved.Object filename error.OBJ:Source listing NUL.LST:Cross-ref
21、erence NUL.CRF:51524 + 406492 Bytes symbol space free0 Warning Errors0 Severe Errors本程序在語句上已無錯(cuò)誤。再執(zhí)行PROCEDURE d連接為可執(zhí)行文件(link error回車),屏幕顯示:Microsoft (R) Overlay Linker Version 3.60Copyright (C) Microsoft Corp 1983-1987. All rights reserved.Run File ERROR.EXE:List File NUL.MAP:Libraries .LIB:LINK : wa
22、rning L4021: no stack segment這時(shí)error.exe可執(zhí)行文件已存在,可以執(zhí)行PROCEDURE e來運(yùn)行看一看是否正確在dos提示符下鍵入:error回車(小心!)屏幕顯示:亂碼,并死機(jī)。reset My computer!說明程序在邏輯上有錯(cuò)誤,并且嚴(yán)重。這是就要用PROCEDURE f,用調(diào)試工具調(diào)試,查找錯(cuò)誤。在DOS提示符下鍵入:debug error.exe回車屏幕出現(xiàn) - 提示符,這時(shí)就可以用DEBUG的命令來找錯(cuò)誤了,我首先用d命令來查看數(shù)據(jù)區(qū)和內(nèi)容,發(fā)展所定義的兩個(gè)字符串并不在數(shù)據(jù)段的段首,而在數(shù)據(jù)段內(nèi)的100h位置上,這時(shí)才想起masm有一個(gè)不成
23、文的規(guī)定,那就是在定義完數(shù)據(jù)段后,所定義的變量均向后100h個(gè)單元,需要我們將ds段寄存器置位,在程序的start:后面加上如下指令:(執(zhí)行PROCEDURE a)mov ax,datamov ds,ax再執(zhí)行PROCEDURE b,PROCEDURE d,PROCEDURE e來運(yùn)行程序,屏幕顯示:換行My name is DJX及亂碼,并死機(jī)。(又要重新啟動(dòng)?。┰俅螆?zhí)行PROCEDURE a檢查程序,發(fā)現(xiàn):1.匯編語言有規(guī)定每個(gè)字符串應(yīng)由$結(jié)尾2.在輸出第一個(gè)串的語句中的AH子功能號(hào)應(yīng)為09H將以上兩點(diǎn)改正。再執(zhí)行PROCEDURE b,PROCEDURE d,PROCEDURE e來運(yùn)行
24、程序,屏幕顯示:Hello worldMy name is DJX并死機(jī),不能返回DOS原因分析,在程序中沒有返回DOS的指令,更正:用PROCEDURE a來進(jìn)行編輯:用DOS 21H中斷的4cH子功能便可返回DOS,在code ends前加:mov ah,4chint 21h再執(zhí)行PROCEDURE b,PROCEDURE d,PROCEDURE e來運(yùn)行程序,屏幕顯示:Hello wordMy name is DJX并返回DOS成功!這樣一個(gè)程序就調(diào)試完成,并正確。下面是正確的源程序:data segmentout1 db Hello world$out2 db My name is D
25、JX$data endscode segmentassume cs:code;ds:datastart:mov ax,datamov ds,axlea dx,out1mov ah,9int 21hmov dl,0ahmov ah,2int 21hmov dl,0dhmov ah,2int 21hlea dx,out2mov ah,9int 21hmov ah,4chint 21hcode endsend start以上這個(gè)程序很簡(jiǎn)單,只是為了說明實(shí)現(xiàn)匯編語言的上機(jī)編程及調(diào)試過程,匯編語言須多練習(xí)才能掌握它的特點(diǎn)。實(shí)驗(yàn)二 數(shù)據(jù)傳送一、 目的1、 掌握數(shù)據(jù)傳送類指令的用法2、 認(rèn)識(shí)DEBUG調(diào)試程
26、序的作用3、 熟悉DEBUG調(diào)試程序主要命令的使用方法二、 步驟將數(shù)據(jù)段1000H和1008H兩個(gè)字節(jié)存儲(chǔ)單元的數(shù)據(jù)進(jìn)行交換。 源程序: MOV BX ,1000H MOV AL,BX MOV CL,8BX MOV 8BX,AL MOV BX,CL HLT1、 進(jìn)入DEBUG狀態(tài)2、 匯編源程序ACS:1000140D:0100 MOV BX,1000140D:0103 MOV AL, BX140D:0105 MOV CL,8BX140D:0108 MOV 8BX,AL140D:010B MOV BX,CL140D:010D INT 3140D:010E C3、 用反匯編列出匯編指令序列 UC
27、S:0100,010D 140D:0100 BB0010 MOV BX,1000 140D:0103 8A07 MOV AL,BX 140D:0105 8A4F08 MOV CL,8BX 140D:0108 884708 MOV 8BX,AL 140D:010B 880F MOV BX,CL 140D:010D CC INT 34、給內(nèi)存單元賦值將數(shù)據(jù)段的1000H和1008H存儲(chǔ)單元分別賦給F0H和0FHEDS:1000 F0,00,00,00,00,00,00,00,0F5、單步執(zhí)行程序,并逐條檢查執(zhí)行指令的結(jié)果。T=100三、 思考題按上述步驟,完成以下實(shí)訓(xùn)內(nèi)容。將兩個(gè)寄存器AX和BX中
28、的數(shù)據(jù)進(jìn)行交換。 MOV AX,1234H MOV BX,5678H XCHG AX,BX HLT實(shí)驗(yàn)三 順序結(jié)構(gòu)程序設(shè)計(jì)一、 實(shí)驗(yàn)?zāi)康?. 熟悉匯編語言源程序的結(jié)構(gòu)框架。2. 掌握順序結(jié)構(gòu)程序設(shè)計(jì)的基本方法。3. 熟練運(yùn)用edit,masm,link,debug調(diào)試匯編語言的源程序。二、 實(shí)驗(yàn)內(nèi)容1 在屏幕上顯示:Hello Bengbu College!參考源程序: DATA1 SEGMENT MESS DB 0DH,0AH,“Hello Bengbu College!$” DATA1 ENDSCODE SEGMENT ASSUME CS:CODE,DS:DATA1START:MOV AX
29、,DATA1 MOV DS,AX LEA DX,MESS MOV AH,09H INT 21H MOV AH,4CH INT 21HCODE ENDS END STRAT2 編寫程序完成如下功能:從鍵盤接收一個(gè)小寫字母,然后找出他的前導(dǎo)字符和后續(xù)字符,再按順序顯示這三個(gè)字符。參考源程序:CODE SEGMENTASSUME CS:CODESTART: MOV AH,01H INT 21H MOV BL,ALSUB BL,1MOV DL,BLMOV AH,02HINT 21HADD DL,1MOV AH,02HINT 21HADD DL,1MOV AH,02HINT 21HMOV AH,4CHI
30、NT 21HCODE ENDSEND START三、 思考題將從鍵盤輸入的小寫字母用大寫字母顯示出來。提示:(1)DOS功能調(diào)用(01,02); (2)小寫字母與大寫字母的ASCII碼差值。實(shí)驗(yàn)四 分支結(jié)構(gòu)程序設(shè)計(jì)一 目的1理解和掌握雙分支程序中產(chǎn)生條件和判斷條件的程序段的設(shè)計(jì)方法和技巧;2理解和掌握多分支程序的設(shè)計(jì)原理、方法和技巧。二 內(nèi)容1比較兩個(gè)字符串STRING1和STRING2所含字符是否完全相同,若相同,則顯示MATCH!,否則顯示NO MATCH!。DATA SEGMENTSTRING1 DB ABCDEFGOUT1 DB MATCH!OUT2 DB NO MATCH!DATA
31、ENDSEXTRA SEGMENTSTRING2 DB abcdefgEXTRA ENDSCODE SEGMENT ASSUME CS:CODE,DS:DATA,ES:EXTRASTART: MOV AX,DATA MOV DS,AX MOV AX,EXTRA MOV ES,AX MOV CX,7 LEA SI,STRING1 LEA DI,ES:STRING2 CLD REPE CMPSB JNZ OUTPUT2 LEA DX,OUT1 MOV AH,9H INT 21H JMP EXITOUTPUT2:LEA DX,OUT2 MOV AH,09H INT 21H EXIT:MOV AH,4
32、CH INT 21H CODE ENDS END START2.比較兩個(gè)無符號(hào)整數(shù)A和B,若AB則輸出“”;若AB則輸出“”;若A=B則輸出“=”。參考源程序:DATA SEGMENTA DB 12B DB 78DATA ENDSCODE SEGMENT ASSUME CS:CODE,DS:DATASTART:MOV AX,DATA MOV DS,AX MOV AX,A MOV BX,B CMP AX,BX JAE NEXT1 MOV DL,EXIT:MOV AH,4CHINT 21HMOV AH,4CHINT 21HCODE ENDSEND START三 思考題1畫出程序1,程序2的流程圖。
33、2比較兩個(gè)無符號(hào)整數(shù)是否相等,如相等則輸出“”,否則輸出“!”。實(shí)驗(yàn)五 循環(huán)結(jié)構(gòu)程序設(shè)計(jì)一、 目的1理解和掌握單循環(huán)程序中循環(huán)控制條件的選取和設(shè)置;理解和掌握多重循環(huán)程序中循環(huán)控制條件的選取和設(shè)置;2掌握單循環(huán)程序中循環(huán)的初始狀態(tài)和循環(huán)體的設(shè)置;掌握多重循環(huán)程序中內(nèi)外層循環(huán)的初始狀態(tài)和循環(huán)體的設(shè)置;3理解和掌握循環(huán)程序的設(shè)計(jì)原理、方法和技巧;二、 實(shí)驗(yàn)內(nèi)容1編寫程序,將一個(gè)包含有20個(gè)數(shù)據(jù)的數(shù)組M分成兩個(gè)數(shù)組:正數(shù)數(shù)組P和負(fù)數(shù)數(shù)組N,并把這兩個(gè)數(shù)組中的數(shù)據(jù)個(gè)數(shù)統(tǒng)計(jì)出來,分別存儲(chǔ)于COUNTP 和COUNTN單元中。參考源程序:DATA SEGMENTM DW 1,2,3-6,7,58P DW 20 DUP(?)N DW 20 DUP(?)COUNTP DW ?COUNTN DW ?DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART:MOV AX,DATA MOV DS,AXLEA BX,MMOV SI,0MOV DI,0MOV CX,12MOV COUNTP,0MOV COUNTN,0NEXT:MOV AX,BX CMP AX,0 JL NN MOV PSI,AX ADD SI,2 INC COUNTP JMP PPNN: MOV NDI,AX
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度環(huán)??萍脊締T工工資待遇及環(huán)保業(yè)績(jī)提成合同
- 2025年度高速公路服務(wù)區(qū)停車場(chǎng)停車服務(wù)協(xié)議
- 模具開發(fā)、生產(chǎn)及國(guó)際市場(chǎng)拓展合作協(xié)議(2025年度)
- 2025年度汽車過戶交易全程免責(zé)承諾書
- 二零二五年度食品飲料區(qū)域代理加盟協(xié)議范本
- 二零二五年度影視制作與影視衍生品開發(fā)合同
- 2025年度租賃協(xié)議原告代理詞:租賃合同履行過程中的爭(zhēng)議處理
- 二零二五年度租賃房屋租賃保證金管理協(xié)議
- 2025年度環(huán)保糾紛民事調(diào)解協(xié)議書編制指南
- 二零二五年度知識(shí)產(chǎn)權(quán)法律風(fēng)險(xiǎn)防控與保密協(xié)議
- 流行性乙型腦炎PPT課件
- 深圳市軌道交通線網(wǎng)規(guī)劃(2016_2035)(草案)
- 采購(gòu)訂單模板
- 四十二式太極劍劍譜
- 巴馬格紡絲控制系統(tǒng)軟件說明書(共46頁)
- 完整解讀2021年《建設(shè)工程抗震管理?xiàng)l例》PPT教學(xué)講座課件
- 肺結(jié)核患者管理ppt課件
- 新版小學(xué)英語PEP四年級(jí)下冊(cè)教材分析(課堂PPT)
- 煤矸石綜合利用項(xiàng)目可行性研究報(bào)告寫作范文
- CD型電動(dòng)葫蘆使用說明書
- [浙江]10米深基坑鉆孔灌注樁加內(nèi)支撐支護(hù)施工方案(附圖豐富)_secret
評(píng)論
0/150
提交評(píng)論