2023年河北工业大学汇编实验报告.pdf
《2023年河北工业大学汇编实验报告.pdf》由会员分享,可在线阅读,更多相关《2023年河北工业大学汇编实验报告.pdf(43页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、汇编实验实验一顺序与分支程序设计-实验目的1)掌握顺序程序设计方法。2)掌握分支程序的结构及分支程序的设计,调试方法。2)学习数据传送及算术和逻辑运算指令的用法。3)熟悉在PC机上建立、汇编、连接、调试和运营汇编语言程序的过程。二、实验内容1)有一字变量BUF1是以原码表达的有符号数,规定将其转换为反码和补码,分别存入BUF 2 和 B U F3单元,并在屏幕上显示出来。2)有两个两字节无符号数分别放在存储单元A、B 起始的缓冲器中,求其和,结果放在A 起始的缓冲区并在屏幕上显示。相加若有进位不存入存储单元。3)在 BUF和 BUF+1、BUF+2 单元分别放有一个无符号字节型数,编程序将其中
2、最大数存入MAX单元,并在屏幕上显示。4)规定同上,只是比较的数为有符号数。5)将 1000H单元开始的10个字节数,采用奇偶校验,将奇数在前偶数在后仍存回原数据区。本实验规定在DEBUG调试状态下进行,涉及汇编程序、运营程序、检查结果。6 )从键盘上接受一位十进制数X,计算Y 值,并以十六进制形式显示出来,Y 按下列公式计算。-X?+X Q X =3)_ X2-2 X(X =4)-1 X2(X =5)X2/2(X =6)7)从键盘上接受两个一位十六进制数X 和 Y,然后再输入一个A-D 之间的一个字符,按下列规定计算。a)当输入字符为A,则计算X+Y,并以十六进制形式显示出来b)当输入字符为
3、B,则计算|X-Y|,并以十六进制形式显示出来c)当输入字符为C,则计算X*Y,并以十六进制形式显示出来d)当输入字符为D,则计算X/Y,并以十六进制形式显示出来三 实验设备P C 机一台四 实验准备1)分析题目,将程序中的原始数据和最终结果的存取方法拟定好。2)画出流程图。3)写出源程序。4)对程序中的结果进行分析,并准备好上机调试与用汇编程序及汇编调试的过程。五、实验环节1)输入源程序。2)汇编、连接程序,生 成.EXE文献,执行文献,检查结果。六 实验报告的规定1)列出源程序,说明程序的基本结构,涉及程序中各部分的功能。2)说明程序中各部分所用的算法。3)说明重要符号和所用到寄存器的功能
4、。4)总结为什么在设计分支程序时必须解决三个问题:判断、转向和定标号。5)说明标志位CF、S F 和OF的意义。6)上机调试过程中碰到的问题是如何解决的。7)对调试源程序的结果进行分析。E x ami:D A T AS E G M E N T ;数据段B U F 1 D W 7 8 9 8 HB U F 2 D W 4 D U P (0),0 A H,O D H,7$B U F 3 D W 4 D U P (0),$D A T AE N D S ;数据段结束C O D ES E G M E N T ;代码段A S S U M E C S :C O D E,D S:D A T A ;段寄存器关联
5、说明伪指令B E G I N:M O V A X,D A T AMOV DS,A X;将数据段的基地址装入数据段寄存器D SM O V A X,B U F 1;将字型变量B U F 1的值装入A X寄存器A D D A X,0;A X寄存器里的数据加0,以便进行转移测试JS N E X T ;判 断(A X)的正负,若为负则转到N E X T,为正则往下顺序执行。M O V B U F 2,A X同样M O V B U F 3,A X原码同样JM P E E EN E X T:A N D A X,7 F F F HN O T A X反码M O V B U F 2,A XU F 1的反码装入B
6、U F 2I N C AXM O V B U F 3,A X装入B U F 3E E E:M O V C X,00 0 4 H计数器寄存器中;为正,反码与原码;为正,补码与;将符号位变为0;W B;将000 4 H装入C XM O V D I,O F F S E T B U F 2;将口1指向;求补码;求;将补码变 量B U F 2开始的存储单元M O V D X,D I:D I所指的数据装入D X寄存器中A D D D I,0 3针下移三个字B B B:M O V A X,D X入A X寄存器中A N D A X,0 0 O F HU F 2的低四位不变,其余均变为0C M P A L,0
7、A HO A H的大小,以便能对的转换为0-9的A S C H值J B Q Q QAH,则转到Q Q Q,否则,顺序执行A D D A L,0 7 H所 以 A L +07 H,使得A L能转换成相应数字的A S C H值Q Q Q:A D D A L,3 0H应数字的A S C H值M O V D I ,A L;将。1指;将口X中的内容装;即使B;比较 A L 与;若 A L 0A H,所以 A L+07 H,使得A L能转换成相应数字的A S C I I 值D D D:A D D A L,3 0H;将 A L 转换成相应数字的A S C H值MOV S I ,A L ;将 A L 中的内容
8、装入以D S中的内容为段基地址,以S I 的内容为偏移地址的存储单元中D E C S I ;S I=S I-1,即将S I 指向前一个存储单元P U S H C X;保存C X 寄存器的内容M O V C L,04 H;给 C L 寄存器赋值为()4 HS H R D X,C L M 等 D X 逻辑右移四位P O P C X ;恢复C X 寄存器的内容L O O P C C C ;循环判断语句,C X=C X-1,若C X 不等于0,则转到C C C,将下一个低四位存入存储单元中,否则循环结束M O V D X,O F F S E T B U F 2;将B U F 2 的偏移地址装入DX寄存
9、器中M O V A H,0 9 HI N T 21H ;在屏幕上显示B U F 1的反码M O V D X,O F F S E T B U F 3M O V A H,0 9 HI N T 21H ;在屏幕上显示B U F 1的补码M O V A H,4 C HI N T 2 1H ;带返回码终止C O D E E N D SENDB E G I Nc C:IIH D0ISsysteB32cBd.exe 日 回 口Copyright M icrosoft Corp 1981-1985,1987.A ll righ ts reserued.Object filenam e a.OBJ:Source
10、 lis tin g CNUL.LST:C ross-reference NUL.CRF:50672 415568 Bytes symbol space free0 Warning Errors0 Seuere ErrorsD:Xhuibianlink aM icrosoft 8086 Object Linker Uersion 3.05Copyright M icrosoft Corp 1983,1984,1985.A ll righ ts reserved.Run F ile A.EXE:L ist F ile CNUL.MAP:L ibraries .L IB:Warning:no st
11、ack segmentD:huibiana.exeECB7ECB8D h tiib ian t_Exam2:D A T A S E G M E N T;数据段A D B 3 4 H,1 8 H,2 D U P (0),量,其 后 的 每 操 作 数 都 占有一个字节B D B 5 6 H,8 3 H$;定义字节型变;定 义 字 节 型 变 量,其后的每操作数都占有一个字节D A T A E N D S;数据段结束C O D ES E G M E N T;代码段A S S U M EC S:C O D E,D S :D A T AS T A R T:M O VA X,D A T AM O VD
12、S,A X;将 数 据 段 基 地 址 装 入 数 据 段 寄 存 器D SM O VA L,A;将A所 指 的 数 装 入A L寄存器中M O VB L,B;将8所 指 的 数 装 入B L寄存器中A D DA L,B L;A L+B L-A LM O VA H,A+l;将A所指的下一个字节的数据装入A HM O V B H,B+lA D C A H,B HM O V A,A L;将B所指的下一个字节的数据装入;A H与B H进行带进位加法;将第一个无符号数的相加结果放在以A起始的缓冲区M O VA+1,A H;将第二个无符号数的相加结果放在以A+1起始的缓冲区M O VC X,0014H;
13、以下是将数据转换为相应的ASCH值M O VD IO F F S E TAM O VD X,D I A D DD I,03N E X T:M O VA X,D XA N DA X,O O O F HCMP A L,0 A HJB Q Q QA D D A L,0 7 HQ Q Q:A D D A L,3 0 HM O V D I ,A LD E C D IP U S H C XM O V C L,14S H R D X,C LP O P C XLOOP N E X TM O V D X,O F F S E T AM O V A H,09 HI N T 2 1 HM O V A H,4 C HI
14、 N T 21HC O D E E N D SE N D S T A R T;在屏幕上显示结果;带返回码终止C C:IIID 0SsysteB32cBd.exe 日 日 日M icrosoft Macro Assembler Uersion 5.00Copyright M icrosoft Corp 1981-1985,1987.A ll righ ts reserved.Object filenam e b.OBJ:Source lis tin g NUL.LST:C ross-reference CNUL.CRF:50672+415568 Bytes symbol space free0
15、Warning Errors0 Seuere ErrorsD:huibianlink bM icrosoft 8086 Object Linker Uersion 3.05Copyright M icrosoft Corp 1983,1984,1985.A ll righ ts reserued.Run F ile B.EXE:L ist F ile NUL.MAP:L ibraries .L IB:Uarning:no stack segmentD:huibianb.exe9B8AD h u ib ia n)Exam3:S T A C K S E G M E N T S T A C K;堆栈
16、段D B 100 0 D U P (0);定义其后的每个操作数都占有一个字节S T A C K E N D S ;堆栈段结束D A T A S E G M E N T ;数据段B U F D B 7 2H,3 4 H,1F H ;定义字节型变量,其后的每操作数都占有一个字节M A X D B 2 D U P (?),;定义字节型变量,其后的每操作数都占有一个字节D A T A E N D S ;数据段结束C O D E S E G M E N T ;代码段A S S U M E C S:C O D E,D S:D A T A,S S :S T A C KB E G I N:M O V A X,
17、D A T AM O V D S,A X器D SM O V A L,B U FALC M P A L,B U F+1JN B L P 1则顺序向下执行M O V A L,B U F+1A LL P 1:C M P A L,;将数据段基地址装入数据段寄存;将B U F 所指向的一个字节数据装入;比较B U F 与 B U F+1 大小;假如BUF不小于BUF+1,则转到I p l,否;将8诙+1所指向的一个字节数据装入B U F+2 JWBUFH B U F 1中较大的一个和B U F+2 比较大小JA E L P 2;假如B U F 2小,则转到l p 2,否则执行顺序向下执行M O V A
18、L,B U F+2;此时B U F 2为三个数中最大的一个,将最大数装入A L 寄存器中L P 2:M O V C X,04 H ;以下是将输出的最大数转换为相应的AS C H 值 M O V D I,O F F S E T M A XM O V D L,A LI N C D IL P 3:A N D A L,O F HC M P A L,O A HJBLP4ENDADDAL,07 HL P 4:ADDAL,3 0 HMOV D I ,A LDECDIPUSHCXMOVCL,03HSH RDL,C LPOPCXMOVA L,DLLOOPLP3MOVDX,OFF S ET MAXMOVAH,0
19、9HINT2 1 HMOVA H,4CHI NT2 1 HCODEENDSBEGIN仔,命令提示符!Microsoft Macro Assembler Uersion 5.00Copyright Microsoft Corp 1981-1985,1987.All rights reserved.Object filename a.OBJ:Source listing NUL.LST:Cross-reference NUL.CRF1:50652+415812 Bytes symbol space free0 Warning Errors0 Seuere ErrorsD:hu ib ian 1 i
20、n k aMicrosoft 8086 Object Linker Uersion 3.05Copyright Microsoft Corp 1983,1984.1985.All rights reserued.Run File A.EXE:List File NUL.MAP:Libraries.LIB:D:huibiana.exe70D:huibian_Exam4:S T A C KS E G M E N T S T A C KD B 100 0D U P (0)S T A C KE N D SD A T AS E G M E N TB U F DB9 8 H,7 5 H,3 2HM A X
21、D B 4 D U P (?),$D A T AE N D SC O D ES E G M E N TA S S U M E C S:C O D E,D S:D A T A,S S:S T A C KB E G I N:M O V A X,D A T AM O VD S,AXM O VA L ,B U FC M P A L,B U F+1JG L P 1;J G 为比较两个有带符号数的大小,比较B U F 和 B U F 1 的大小,若B U F B U F 1,则跳转到1 p 1继续执行,否则顺序向下执行X C H G A L,B U F+1;互换 A L 寄存器中的内容和B U F 1,使
22、 A L 寄存器中存放B U F 和B U F 1 中较大的一个L P 1:M O V M A X,A LJ G E l p 2。;比较两个带符号数,假 如 B U F 2 小,则转到l p 2,否则执行顺序向下执行M O V A L,B U F+2。L p 2:M O V M A X,AL*以下是将输出的最大数转换为相应的A S C I I 值,与 1)题相同M O VC X,04 HM O VD I,O F F S E T M A XM O VD L,D I I N CD IL P 3:M O V A L,D LA N DA L,O F HC M PA L,0 A HJBL P 4A D
23、DA L,0 7 HL P 4 :A D D A L,3 O HM O V D I,A LD E CD IP U S He xMOVCL,02SHRDX,CLPOPCXLOOPLP3MOVD X,O F F SE T MAXMOVA H,0 9HIN T21HMOVAH,4CHINT21HCODEEN D SEN DBEGIN京 命令提示符-Ini xD:huibianmasn aMicrosoft Macro Assenbler Uersion 5.00Copyright Microsoft Corp 1981-1985,1987.All rights reserued.Object fil
24、ename a.OBJ:Source listing NUL.LST:Cross-reference NUL.CRF:50652 415812 Bytes symbol space free0 Warning Errors0 Seuere ErrorsD:huibianlink aMicrosoft 8086 Object Linker Uersion 3.05Copyright Microsoft Corp 1983,1984,1985.All rights reserved.Run File A.EXE:List File NUL.MAP3:Libraries.LIB:D:huibiana
25、.exe75D:huibian_实验二循环与子程序程序设计一 实睑目的1)加深对循环结构的理解。2)掌握循环程序的设计方法。3)学习子程序的定义和调用方法。4)掌握子程序、子程序的嵌套、递归子程序的结构。5)掌握子程序设计、编制及调试。6)纯熟掌握DEBUG的常用命令,学会用DEBUG调试程序。二 实验内容1)编制程序计算S=1+2 3+3 4+4 5+.+N(N+1)+.直到N(N+1)大于200为止,并将结果由屏幕上显示出来。2)将从3 000H内存单元开始的100个字节存储单元所有清0。3)编制在屏幕上显示九九乘法表的程序。4)编制在屏幕上显示用*组成的三角形的程序。5)设有五个字数据存
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 2023 河北 工业大学 汇编 实验 报告
限制150内