《2023年汇编实验报告3.pdf》由会员分享,可在线阅读,更多相关《2023年汇编实验报告3.pdf(53页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、实验一汇编程序的汇编及运营1.实验目的和规定(1)熟悉汇编程序的汇编、连接、执行过程(2 性 成 LST文献渣看LST文献(3)生成O B J文献,修改语法错误(4)生成EX E文献(5)执行2.实验环境IBMPC机及其兼容机实验的软件环境是:操作系统:DOS 2.0 以上;调试程序:DEBUG.COM;文本编程程序:EDIT.EXE、WPS.EXE;宏汇编程序:MASM.E XE(或 ASM.EXE);连接装配程序:LIN K .EXE;交叉引用程序:CREF.EXE(可有可无)。3.实验内容及实验数据记录(1)将数据段输入,取名l.tx t,保存在MASM文献夹下。生成LST文献,(不必连
2、接、运营)用EDIT查看1.LST文献。试回答:DAI,DA2的偏移量分别是多少?COUNT的值为多少?DATA SEGMENTORG 20HNUM1=8JNUM 2=NUM1+1 0 HDAI DB IB M PCDA 2 DB0AH,0DHo COUNT EQU$-DA1。DATAoENDS。END(2)输入有错误的文献,修改错误语句。(M A SM没有出现错误即可。不必连接、运营。)DATA SEGMENToV ARI DB 0,25,ODH,30 0ooVAR2 oDB 12H,A4H,6BHooVAR3 DB A B C DEF,oVAR4 oDW 1 2 34H,56 7 8H。V
3、AR 5 oDW 1 0 H DUP(?)-DATA ENDSooCOD E SEGME NT。oASSUMEoCS:CODE,DE:DATAooBE I N GOMOV AX,DAT A-MOV DS,AX。LEA oSL VAR 5wMO V BX,OFFSET VAR2gM 0V SI,OABHoooMOV AX,VAR 1+2MOV BX,S I。8MOV VAR 5+4,VAR4MOV AH,4CH。IN T 210H。CODE。ENDSEND START(3)输入对的的程序,汇编、连接、运营STACKS SEGM ENT STACKDW1 28 DUP(?)。STACKS ENDS
4、DATAS SEGM ENTooSTRINGo DB WELCOME!;1 3,10,“DATAS。END SCODES S EGMENT9 ASSUMECS:CODES,D S:DATAS-START:MOV AX,DATA SM O VoDS,AX。LE A oDX,STRINGMOVAH,90 0 I NT 2 1 H3MOV AH,4CH“e INT 21HooCODES ENDS。o ENDeSTART1.算法描述及实验环节1.(1)生成l.s t 文献E:kainasm 1.asmMicrosoft Macro Assembler Uersion 5.00Copyright Mic
5、rosoft Corp 1981-1985,1987.All rights reserved.Object filename 1.OBJ:Source listing NUL.LST:1Cross-reference NUL.CRF:50106 415814 Bytes symbol space free0 Warning Errors0 Seuere Errors(2)用 ED IT查看文献2.修改后对的算法:DATA S E GMENTjVARl DB 0,2 5,ODH,30jVAR2 DB 1 2H,0 A4H,6BHjV AR3 DB ABCDEFjVAR4 DW 1234H,567
6、8HjVAR5 DW 1 0 H DUP(?)jDATA ENDSCODE SEGMENTAS S UME CS:CODE,DS:DA TAjBE I NG:MOV A X,DATA,M0 V DS,AXjLEA SI,VAR5MO V BX,OFFSETVAR2jMOV by t e p t r S I,0A B IIMOV AL,VAR 1+2MOV AX,SIMOV BX,AXMOV A X,VAR4MOV VAR5+4,AXjMOV AH,4CHINT 21HCODE ENDSEND B EING5.调试过程1.程序没有错误,结果:E:kainasm 1.asmMicrosoft Ma
7、cro Assembler Uersion 5.00Copyright Microsoft Corp 19811985,198?.All rights veserued.Object Filename(1.OBJ:Source listing NUL.LST:1Cross-reference NUL.CRF:50106+415814 Bytes symbol space free0 Warning Errors0 Seuere Errors2.程序运营出现错误:问题及改正:(1).2.a s m (2):e r r o r A 2 0 2 3:S ym b o l n o t d e f i
8、n e d :O DH 表达没有定义O DH;犯错语句V A R I DB 0 ,2 5,O DH,3 0 0,这里的O DH 应当为1 6 进制数的0 D H o修改后仍提醒错误,由于3 0 0 越界,可改为3 0 。(2).2.a s m (3):e r r o r A 2 0 2 3:S ym b o l n o t d e f i n e d:A 4 H没有定义A 4 H 这个变量劣日错语句“V A R 2 DB 1 2 H,A 4 H,6 B H”1 6 进制中字母开头的1 6 进制数开头必须加上“0 ”,所以必须在A 4 H 之前加0.,将其改为 0 A 4 H o(3 ).2.a
9、 s m (9):e r r o r A 2 0 2 3:S y m b o 1 n o t d e f i n e d:D S是存储代码段的,所以将D E 改为DS。(4).2.A S M (1 0 ):e r r o r A 2 1 0 5 :E x p e c t e d:i n s t r u c t i on o r d i r e c t i v e ;问题:这是符号的漏写了,语句“B E I N G(M 0 V A X,DA T”中B E I N G 后面漏了 所以应加上“:工(5 ).2.a s m(1 4):e r r o r A 2 0 3 5:0 p e r a n d
10、m u s t h a v e s i ze 没有指明大小4 E 错语句 M O V S I ,O A B H”立即数存入内存中,必须指明大小;所以必须在 S I 前加入 b yt e p t r 改为“M O V b yt e p t r S I ,0 A B H”(6).2.a s m (1 5):e r r o r A 2 0 6 8:C a n n o t a d d r e s s w i t h s e g m en t r e g i s t e r犯错语句“M O V A X,V A R 1+2”V A R I 的地址+2 后只占8 位空间,而A X 寄存器为1 6 位,所以位
11、数不匹配,应当把AX改为A L或者AH这些8 位的寄存器。(7).2.a s m (1 6):e r r o r A 2 0 5 2:I m p r o p e r o p e r a n d t yp e 4 1 2 错语句 M O V B X ,S I M O V 指令不允许两个内存单元之间的直接操作,需要引入一个通用寄存器AX作为中介,修改后“M O V A X,S U H O V B X ,A X”(8).2.a s m(1 7):e r r o r A2 0 5 2 :I m p r o p e r o p e r a n d t yp e 这个问题与上面那个相同,修改方式也同上。修
12、改为:“M O V A X,V A R O O V V A R 5+4,A X”(9).a s m(2 1):e r r o r A 2 0 2 3:S y m b o 1 n o t d e f i n e d:S T A R T 没有定义 S T A R TE N D S T A R T 这里的E N D 应当跟上面的B E I N G:相应,所以可以把“E N D ST A R T 改为E N D B E I N G”;或者将上面的 B E I N G”改为“S T A R T”6.实验结果1 .程序正常运营,用E D I T 查看1.1 s t 文献得到题目规定数据:COUNT.NUM
13、BER 0008D A I.L BVTE 0020 DATAD A 2.L BVTE 0026 DATA2 .修改后无错误,达成题目规定:3.对文献进行汇编,连接产生3.e x e文献回 3.EXE 2011/10/30 23:01 应 程 在D O S下运营,结果如下Nicrosoft Windows【?6.1.7600?2009 M icrosoft Corporation?C:M iserskai3*3?.?C:MJset*skai3.exe*3.exe*?,?C:MJserskaie:E:cd kaiE:kai37.总结通过这次的实验让我初步的熟悉汇编程序的汇编、连接、执行等过程,对于
14、汇编指令了解了不少。在这次实验最重要是学会了如何找错,修改,查看结果等。在改错过程中,基础知识是必不可少的,没有认真注意一些指令的常规用法、数据的转移等就会出现错误。我们在书写程序指令的时候就要牢记指令的用法,不能每次都依靠电脑提醒去找错,增长工作量。实验二顺序程序设计1 .实验目的和规定1.学习使用DEBUG的命令;2.使用DEBUG命令在数据段中查看程序运营的结果;3.运用D E B U G 运营简朴的程序段。2.实验环境实验的硬件环境是:I B M P C 机及其兼容机实验的软件环境是:操作系统:D O S 2.0 以上;调试程序:D E B U G.C O M;文本编程程序:E D I
15、 T.E X E、W P S.E X E;宏汇编程序:M A S M.E X E(或 A S M .E X E);连接装配程序:L I N K ,EX E;交叉引用程序:C R E F.E X E(可有可无)。3.实验内容及实验数据记录1)输入程序观测寄存器变化使用D E B U G,将下面的程序段写入内存,逐条执行,观测每条指令执行后,C P U 中相关寄存器的内容变化。注意用T 命令执行时,C S:I P 寄存器的内容。M O V A X,4E 2 0g A D D A X,1 41 6时 O V B X,2 0 2 3g A D D A X,B X闻 O V B X,A X。A D D
16、o A X,B X M 0 V A X,0 0 1 A8 M O V o B X,0 0 2 6。A D D A L,B LA D D A H,B Lm A D D B H,A LM O V A H,0。A D D A L,B LA D D o A L,9 C2)下列程序单步运营,注意A L,B X,CX寄存器的变化,并观测数据段字母的变化。“D S E G S E G M E N TM S G 1 D B a b c 8 D S E G E N D SC S E G S E G M E N ToA S S U M E S:C S E G,D S:D S E Ga S T A R T:oM O
17、 V A X,D S E G。MOV D S,A Xs L E A B X,M S G 1。oM O V oC X,38 S:。MO V o A L,B X。A N D A L,1 1 0 1 1 1 1 1 B ;将 A L 中的 A S C I I 码的第 5 位置0,00 0 0;变成大写字母。“M O V B X ,A LI N C B X。L O O P SM O V A L,08 M O V oA H,4C H。I N T 2 1 HC S E G E N D Sa E N D S T A R TT)程序的跟踪执行操作。在 D O S 下直接输入文献主名就可以执行文献了,有的程序会
18、显示结果,也许执行后什么结果都没有,是由于程序中没有显示命令。那么如何查看程序的运营结果呢?程序执行过程的跟踪操作环节如下:(1)在D O S下输入:DEBUG文 献 名.E X E(2)在D E B U G提醒符下输入U命令(3)可 以 用T命令单步执行指令,执行到 M O V A H,4c H时结束,也可以用G命令执行整个程序,输入:G=B地 址(如:G=0 0 0 0)(4)用D命令查看程序执行后数据段的变化。输入:D K地址:0 (如:D 1 2 6 0:0),在显示的数据中,对照源程序或L S T文献查看结果所在的偏移地址的内容。4)编写调试下面的程序,用D E B U G查看数据段
19、中的结果(D z =(w-x)*i o+5)/(x +y),x,丫,w为字节类型变量,结果存于z单元,写出数据段和代码段。(2)X,Y为字节类型数,求Z =(X+F)*8-(X-Y)*2)/1 6,写出完整的数据段和代码段,不用乘除指令。4.算法描述及实验环节题 目2大写变小写算法:D S E G S E G M E N TM S G h D B o A B C D S E G E N D SC S E G S E G M E N TA S S U M E C S:C S E G,D S:D S E GS T A R T:M O V A X,D S E GM O V D S,A XL E A
20、B X,M S G 1M O V C X,3S:M O V A L,L B X O R A L,0 0 1 O O O O O B (或者用a d d 的指令加上0 0 1 0 0 0 0 0 即加上3 2)M O V B X ,A LI N C。B XL O O P oSM O V A L,0M 0 V 4H,4 C HI N T 2b Hg C S E G E N D SE N D S T A R T题 目 3:环节:(1)在 D O S 下输入:D E B U G 4.E X E(2)在D E B U G 提醒符下输入U 命令(3)输入:G=0 0 0 0(4)用D 1 4 0 6:0
21、命令查看程序执行后数据段的变化算法:D S E G S E G M E N TM S G 1 D W 78 5 6 H,2 0 3 8 HM S G 2 D W?D S E G E N D SC S E G S E G M E N TA S S U M E C S:C S E G,D S:D S E GS T A R T:M O V A X,D S E GM O V D S,A XM O V A X,M S G 1A N D A X,M S G 1+2M O V M S G 2,A XM O V A L,0M O V A H.4C HI N T 21 HC S E G E N D SE N D
22、 S T A R T题目4 算法:D S E G S E G M E N TX D B 2hY D B 2hW D B 3hZ D W?T E N D B 1 0D S E G E N D SC S E G S E G M E N TA S S U M E C S :C S E G,D S :D S E GS T A R T:M 0 V A X,D S E GM O V D S,A XM O V B L,XA D D B L,YMOV A L,WS U B A L,XI M U L T E NA D D A X,5I D I V B LM O V Z,A XM O V Z+1,A XMOV A
23、 H,4C HI N T 2 1 HC S E G E N D SE N D S T A R T4.2算法:由于不能用乘除指令,所以改用移位指令来代替D S E G S E G M E N TX D B 5HY D B 4HZ D B?D S E G E N D SC S E G S E G M E N TA S S U M E C S:C S E G,D S :D S E GS T A R T:M O V A X,D S E GM O V D S,A XM O V A L,XA D D A L,YM O V C L,3S A L A L,C LMOV BL,XS UB BL,YS A L B
24、 L,1S UB AL,BLMOV AH,ALAND AH,000 0 1 1 11BMOV CL,4SA R AL,CLMOV Z,ALM O V Z+1 ,AHMOV AH,4 CHINT 2 1 HCSEG ENDSEND START5.调试过程4.2Object filename42.OBJ:Source listing NUL.LST:Cross-reference NUL.CRF:42.asn:error A2052:Improper operand type42.asn:error A2052:Inproper operand type50628+415292 Bytes sym
25、bol space free0 Warning Errors2 Seuere Errors在移位中,所移位数大于一时必须用C L寄存器,不能直接写为“sal ax 3”改为“MOV CL,3SAL AL,CL”由于不能用乘除指令,不能直接得出余数,要另加语句“M O V AH,ALAND AH,00001111 b w6.实验结果实验一:以下为T 命令执行下的一段内容变化:-tAX=4E20DS=13D113E1:0003-tBX=0000ES=13D1051614CX=0025SS=13E1ADDDX=0000CS=13E1 AX,SP=0000IP=00031416BP=0000S I=0
26、000 DI=0000NU UP EIPL NZ NA PO NCAX=6236BX=00萌CX=0025DX=0000SP=0000BP=0000S I=0000 DI=0000DS=13D1ES=13D1SS=13E1CS=13E1IP=0006NU UP EIPL NZ NA PE NC13E 1:0006-tBB0020M OUBX.2000AX=6236BX=2000CX=0025DX=0000SP=0000BP=0000S I=0000 DI=0000DS=13D1ES=13D1SS=13E1CS=13E1IP=0009NU UP EIPL NZ NA PE NC13E1:0009
27、-t03C3ADD AX,BXAX=8236BX=2000CX=0025DX=0000SP=0000BP=0000S I=0000 DI=0000DS=13D1ES=13D1SS=13E1CS=13E1IP=000BOU UP EING NZ NA PE NC13E1:000E!8BD8M OUBX,AXCS为代码段寄存器,不变;IP 为指针寄存器;读取一条指令后,IP 中的值自动增长,以使C P U 可以读取下一条指令。比如读入“bbOO 20 指令长度为3 字节,那 么 IP 就自动加3,读入 0 3c 3,指令长度为2 字节,I P 自动加2;实验二:逐步运营结果如下:密 C:Windo
28、wssystem32cmd.exe-debug 2.exefiX=1406BX=0000CX=002BDX=0000SP=0000BP=0000SI=0000 DI=0000DS=1406ES=13F6SS=1406CS=1407IP=0005NV UP EI PL NZ NA PO NC1407:0005-t 8D1E0000 LEA1 BXJ0000DS:0000=6261AX=1406BX=0000CX=002BDX=0000SP=0000BP=0000SI=0000 DI=0000DS=1406ES=13F6SS=1406CS=1407IP=0009NV UP EI PL NZ NA
29、PO NC1407:0009-t B90300M O V1 CX,0003AX=1406BX=0000CX=0003DX=0000SP=0000BP=0000SI=0000 DI=0000DS=1406ES=13F6SS=1406CS=1407IP=000CNV UP EI PL NZ NA PO NC1407:0000-t:8A07M O V1 ALJBXlDS:0000=61AX=1461BX=0000CX=0003DX=0000SP=0000BP=0000SI=0000 DI=0000DS=1406ES=13F6SS=1406CS=1407IP=000ENV UP EI PL NZ NA
30、 PO NC1407:000Et0420ADDi AL,20AX=1481BX=0000CX=0003DX=0000SP=0000BP=0000SI=0000 DI=0000DS=1406ES=13F6SS=1406CS=1407IP=0010OV UP EI NG NZ NA PE NC1407:0010l 8807M OV1 BX,ALDS:0000=61以下为小写变大写,大写变小写的实验结果:1407:001F 0000 ADD BX+SI.AL-D 1406:01406:000061 62 63 00 00 00 00 00-001406:0010B8 06 14 8E D8 8D I
31、E00-001406:002088 0743 E2 F7 B0 00 B4-4C1406:003000 00 00 00 00 00 00 00-001406:004000 00 00 00 00 00 00 00-001406:005000 0000 00 00 00 00 00-001406:006000 0000 00 00 00 00 00-001406:007000 00 00 00 00 00 00 00-00-GProgram term inated norm ally-D 1406:01406:000041 42 43 00 00 00 00 00-001406:0010B8
32、06 14 8E D8 8D IE00-00,ELL43,E2.F7 Rf1R JAC00 00 00 00 00 00 00 abc.B9 03 00 8A 07 24 DF.$.CD 21 00 00 00 00 00.C.L J.00 00 00 00 00 00 00.00 00 00 00 00 00 00.00 00 00 00 00 00 00.00 00 00 00 00 00 00.00 00 00 00 00 00 00.00 00 00 00 00 00 00 ABC.B9 03 00 8A 07 24 DF.$.CD 21 血血血血 0。_ _ _ _ _ _ _C _
33、!_ABC.二 色 二 二 匚 匚:F.F.F.F.P.6$!.d.t.9.r.v.6407::001F2B46FESUBAX,BP-021d 1406:0.40600004142430000 00 0000-000000 0000 000000.4060010B8 06148E D8 8D IE00-00B9 03 008A 070420.4060020880743E2 F7 B0 00B4-4CCD 21 FE 8B 46F6 2B.406003046FE Bl04D3 E0 0146-F88B 46 FE 89 46F6 EB.40600400690C7 46F6 00 00FF-76F
34、8 FF 76F6 B8 D2 05.406005050FF 362421E8 1864-83C4 08 C4 5E 062683.40600607F 06007409 AlA4 07-398672 FF 76 0R FF 36.406 00702421B8 DD 05 EB 3090-803E 60 080074 218B)rogram term inated norm allyd 1406;04 E rro rd 1406:0.406:0000 61 62 63 00 00 00 00 00-00.406:0010 B8 06 14 8E D8 8D IE 00-00/c rc c c c
35、 on_ Q Z 2 _L C rc_ t-i rtc_ cc r ,fQ.00 00 00 00 00B9 03 00 8A 07XLD_ Qd_Q D L X.00 0004 20J1Z:_ QD.abc.实验三:按规定实验结果如下:,C:Windowssystem32cmd.exedebug 3.exe 0|回Lis t Fil e NUL.MAP:Libr ar ies .LIB:LINK:war n in g L4021:n o s t ack s eg m en tE:k aidebu g 3.exe1407:0000 B80614MOVAX,14061407:0003 8ED8M
36、OVDS,AX1407:0005 A10000MOVAX,00001407:0008 23060200ANDAX,0002111407:0000 f i30400MOV 00041,AX|U 0 7:000F B000MOVAL,001407:0011 B44CMOVAH,4C1407:0013 CD21INI211407:0015 9A168B0089CALL8900:8B161407:001A 46INCSI1407:001B FE8B46F6DECBV TE PTR BP*DI6461407:001F 2B46FESUBAX,BP-02-t31 C:Window$sy*tetn32cnx
37、exe-debug 3xe1407:0011 B44CMOVRH.4C1AO/:OO13 CD21INT21140/:UO15 9A168B0089CALL8900:8B161407:0010 66INCSI140/:001B FE8B46F6DECBV TE PTR IBP*DI*F64611407:001F 2B46FESUBf iX,BP-021AX=1406 BX=0000DS13F6 ES=13F61407:0003 8ED8-tCX=0025 DX=OO00 SP=0O0OSS 1406 CS-1407 IP-0003MOVDS.AXBP=OOOO SI=0000 01=0000N
38、V UP EI PL NZ NR PO NCAX=1406 BX O000DS=1406 ES=13F61407:0005 A1O000-g 0013CX=0025 DX-0000 SP=OOOOSS=1406 CS=1407 IP=0005MOVQX.10000)BP-0000 SI-0000 DP0OOONV UP EI PL NZ NA PO NCDS:0000-785AX=4C0O BX=0O00DS 1406 ES-13F6I1407:而13cD21CX=0025 DX=O00O SP=0OO0SS二1406 CS-1407 IP=O01321BP-0000 SI=0000 DI=0
39、000NV UP EI PL NZ NA PO NCile di t earchpt ions elpi 冷i 111 Segments and Groups:tN a m ieLength A lign Combine Class 1CSEG.0015 PARA NONE 1DSEG.0006 PARA NONE-I Symbols:IN ameType Value A ttr1MSG1.L W O RD 0000 DSEG QiMSG2.L W O RD 0004 DSEGI S T A R T.L NEAR 0000 CSEGjFILENAME.TEXT 3-实验四:4.1以下为实验数据
40、为x=2,y=2,w=3的时候的结果,结果商为3,余3;与正常结果无异-d 1406:00041406:00001406:0010 B81406:0020 2A1406:0030 A30606041400008E00B403D8F64C038A2ECD00IE052100-0000-0000-0546-F80002058B00IE00460001F6FE0000FB8900R0A346000203F6000000EB4.2以下为实验数据为x=5,y=4的时候的结果,其中商为4,余6;与正常结果无异-d 1406:00021406:00001406:0010 B81406:0020 8A06IE
41、04 06 00 00 0 00-00 00 00 00 00 00 00 0014 8E D8 R0 00 00-02 06 01 00 Bl 03 D2 E000 00 2A IE 01 00-D0 E3 2A C3 8A E0 80 E47.总结这次的实验重要是熟悉了程序执行过程的跟踪执行操作。学习使用DE BUG命令,用DEBUG指令来查看指令的数据段的运营结果。并通过T命令来查看各种寄存器的内容的变化。并且通过这次实验,熟悉加减法指令,乘除指令和移位指令的使用,指令间的互相代替和转换。实验三分支循环程序设计1.实验目的和规定1、学习调试程序,查找逻辑错误;2、学习分支语句的编程和调试
42、;3、学习循环语句的编程和调试。2.实验环境实验的硬件环境是:IBM-PC机及其兼容机实验的软件环境是:操作系统:D O S 2.0 以上;调试程序:D E B UG.C O M;文本编程程序:E D I T.EX E、1叩$化*;宏汇编程序:皿5 1 1.E X E (或A S M .E XE);连接装配程序:LI NK .E XE ;交叉引用程序:C R E F.E XE (可有可无)。3.实验内容及实验数据记录1 .有 1 0 个数,记录正数的个数,存放在变量M中中。通过汇编后,形成EXE 文献。在 D E B UG 中,先用G=0 命令执行程序,用 D 命令查看M单元的内容,会发现结果
43、不对的。用单步执行命令T=0,单步执行程序,查找程序中的逻辑错误,注意每一次循环中A L 寄存器中值的变化是否对的。(A L 寄存器中存放正数的个数)DSEG SEGMENT。MSG DB 4,-2,-6,0,5,67,8,-3,5,6M。DB?。DSE G EN D SooCSEG SEGMEN T。ASSUM E CS:CSEG,DS:DSEG。6TART:oMOV AX,DSEG。MOV DS,AXoMOVoC X,10ooMOVoA L,0。oLEA 01,M SG。L I:MOVoBL,SIo CMPoB L,oJB E NEX To INC OALoNEXT:INCSILOOPoL
44、l。MOVM,AL0 0 MOV AL,000MOV0AH,4 CH。I NT 021Ho CSEG ENDSoEND START2.数据段中是一组无符号数,将最小数存放在M单元中。按上题方法查找一处逻辑错误。O O OD S E GOS E G M E N T。oMSG D B 13,15,7,25,24oooM DB?o DSEG ENDS。CSEG SEGMENToooAS SUMEDEBUG 2.EXE-GHJADJHF i.=讶 HL=?i6u.i eF-iF-*F-iH LaFiF-eFSE|F-u。u奸 6Program terminated normally6.实验结果1.输入
45、字符,数据“E”E:kaiDEBUG l.EXE-GEProgram terminated normally2.输出字符串Kun ru e :L is t F ile NUL.M fiPl:L ib ra rie s .L IB:LINK:w arning L4021:no s ta c k segmentE:kaiDEBUG 2.EXEGADHAJJSDAKJDHJEHJSDADHAJJSDAKJDHJEHJSDProgram te rm in a te d n o rm a lly3.未修改前输出的结果:E:kaiE:kaidebug 3.exe4F5956A8FF90Program te
46、rminated normally修改后输出的结果E:ka i d e b u g 3 3.exe9805A9gF6F-45FProgram te rm in a te d n o rm a lly4.S3 C:Windowssystem32CMD.exe-debug 4.exe01 回 2Program terminated normally X分析:这是1 OH中断功能之一的0号功能,当AH=0的时候为0号功能更,而下一句为设立方式。如:“MOV AH,0;M 0 V A L,0 3 H;”意为:B I O S 10H 的 0号功能,3号显示设立,设立8 0X25的彩色字符模式。在这个空间
47、,向这个地址写入数据,写入内容将立即出现在显示器上。5.按规定输出*-G*Wrrogram terminated normally6.测试数据为“0,-1,2,4,3,-4,5,6,-7,0,0,2,5,6,1,5,4,2,-1,-1 ,所以共1 1个正数,6个负数,3个零,答案对的。G000B00060003Program terminated normally7.总结这次的实验重要是让我们熟悉了 DOS的一些基本功能的调用,让我应用这些功能来实验对字符的一些操作和修改。在这次的实验中,我还熟悉了寄存器中不同数值的存储转换过程。通过对实验算法的了解分析,熟悉各种功能的使用。实验五子程序设计1
48、.实验目的和规定1、学习子程序的编写,主子程序的调用2、不同模块间程序的调用和调试2.实验环境实验的硬件环境是:IB MPC 机及其兼容机实验的软件环境是:操作系统:D OS 2.0以上;调试程序:D EB UG.C OM;文本编程程序:ED IT.EXE,WPS.EXE;宏汇编程序:MA SM.EXE(或A S M .EXE);连接装配程序:LINK.E X E;交叉引用程序:C REF.EX E(可有可无)。3 .实验内容及实验数据记录1、数据段中的3 个字符,调用子程序将其逐个显示出来。子程序的功能是显示一个字符。单步执行,观测IP 的变化DATASEGMENT8 MAGDB ABC8
49、DATA ENDSCODEo SEGMENT。A SSUMECS:COD E,DS:DATASTART:则 OV o AX,DATA。M0 V DS,AX川 MOV o SI,0o MOV o CX,3 L L :MOV 田 L,MAG SIo o o CAL L o MADDa l NCa S I“L OOP L L。oMOVoAH,4CHM O INT02 1 H8 MADD PROC谢OV AH,02H。IN T 2hHomasm 1.asmMicrosoft(R)Macro Assembler Version 5.00Copyright(C)Microsoft Corp 1981-19
50、85,1987.All rights reserved.Object filename tl.OBJ:Source listing NUL.LST:Cross-reference NUL.CRF:1.asm(2):Out of memoryE:kai.因素:黏贴程序后忘了讲中文符号改为英文符号修改后程序对的:K a i?i:kaimasm l.asmlicrosoft(R)Macro Assembler Version 5.00Copyright(C)Microsoft Corp 1981-1985,1987.A ll rights resIbject filename 1.0BJ:iourc