2023年汇编实验报告3.pdf
《2023年汇编实验报告3.pdf》由会员分享,可在线阅读,更多相关《2023年汇编实验报告3.pdf(53页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
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
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 2023 汇编 实验 报告
限制150内